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
    • 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
      Change-Id: I1e5f23ef7f2debcf8edce788bfa63ec95db4a679
    • Linfeng Zhang's avatar
      Add av1_convolve_2d_copy_sr_sse2() · 5f0485b4
      Linfeng Zhang authored
      Change-Id: I7776ccaecb6933af47253a15fa8ed8a53346fac1
    • Frederic Barbier's avatar
      Cleanup dead table · a77c871e
      Frederic Barbier authored
      Change-Id: I545f126f6ba724ff4e41294353c4f11a47c6e853
    • 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
      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
    • 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
      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
    • 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.
      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)
      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
  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:
      Change-Id: I173340965f465a82019167e0964b9901683b60a8
    • 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
  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%
      Change-Id: I35ce915ba4164b57e4b9aad417c5ec3ea8850e91
    • 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
    • Sebastien Alaiwan's avatar
      warped_motion.c: reduce scope of locals · fb92a0cf
      Sebastien Alaiwan authored
      Also, make them 'const' when possible.
      Change-Id: I871709b6a839405127be7ca6a3d89f4543794ce4
    • 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
    • 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
    • Angie Chiang's avatar
      Move shift from 1d_cfg to 2d_cfg · 4a75b5a0
      Angie Chiang authored
      Change-Id: I22d0fac0d8e94fc02a7adf13b144ed17097ff84b
    • 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
  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
    • 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
    • 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
    • Sebastien Alaiwan's avatar
      Prevent warp if global_motion_params are invalid · 742f646f
      Sebastien Alaiwan authored
      Change-Id: Ib643ed9d3a23b83e91d908940f5777f6d13b8b19
    • Sebastien Alaiwan's avatar
      warped_motion.c: use 'clamp' function · 7ed89449
      Sebastien Alaiwan authored
      Change-Id: I31a6a66753e1e06a26ad798415c5994920bf22b7
    • 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.
      Change-Id: Ia41ba31ef8549f8809cea3d76ecd91da77e130cf