1. 12 Jan, 2018 1 commit
    • 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
      1ca3f2b3
  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%
      
      BUG=aomedia:1168
      
      Change-Id: I35ce915ba4164b57e4b9aad417c5ec3ea8850e91
      ee9c4d96
    • Yaowu Xu's avatar
      Make mfmv default on · ef0fa83f
      Yaowu Xu authored
      Change-Id: Iae8bdc6916bea72683734a639efab7561e222f57
      ef0fa83f
    • Zoe Liu's avatar
      Merge if statements with identical conditions · be37c6ab
      Zoe Liu authored
      Change-Id: I8092e3bbabbcf5efb5d0c659418fdd3c6ad90f2c
      be37c6ab
    • 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
      5b8c5fdc
    • 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
      51fac92a
    • 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
      6217782f
    • 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.
      
      SSSE3/CFLPredictTest:
      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)
      
      AVX2/CFLPredictTest:
      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
      16f38c2c
    • Debargha Mukherjee's avatar
      No colorspace for mono-video f/ CICP compatibility · f340fece
      Debargha Mukherjee authored
      Change-Id: I03c6cf0b58f9e1d74c7d30d76e846be9a640dab7
      f340fece
    • 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
      f9a50ea3
    • 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
      4a766a4b
    • Sebastien Alaiwan's avatar
      warped_motion.c: reduce scope of locals · fb92a0cf
      Sebastien Alaiwan authored
      Also, make them 'const' when possible.
      
      Change-Id: I871709b6a839405127be7ca6a3d89f4543794ce4
      fb92a0cf
    • Hui Su's avatar
      Fix a compiler warning in read_intrabc_info() · 3241cc2f
      Hui Su authored
      Change-Id: I20df9de1f72f3ccf31ce461fb3eeea3c174c9d83
      3241cc2f
    • 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
      78f7bb98
    • 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
      5ebd8704
    • 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
      ab3a7706
    • 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.
      
      BUG=aomedia:1125
      
      Change-Id: I8b9d0fbc44bb776bca3b4c3f0467a2125f13be2e
      209ba850
    • 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
      9716af45
    • Yaowu Xu's avatar
      Turn lv_map lv_map_multi on by default · 2537bfc5
      Yaowu Xu authored
      Since 1193 is now fixed.
      
      BUG=aomedia:1193
      
      Change-Id: I79952e42679b68d8a1abc873b2c6f66711a7c4d8
      2537bfc5
    • Angie Chiang's avatar
      Move shift from 1d_cfg to 2d_cfg · 4a75b5a0
      Angie Chiang authored
      Change-Id: I22d0fac0d8e94fc02a7adf13b144ed17097ff84b
      4a75b5a0
    • 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
      function
      
      This only affects the txfm accuracy slightly but simplifies the
      range management a lot.
      
      Change-Id: I2eef8c15b7e8958a1fb0f2ae632604fdbab86046
      a4c80485
    • Jingning Han's avatar
      Remove unused variable from ctx_tree · 0ecde5ce
      Jingning Han authored
      Change-Id: Ic5b09169d7fbb28d09008756ec71703ff7322d78
      0ecde5ce
    • 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
      759771c6
    • Sarah Parker's avatar
      Precompute shifted dequant values for large tx-sizes · 8a086e05
      Sarah Parker authored
      Change-Id: I87b11ec892fe5048f858869a3b6e68d0fe78ea43
      8a086e05
    • 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
      6e42741f
    • 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
      38cd2318
  3. 10 Jan, 2018 14 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
      28b53c30
    • Andrey Norkin's avatar
      CICP colorspace signaling · 9e69463f
      Andrey Norkin authored
      Change-Id: I0f0cdf479091c308594a0288a0546dbdb76e4450
      9e69463f
    • 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.
      
      BUG=aomedia:30
      
      Change-Id: Ie72ceeb3cb0561e8d3259767b209a4ef3be90438
      80b437ce
    • 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.
      
      BUG=aomedia:1213
      
      Change-Id: If7d1873f3f41fa9146f9451687eda92b39b035a5
      3fcce0bb
    • 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
      implementation.
      
      Change-Id: I4da6c663a9d40b4fd08c14818cf7d7fe9b75844c
      54127da3
    • 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
      fbab0621
    • 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
      skipped.
      
      Local runs show ~3% speed up.
      
      Change-Id: I176abf1d1043cab40788934b70558b816af72732
      37d88736
    • Hui Su's avatar
      Move sum_intra_stats into update_stats() · ea7320e1
      Hui Su authored
      Change-Id: Ied3252c3075e84252d8268a13d3f50066b3418e1
      ea7320e1
    • Hui Su's avatar
      intrabc: correctly store blk_skip[] · 29bd5895
      Hui Su authored
      BUG=aomedia:1203
      
      Change-Id: I03ca925734535c31a1ed6bdeb7f29b5b5d5f476c
      29bd5895
    • Sebastien Alaiwan's avatar
      Prevent warp if global_motion_params are invalid · 742f646f
      Sebastien Alaiwan authored
      BUG=aomedia:1195
      
      Change-Id: Ib643ed9d3a23b83e91d908940f5777f6d13b8b19
      742f646f
    • Jingning Han's avatar
      Check error resilient flag for use_ref_frame_mvs · 2830fd9f
      Jingning Han authored
      BUG=aomedia:1209
      
      Change-Id: If4ba99d6784c55768af57cac2b197db62ea2317e
      2830fd9f
    • Sebastien Alaiwan's avatar
      warped_motion.c: use 'clamp' function · 7ed89449
      Sebastien Alaiwan authored
      Change-Id: I31a6a66753e1e06a26ad798415c5994920bf22b7
      7ed89449
    • Hui Su's avatar
      Terminate decoding at corrupted frame data · b4d6b1c1
      Hui Su authored
      BUG=aomedia:1154
      
      Change-Id: I0c856564dc1eadd9e22be4de6fca5c2b0344dcb5
      b4d6b1c1
    • Urvang Joshi's avatar
      joint_motion_search: Make assumption explicit. · 48d3e633
      Urvang Joshi authored
      Use assert to test the assumption noted in the comment.
      
      Ran some encodes with varying per-frame resolutions (using
      SUPERRES_RANDOM and RESIZE_RANDOM modes) to ensure that these
      asserts are indeed valid.
      
      Change-Id: I30021fff05f9793f80e42c5319bed02b0ae04cbd
      48d3e633