1. 12 Jan, 2018 3 commits
    • Dominic Symes's avatar
      Intrabc: Ensure deterministic behaviour · 37eab1dc
      Dominic Symes authored
      If the intrabc motion vectors are invalid or out of range then
      this patch defines deterministic decoder behaviour (disabling intrabc).
      This will then allow conformance tests to be written to check this
      deterministic behaviour so that we do not end up with undefined
      behaviour or compatibility problems related to illegal intrabc
      motion vectors.
      Change-Id: I4de3e006eaf01ab07a7fbbbfd7cfe28b0b0d140c
    • Hui Su's avatar
      Update the DvValidation test for intraBC · b488f910
      Hui Su authored
      Update the test with the hardware constraints, such as the extra delays
      and wavefront support.
      Change-Id: Ib6a66f2803989d20f288711dd7539ae8b192e322
    • Hui Su's avatar
      Optimize intra reference availability check · 1ca3f2b3
      Hui Su authored
      Use binary flags to indicate if top-right/bottom-left referecne is
      available. Pack these flags into 8-bit integers.
      The table size is reduced by 8 times.
      Change-Id: If026989f421f11b4fb5f54708d645f26435e5958
  2. 11 Jan, 2018 25 commits
    • Yue Chen's avatar
      Improve tx size context calculation for rect tx · ee9c4d96
      Yue Chen authored
      Consider different 1d dimensions of above and left tx blocks as
      suggested in the bug report.
      BDRate: -0.033%
      Change-Id: I35ce915ba4164b57e4b9aad417c5ec3ea8850e91
    • Yaowu Xu's avatar
      Make mfmv default on · ef0fa83f
      Yaowu Xu authored
      Change-Id: Iae8bdc6916bea72683734a639efab7561e222f57
    • Zoe Liu's avatar
      Merge if statements with identical conditions · be37c6ab
      Zoe Liu authored
      Change-Id: I8092e3bbabbcf5efb5d0c659418fdd3c6ad90f2c
    • Ryan's avatar
      fix bug to use b_quantizer when trellis quantization is disabled. · 5b8c5fdc
      Ryan authored
      when trellis quantizaiton is disabled, the b_quantizer should be used.
      existing code has a lot of hard coded flag not hooked up correctly with
      high level trellis quantization enable/disable flag, which causes
      fp_quantizer is used. this patch is intended to remove the hard coded
      flags and correctly get them from the high level control.
      Change-Id: I0142aace03586d07aedea138fce08d3e72d99c32
    • Jingning Han's avatar
      Refactor base range decoding to avoid hard division · 51fac92a
      Jingning Han authored
      Use cumulative range check to avoid the division in the for-loop
      for base range decoding in lv-map. This makes the lv-map transform
      coefficient decoding process 10% faster at the decoder end, at
      high target bit-rate range.
      Change-Id: I85e9646ce05f0c20c10f776ff9cdd082b16e9989
    • Jingning Han's avatar
      Drop repeated tx size search from intra mode txfm RD · 6217782f
      Jingning Han authored
      When the coding block size is below 16x16, the current tx size
      search loop may end up searching 4x4 transform size multiple times.
      This commit skips the redundant search steps. Tested a a few
      1080p clips at 4 Mbps, the encoding speed is up by 10% for key
      frame coding, and 3% for overall.
      Change-Id: Ifbb27bad1ec55ef0011b1e789d995f36b3f4605e
    • David Michael Barr's avatar
      [CFL] SSSE3/AVX2 versions of cfl_build_prediction_lbd · 16f38c2c
      David Michael Barr authored
      Includes unit tests for conformance and speed.
      4x4: C time = 2063 us, SIMD time = 313 us (~6.6x)
      8x8: C time = 6656 us, SIMD time = 493 us (~14x)
      16x16: C time = 24970 us, SIMD time = 1327 us (~19x)
      32x32: C time = 59020 us, SIMD time = 5178 us (~11x)
      4x4: C time = 2052 us, SIMD time = 333 us (~6.2x)
      8x8: C time = 6712 us, SIMD time = 513 us (~13x)
      16x16: C time = 25292 us, SIMD time = 1023 us (~25x)
      32x32: C time = 58994 us, SIMD time = 2828 us (~21x)
      Change-Id: I08690a548be981ff10e184de468b9e0e691ee812
    • Debargha Mukherjee's avatar
      No colorspace for mono-video f/ CICP compatibility · f340fece
      Debargha Mukherjee authored
      Change-Id: I03c6cf0b58f9e1d74c7d30d76e846be9a640dab7
    • Debargha Mukherjee's avatar
      Update profile/bitdepth/sampling in header · f9a50ea3
      Debargha Mukherjee authored
      Designs the sequence header syntax to support various
      profiles as decided in the AV1 codec WG:
      Profile 0: 4:2:0 and 4:0:0 8/10-bit
      Profile 1: 4:4:4 8/10-bit
      Profile 2: 4:2:0/4:0:0/4:4:4 12-bit as well as 4:2:2 8/10/12-bit
      Change-Id: Iea351698280e37d65847bf75a43c5bbeba8f7cf4
    • Urvang Joshi's avatar
      Call optimize_b only when enable_optimize_b is on. · 4a766a4b
      Urvang Joshi authored
      This issue isn't triggered currently though, because encode_block() is
      always called with enable_optimize_b = 1.
      Change-Id: I1ce5a35222cb6a647418bf7e4dc3189db5aa3854
    • Sebastien Alaiwan's avatar
      warped_motion.c: reduce scope of locals · fb92a0cf
      Sebastien Alaiwan authored
      Also, make them 'const' when possible.
      Change-Id: I871709b6a839405127be7ca6a3d89f4543794ce4
    • Hui Su's avatar
      Fix a compiler warning in read_intrabc_info() · 3241cc2f
      Hui Su authored
      Change-Id: I20df9de1f72f3ccf31ce461fb3eeea3c174c9d83
    • Sebastien Alaiwan's avatar
      Remove experimental flag of LV_MAP_MULTI · 78f7bb98
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      Change-Id: I3e08eec385c40360e3934fa4f66f7c671e860517
    • Hui Su's avatar
      Add an identity scale factor in AV1_COMMON · 5ebd8704
      Hui Su authored
      Set up the identity scale factor once per frame, instead of per joint
      motion search.
      Change-Id: I5edd264655254f4b6a0a923d8ab43adbca044228
    • Frederic Barbier's avatar
      Cleanup dead condition · ab3a7706
      Frederic Barbier authored
      These functions are only used in a intra mode context.
      Add related sanity check.
      Change-Id: I068d9251bd17b621a0d899bbbea01df53f0cfb6d
    • Tom Finegan's avatar
      leb128: Add failure test. · 209ba850
      Tom Finegan authored
      Add tests of expected failure conditions, and handle invalid pad
      sizes in the fixed length encode function.
      Change-Id: I8b9d0fbc44bb776bca3b4c3f0467a2125f13be2e
    • David Barker's avatar
      Fix a bug in loopfiltering-across-tiles(-ext) · 9716af45
      David Barker authored
      Commit https://aomedia-review.googlesource.com/c/aom/+/39985
      changed the deblock filter for subsampled planes, so that
      we always look at the bottom-right mi unit in each 8x8 luma
      pixel unit. This fixed some issues around determining which
      blocks are inter/skip/etc.
      However, this introduced a different bug - the boundary info
      ("are we allowed to filter across the top/left edge of this block?")
      is stored in the *top-left* mi unit in each 8x8 luma pixel unit.
      But now we we're looking at the bottom-right unit, which always says
      it's fine to filter across the top and left boundaries! Thus the
      deblock filter effectively ignored the
      loop_filter_across_tiles_enabled flag(s).
      Fix this issue by looking up the boundary info from the top-left
      block in each unit; the other information is still taken from
      the bottom-right.
      Change-Id: I626ea3358563641a2532ee9c5968fb54bdc78e34
    • Yaowu Xu's avatar
      Turn lv_map lv_map_multi on by default · 2537bfc5
      Yaowu Xu authored
      Since 1193 is now fixed.
      Change-Id: I79952e42679b68d8a1abc873b2c6f66711a7c4d8
    • Angie Chiang's avatar
      Move shift from 1d_cfg to 2d_cfg · 4a75b5a0
      Angie Chiang authored
      Change-Id: I22d0fac0d8e94fc02a7adf13b144ed17097ff84b
    • Angie Chiang's avatar
      Move rect txfm's shift setting into config · a4c80485
      Angie Chiang authored
      For 2:1 txfm, move the sqrt2 scaling to the end of the fwd txfm
      This only affects the txfm accuracy slightly but simplifies the
      range management a lot.
      Change-Id: I2eef8c15b7e8958a1fb0f2ae632604fdbab86046
    • Jingning Han's avatar
      Remove unused variable from ctx_tree · 0ecde5ce
      Jingning Han authored
      Change-Id: Ic5b09169d7fbb28d09008756ec71703ff7322d78
    • Jingning Han's avatar
      Skip allocating mem space for leaf nodes in ctx tree · 759771c6
      Jingning Han authored
      The coding block processing is streamlined in cb4x4. There is no
      longer a need to do special handle for sub8x8 blocks. This commit
      removes the unnecessary memory allocation to the leaf nodes,
      corresponding to 4x4 block size. It saves around 20% of the encoder
      memory requirement.
      Change-Id: I61301d6dea6c0a10ee232d166eea28578e2b3a58
    • Sarah Parker's avatar
      Precompute shifted dequant values for large tx-sizes · 8a086e05
      Sarah Parker authored
      Change-Id: I87b11ec892fe5048f858869a3b6e68d0fe78ea43
    • Debargha Mukherjee's avatar
      Change dq_type in frame header in new_quant expt · 6e42741f
      Debargha Mukherjee authored
      dq_type now takes 4 possible values, one of which is
      the original multiply-only dequantizer.
      Change-Id: I2180f632f0d7f91dc391a6e802a93a77de789228
    • Jingning Han's avatar
      Properly reset txb_entropy_ctx in skipped transform block · 38cd2318
      Jingning Han authored
      When a transform block is skipped, reset the txb_entropy_ctx value
      to be 0. This clears the assertion failure cases in txk-sel.
      Change-Id: I23816761d4383aa9877bc54b117f54d69e4949a9
  3. 10 Jan, 2018 12 commits
    • Hui Su's avatar
      intrabc: update intrabc_cdf per superblock · 28b53c30
      Hui Su authored
      Update intrabc_cdf per superblock during encoding.
      Also added support for entropy_stats.
      Change-Id: Ie106309a8932b86bb069990db0b0ea13a4c5e8ae
    • Andrey Norkin's avatar
      CICP colorspace signaling · 9e69463f
      Andrey Norkin authored
      Change-Id: I0f0cdf479091c308594a0288a0546dbdb76e4450
    • Sebastien Alaiwan's avatar
      Clamp inverse transform coefficients · 80b437ce
      Sebastien Alaiwan authored
      When --enable-coefficient-range-checking isn't specified,
      clamp the coefficient at each stage.
      The decoder behaviour is unchanged for valid existing AV1 streams.
      However, some AV1 bitstreams that would have been rejected by the
      decoder as illegal (range check failure) are now legal bitstreams.
      There is no impact on video quality for valid bitstreams,
      only bitstreams that would have been considered invalid are affected,
      and are now considered as valid ones.
      Change-Id: Ie72ceeb3cb0561e8d3259767b209a4ef3be90438
    • Yaowu Xu's avatar
      Disable an obsolete test when OBU is enabled · 3fcce0bb
      Yaowu Xu authored
      The OBU experiment has removed the parsing of super frame indices, so
      the test is obsolete when OBU is enabled.
      Change-Id: If7d1873f3f41fa9146f9451687eda92b39b035a5
    • Sarah Parker's avatar
      Remove variable widths for bins 1 and 2 in new-quant · 54127da3
      Sarah Parker authored
      This is the first phase of a new-quant cleanup. We are now only
      using a variable width zero bin, so we can simplify the
      Change-Id: I4da6c663a9d40b4fd08c14818cf7d7fe9b75844c
    • Michelle Findlay-Olynyk's avatar
      hash_based_trellis speed feature · fbab0621
      Michelle Findlay-Olynyk authored
      Add speed feature that uses hash tables to
      reuse previously found optimized coefficients
      in av1_optimize_txb. This skips some expensive
      optimize_txb calls.
      Currently shows no significant quality
      degredation or speed improvement, and set to off
      by default. Requires hash_me, lv_map and
      lv_map_multi. Adding to speed features required
      changing AV1_COMMON *cm to AV1_COMP *cpi in a
      chain of functions.
      Variations that have been tried:
      -varying the maximum eob on which the feature
      activates: 16, 32, 64. 16 currently used. 64
      has best hit rate but longer execution time.
      -varying the data hashed and the length of hashes
      (first hash is 16 bit and based on context data,
      while second hash is 16 bit and based only on
      pre-optimized qcoeff values.)
      -softening the data used for the hashes: ideally
      this would raise the number of hits, without
      compromising quality too much.
      Change-Id: I94f22be82f3a46637c0489d512f2e334a307575f
    • Cheng Chen's avatar
      Skip unnecessary computation in trellis · 37d88736
      Cheng Chen authored
      When current coeff is found to be set as eob, nz_rd is not needed
      in the computation of rdcost. Skip it.
      Similarly, when has_nz_tail >= 2, computation for nz_rd should be
      Local runs show ~3% speed up.
      Change-Id: I176abf1d1043cab40788934b70558b816af72732
    • Hui Su's avatar
      Move sum_intra_stats into update_stats() · ea7320e1
      Hui Su authored
      Change-Id: Ied3252c3075e84252d8268a13d3f50066b3418e1
    • Hui Su's avatar
      intrabc: correctly store blk_skip[] · 29bd5895
      Hui Su authored
      Change-Id: I03ca925734535c31a1ed6bdeb7f29b5b5d5f476c
    • Sebastien Alaiwan's avatar
      Prevent warp if global_motion_params are invalid · 742f646f
      Sebastien Alaiwan authored
      Change-Id: Ib643ed9d3a23b83e91d908940f5777f6d13b8b19
    • Jingning Han's avatar
      Check error resilient flag for use_ref_frame_mvs · 2830fd9f
      Jingning Han authored
      Change-Id: If4ba99d6784c55768af57cac2b197db62ea2317e
    • Sebastien Alaiwan's avatar
      warped_motion.c: use 'clamp' function · 7ed89449
      Sebastien Alaiwan authored
      Change-Id: I31a6a66753e1e06a26ad798415c5994920bf22b7