1. 17 Jan, 2018 3 commits
  2. 16 Jan, 2018 7 commits
    • Debargha Mukherjee's avatar
      Add option to use fp quant when new-quant is used · 6cf2b467
      Debargha Mukherjee authored
      Change-Id: I861ccc09454606ce4172db02a52550f9b7a7800c
      6cf2b467
    • David Michael Barr's avatar
      [CFL] separate uv_mode CDFs, split on is_cfl_allowed · cb3a8ef5
      David Michael Barr authored
      This is to exclude coding CFL for block sizes where it is normatively
      not allowed.
      
      Reuse the alternate CDFs from the --disable-cfl path.
      
      This yields some improvement on subset1:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0113 | -0.2630 | -0.2138 |   0.0021 | -0.0110 | -0.0157 |    -0.0511
      
      BUG=aomedia:1182
      
      Change-Id: I1e5f23ef7f2debcf8edce788bfa63ec95db4a679
      cb3a8ef5
    • Linfeng Zhang's avatar
      Add av1_convolve_2d_copy_sr_sse2() · 5f0485b4
      Linfeng Zhang authored
      Change-Id: I7776ccaecb6933af47253a15fa8ed8a53346fac1
      5f0485b4
    • Frederic Barbier's avatar
      Cleanup dead table · a77c871e
      Frederic Barbier authored
      Change-Id: I545f126f6ba724ff4e41294353c4f11a47c6e853
      a77c871e
    • David Barker's avatar
      loop-restoration: Only use upscaled height · 21f43073
      David Barker authored
      The superres upscale process only generates cm->height many rows
      of pixels, but we were previously using cm->mi_rows*MI_SIZE many.
      The latter number are easily available before upscaling, but we
      ideally don't want to have to upscale extra rows. So we switch
      to only using cm->height many rows inside loop-restoration.
      
      While making this change, I found and fixed an issue with
      av1_get_tile_rect() when using horizontal subsampling + horizontal
      superres.
      
      Finally, note that this change does introduce an edge case which
      isn't obvious from the source code. This has been annotated as a
      comment in save_deblock_boundary_lines().
      
      Change-Id: Ide2bd433d45baa0fb1198353d05eb21b9a903157
      21f43073
    • David Barker's avatar
      Harmonize superres + loop-restoration + lf-across-tiles · 1fee28bd
      David Barker authored
      Properly support loopfiltering-across-tiles in combination with
      superres and/or loop-restoration:
      
      Upscale one tile column at a time, rather than doing the whole
      frame at once. This allows us to correctly support the loop filter
      across tiles flag, by temporarily extending the left/right boundaries
      of each tile column to avoid sampling from adjacent tiles.
      
      This code is also reused by striped-loop-restoration, when upscaling the
      deblocked context above/below each stripe. That way, we i) ensure
      that the upscaling is done consistently, and ii) fix the last remaining
      case where loop-restoration didn't respect the loop filter across tiles
      flag.
      
      This also makes it easy to perform extension of the left/right edges
      of the frame "as needed", so we don't need to extend the frame borders
      immediately after deblocking. This should give marginally better CDEF
      filtering for frames using superres.
      
      Change-Id: I28712a177853a20c9eb2993e740da8ba7c95a8cc
      1fee28bd
    • David Michael Barr's avatar
      [CFL] SSSE3/AVX2 versions of cfl_build_prediction_hbd · c363ab76
      David Michael Barr authored
      Includes unit tests for conformance and speed.
      
      SSSE3/CFLPredictHBDTest:
      4x4: C time = 1436 us, SIMD time = 358 us (~4x)
      8x8: C time = 4821 us, SIMD time = 598 us (~8.1x)
      16x16: C time = 18528 us, SIMD time = 1793 us (~10x)
      32x32: C time = 72998 us, SIMD time = 6400 us (~11x)
      
      AVX2/CFLPredictHBDTest:
      4x4: C time = 1436 us, SIMD time = 398 us (~3.6x)
      8x8: C time = 4924 us, SIMD time = 644 us (~7.6x)
      16x16: C time = 18624 us, SIMD time = 1617 us (~12x)
      32x32: C time = 73509 us, SIMD time = 3635 us (~20x)
      
      Change-Id: Icbcfefbf165facdbd77c9b3861af2bbf464254a0
      c363ab76
  3. 15 Jan, 2018 2 commits
    • Yaowu Xu's avatar
      Change to use an unaligned store · 533ac34d
      Yaowu Xu authored
      This fixes a segmentation fault in unit test:
      AVX2/CFLPredictTest.PredictTest/7
      
      Change-Id: I173340965f465a82019167e0964b9901683b60a8
      533ac34d
    • Ralph Giles's avatar
      Mark AOM_QM matricies const. · 90243cf9
      Ralph Giles authored
      These large (200 KB) static stables are functionally read-only. Marking
      them const moves them to the read-only section of shared libraries,
      reducing memory footprint when multiple application processes are
      running simultaneously.
      
      Change-Id: I6b66ea8f512147f9762728ae01cea02a0fa71300
      90243cf9
  4. 13 Jan, 2018 1 commit
  5. 12 Jan, 2018 8 commits
  6. 11 Jan, 2018 12 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
    • 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
    • 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
    • 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
    • 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
    • Angie Chiang's avatar
      Move shift from 1d_cfg to 2d_cfg · 4a75b5a0
      Angie Chiang authored
      Change-Id: I22d0fac0d8e94fc02a7adf13b144ed17097ff84b
      4a75b5a0
    • 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
  7. 10 Jan, 2018 7 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
    • 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
    • Sebastien Alaiwan's avatar
      Prevent warp if global_motion_params are invalid · 742f646f
      Sebastien Alaiwan authored
      BUG=aomedia:1195
      
      Change-Id: Ib643ed9d3a23b83e91d908940f5777f6d13b8b19
      742f646f
    • Sebastien Alaiwan's avatar
      warped_motion.c: use 'clamp' function · 7ed89449
      Sebastien Alaiwan authored
      Change-Id: I31a6a66753e1e06a26ad798415c5994920bf22b7
      7ed89449
    • Jingning Han's avatar
      Fix 8X32 iscan table · 696a7c80
      Jingning Han authored
      Add the last scan position in the 8x32 iscan table. This point
      would cause the encoder to ignore the last non-zero coefficient
      at scan index 255, hence causing enc/dec mismatch. This commit
      fixes and solves this issue.
      
      BUG=aomedia:1193
      
      Change-Id: Ia41ba31ef8549f8809cea3d76ecd91da77e130cf
      696a7c80