1. 13 Jun, 2017 4 commits
    • Yushin Cho's avatar
      Fix a bug in daala-dist · 09b01a24
      Yushin Cho authored
      Fix the bug that height of a partition is used as a stride mistakenly.
      This fixes the regression caused by sub8x8 tx size rd search
      for a partition >= 8x8.
      
      Change-Id: I6114814dcec70fd5198f681c0a861bc9849286fd
      09b01a24
    • Thomas Davies's avatar
      AOM_QM: Fix bug with applying QMs to 1D and identity transforms. · be44e512
      Thomas Davies authored
      Only apply quantisation matrices when the transform is 2D.
      
      Change-Id: Iae9ac910c11199f7944a80d10d334db3b711059d
      be44e512
    • Zoe Liu's avatar
      Add encoder/decoder pipeline to support single ref comp modes · 85b66463
      Zoe Liu authored
      Now the single ref comp mode should work with WEDGE and
      COMPOUND_SEGMENT. For motion_var, the OBMC_CAUSAL mode uses the 2nd
      predictor if the neighboring block is single ref comp mode predicted.
      
      This patch removes the mode of SR_NEAREST_NEWMV and leaves four
      single ref comp modes in total:
      
      SR_NEAREST_NEARMV
      SR_NEAR_NEWMV
      SR_ZERO_NEWMV
      SR_NEW_NEWMV
      
      Change-Id: If6140455771f0f1a3b947766eccf82f23cc6b67a
      85b66463
    • Yushin Cho's avatar
      Another fix of daala-dist for cb4x4 · c0f6bf25
      Yushin Cho authored
      Daala-dist replaces the luma distortion of sub8x8 partitions with
      its own distortion thus requires to split the luma distortion only.
      Doing so, there has been a bug that INT_MAX64 value comes
      when the sub8x8 parition is skipped. This happened because the existing
      code does not initialize the rd_stats_y or tmp_rd_stats_y, i.e. rd_stat struct
      for luma only in several places.
      
      Change-Id: If229b53bb7a6cff0b8751138a32b1dcf02665624
      c0f6bf25
  2. 12 Jun, 2017 12 commits
    • Fergus Simpson's avatar
      frame_superres: Fix bad assert · abd4343a
      Fergus Simpson authored
      Commit 12311 had a misplaced assert set that was causing superres debug
      runs to fail. The asserts just needed to be moved to where they were
      relevant to fix the issue.
      
      Change-Id: Ic370686c7156fcaf9380d8d8fd9d35b892d77e46
      abd4343a
    • Yue Chen's avatar
      Add a new experimental flag SBL_SYMBOL · 536e5520
      Yue Chen authored
      A new experiment SBL_SYMBOL, meaning superblock-level symbols, will
      be explored. It allows some symbols being coded at superblock level
      (64x64) by checking whether a symbol(e.g. motion_mode, tx depth,
      and interpolation filter) is identical across macroblocks in a
      superblock.
      
      Change-Id: I38408325c9b7a4b94c11c400a5060036ce36405e
      536e5520
    • Sarah Parker's avatar
      Clean up hbd transform code · 30dfa883
      Sarah Parker authored
      Responding to some left over cosmetic comments from
      2b5cdb1cf87c933331a16cc0221455d0a8c255e1
      
      Change-Id: I42e126593526cedd6675adf35b9c1df78e1ddf54
      30dfa883
    • Yushin Cho's avatar
      Fix a compile warning with global-motion off · c9751c59
      Yushin Cho authored
      Change-Id: I8379e4055e9c2737f1ad310095d7a318e6e74b2f
      c9751c59
    • Yushin Cho's avatar
      Fix a compile warning with dual-filter off · 60baa359
      Yushin Cho authored
      Change-Id: I68bb6ea8e26efe44bbbfb0f1a956620578578d55
      60baa359
    • Fergus Simpson's avatar
      frame_superres: Post encode/decode upscaling · d2bcbb56
      Fergus Simpson authored
      This patch implements the post-encode and post-decode upscaling for the
      frame superresolution experiment to work.
      
      Upscaling happens after cdef and before loop restoration.
      
      For now, this patch forces on random-superres.
      
      The patch also cleans up some broken rate control hooks from VP9
      days, to be brought back later when the resize and superres tools
      are stable.
      
      Change-Id: If0a8f69224dfaa0f4ae7703bd429ea2af953c7a6
      d2bcbb56
    • Yue Chen's avatar
      supertx: code refactoring + resolve conflicts with baseline · 8e689e4b
      Yue Chen authored
      Refactoring: split prediction+extension for each plane, so we can
      handle luma/chroma supertx pred in different ways.
      Compatibility fix: fix conflicts with cb4x4 and chroma_sub8x8, now
      for chroma sub8x8 supertx, only the top-left(basic cb4x4) or the
      the bottom-right(cb4x4 + chroma_sub8x8) predictor will be used
      without any blending within a 8x8 unit.
      
      Change-Id: I6cf7b12768a82d3c7e01811ada02de84af9bd8ac
      8e689e4b
    • David Barker's avatar
      Fix bug in loop-restoration unit tests · 67e15578
      David Barker authored
      The values 'offset_r' and 'offset_c', representing a random
      offset into a large pre-generated block, were calculated the
      wrong way around. This could cause problems when testing
      rectangular convolutions.
      
      Change-Id: Ide830f275c83492abe83b61216da0fbce669fb7e
      67e15578
    • Zoe Liu's avatar
      Remove the extra cost threshold modes · b2c62bc7
      Zoe Liu authored
      Change-Id: Id55bb8421edc0ccdf87db46f7b9b36b0a93a4efa
      b2c62bc7
    • Zoe Liu's avatar
      Add encoder/decoder support for var-refs · 7b1ec7a9
      Zoe Liu authored
      Check the availability of the reference frames at the frame level at
      both encoder and decoder, and if a reference frame is not available
      for a specific video frame, remove the signaling of such reference
      frame info at the block level.
      
      This patch adds the consideration of the bit saving inside the RD
      optimization loop.
      
      Change-Id: I4c22f1b843b21c7d2b47e118c99c3ad615a3d4e4
      7b1ec7a9
    • Steinar Midtskogen's avatar
      Speed up CDEF parameter selection for cpu-used > 0 · b1555c93
      Steinar Midtskogen authored
      High delay cpu-used=4
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
       0.0579 |  0.1380 | -0.1975 |   0.0361 |  0.0226 |  0.0072 |     0.0470
      
      Low delay cpu-used=4
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1016 | -0.0695 |  0.1013 |  -0.1324 | -0.0903 | -0.1260 |    -0.1710
      
      Change-Id: I5a66a1ffc2d1fb2a203065b7fbb2fd2bd2b281ad
      b1555c93
    • Jingning Han's avatar
      Fix high bit-depth quantization process · 6ae7b3d9
      Jingning Han authored
      Scale the rounding factor according to the scaling factor applied
      to the quantization step size. This resolves a compression
      performance regression in 32x32 and above transform size.
      
      BUG=aomedia:599
      
      Change-Id: Id3fc9a46c4a8843ff5d77ccaa59ee3112b12d7f4
      6ae7b3d9
  3. 11 Jun, 2017 3 commits
    • Jingning Han's avatar
      Avoid right shift negative numbers · 32d26bc0
      Jingning Han authored
      This avoids the rounding errors due to the right shift of the
      negative numbers that cause the reconstruction coefficient has
      higher distortion than the source coefficient.
      
      BUG=aomedia:599
      
      Change-Id: I11ed86bf1d41164dda4398545334a7b4e8e10513
      32d26bc0
    • Debargha Mukherjee's avatar
      Fix compile error with global and warped disabled · 3599435a
      Debargha Mukherjee authored
      Change-Id: Iab2f7ca3c66f8f62b66100e61ff0f6e7376670ae
      3599435a
    • Jingning Han's avatar
      Resolve compiler warning when highbd is off · 105eecf4
      Jingning Han authored
      The highbd_clip_pixel_add() function is generalized to be used in
      the regular 8 bit path. Move its defintions outside the highbd
      experimental flag.
      
      This resolves the comiler warning in unit tests when high bit-depth
      is turned off.
      
      Change-Id: I90a744adb2381c9bf8476aa2a2bd0c87d9afdf57
      105eecf4
  4. 10 Jun, 2017 1 commit
    • Timothy B. Terriberry's avatar
      var_tx: Fix distortion calc. in av1_tx_block_rd_b · ab141115
      Timothy B. Terriberry authored
      This was hard-coding the assumption that the block size for the
      smallest TX size was also the smallest block size. This is no
      longer true since fe67ed6a landed.
      
      As a result, for TX blocks that overlapped the frame edge, it was
      only measuring distortion on the upper-left 2x2 part of each 4x4
      sub-block, causing the encoder to prefer larger transforms which
      cause such overlap and avoid transforms which do not, causing a
      regression.
      
      This patch uses the appropriate conversion table, which fixes the
      regression.
      
      BUG=aomedia:593
      
      Change-Id: Id253cf0f3a5252378e3f340b8350120639ff5c88
      ab141115
  5. 09 Jun, 2017 9 commits
    • Yue Chen's avatar
      Fix compile error of convolve_round and compound_round · 1ce569d7
      Yue Chen authored
      BUG=aomedia:597
      Change-Id: I6ff109fac8351a98a672259532520e062c1e6497
      1ce569d7
    • David Barker's avatar
      Fix Windows x86 build with --enable-ext-inter · dab3e99b
      David Barker authored
      The Windows calling convention pushes any __m128i type arguments
      after the 3rd (4th on x86-64) onto the stack. But on x86,
      stack-allocated arguments are not guaranteed to be aligned to
      a multiple of their natural alignment, leading to compile errors.
      
      We fix this by making the functions which take >3 __m128i arguments
      instead take pointers. Since the functions are marked INLINE, the
      extra memory operations should optimize out.
      
      BUG=aomedia:587
      
      Change-Id: I0cb2831fd12aded6f2821c037365386e6183ba5c
      dab3e99b
    • David Barker's avatar
      Vectorize av1_convolve_2d() · 8295c7c7
      David Barker authored
      Includes a test case based on the warp filter tests
      
      Change-Id: I9abea53a088f68bb8a928ebd7cb96b3266a63c13
      8295c7c7
    • Jonathan Matthews's avatar
      Avoid integer overflow in inv_txfm2d_add_facade() · 284f9d06
      Jonathan Matthews authored
      Bug introduced in change: I34cdeaed2461ed7942364147cef10d7d21e3779c
      
      BUG=aomedia:591
      
      Change-Id: I49b9edd2bf5a482b5afea5d83d56e04a0086f797
      284f9d06
    • David Barker's avatar
      Unify high-precision convolve filters: convolve-round · 726a953c
      David Barker authored
      * Reduce bit widths of intermediate values where possible
      * Change ROUND_POWER_OF_TWO_SIGNED to ROUND_POWER_OF_TWO
        in av1(_highbd)_convolve_2d
      * Apply offsetting and bounds checking, to match the intended
        hardware implementation
      * Separate the implementations of av1(_highbd)_convolve_2d
        into compound-round and non-compound-round cases. This is because
        there are now a significant number of differences between the
        functions.
      
      Overall, this is expected to affect the bitstream and encoder output
      when convolve-round alone is enabled, but *not* when compound-round
      is enabled.
      
      Change-Id: I8c21e0645fd11f64c59552885f87f4a5dd40ccf7
      726a953c
    • David Barker's avatar
      Add 'do_average' to ConvolveParams structure · e64d51a9
      David Barker authored
      The 'ref' member of ConvolveParams currently serves two purposes:
      * To indicate which component of a compound we're currently predicting,
        eg. for fetching interpolation filters with dual-filter enabled.
      * To determine whether we should average into the destination buffer.
      
      But there are two cases where we want to separate these out:
      * In joint_motion_search, we want to try combining a fixed second
        prediction with various first predictions.
      * When searching masked interinter compounds, we want to predict
        each component separately then try different combinations.
      
      In these cases, we set 'ref' to 0 and use temporary variables to
      make sure we use the correct interpolation filters. But this is
      quite fragile.
      
      This patch separates out the two uses into separate members.
      This allows us to remove some temporary variables, but more
      importantly gives easy fixes to two bugs in
      build_inter_predictors_single_buf (used by rdopt):
      
      * We previously set ref=0 but didn't fix up the interpolation filters
      * For ZERO_ZEROMV modes, the second component would accidentally
        average into the (uninitialized!) second prediction buffer
      
      BUG=aomedia:577
      BUG=aomedia:584
      BUG=aomedia:595
      
      Change-Id: Ibc31d1ac701a029ea5efaa1197dd402bc4b7af1e
      e64d51a9
    • Urvang Joshi's avatar
      Enable greedy version of av1_optimize_b(). · 09302f5a
      Urvang Joshi authored
      This has been found to be better than the original version in both ways:
      (1) Better compression: lowres -0.229, midres -0.147
      (2) Faster too in my quick test over 5 different clips with 30
      frames: 2.7% to 10.5% faster.
      
      Change-Id: I4d46e0915d6e4b8e7bfc03d0c8b88cbe3351ca20
      09302f5a
    • Thomas Davies's avatar
      AOM_QM: Use 8-bit matrices and fix 2x2 transform sizes. · 92aa22a8
      Thomas Davies authored
      2x2 transforms are now hidden behind the CHROMA_2X2 macro,
      not the CB4X4 macro.
      
      Change-Id: I5d73c679fba486ccda98fa8dbb804a3902df6c8d
      92aa22a8
    • Tom Finegan's avatar
      Fix example test incompatibilites with CMake build. · 747cf985
      Tom Finegan authored
      Minor updates in test/tools_common.sh to enable use of
      test/examples.sh with CMake make builds while continuing
      to support configure builds.
      
      BUG=aomedia:76,aomedia:589
      
      Change-Id: I841aef3b61a0c9baa8ad7356fc5b51ffb0902907
      747cf985
  6. 08 Jun, 2017 11 commits
    • Sebastien Alaiwan's avatar
      Avoid #if inside macro arguments · fadc7cbc
      Sebastien Alaiwan authored
      Visual Studio doesn't support it.
      
      Change-Id: Ie7bd21e6d9a8a30b7b89e9fca6b82dd2aa406a89
      fadc7cbc
    • Alex Converse's avatar
      intrabc: Use max mesh range (256) at speed zero · cc54efdd
      Alex Converse authored
      BD-RATE PSNR twitch-1 1st KF: -0.1334
      BD-RATE PSNR wikipedia 1st KF: -8.8791
      
      Change-Id: I882af1d317ebdd3017c23fb884fc624282a2a55f
      cc54efdd
    • Sebastien Alaiwan's avatar
      Remove --test-16bit-internal option · 0b2e4039
      Sebastien Alaiwan authored
      This option is obsolete and confusing now that the LBD coding path
      can be disabled at build time (--disable-lowbitdepth).
      Removing it makes the encoder/decoder behaviours symmetric, and
      prevents the "--test-16bit-internal --test-decode=fatal" mismatch.
      
      BUG=aomedia:528
      
      Change-Id: Ia2d9857629b789b11d37fc75433b2cecc27d6642
      0b2e4039
    • Angie Chiang's avatar
      Copy ctx in get_entropy_contexts_plane for lv_map · fb42c7fa
      Angie Chiang authored
      This will fix Assertion in get_txb_ctx() for invalid sign value
      
      After fixing this bug, we have around 0.2% gain on lowres.
      
      With cb4x4 on only, lv_map provides 1.538% gain on lowres.
      
      With cb4x4 + chroma_sub8x8, lv_map provides 1.468% gain on lowres.
      
      Change-Id: I06f996ec5af0d5e79e377a3dc8c012862fc4b9c7
      fb42c7fa
    • Yushin Cho's avatar
      Refactor sub8x8 tx size RD for daala-dist · 30a2c5f2
      Yushin Cho authored
      For a tx size RD search with partition size >= 8x8 and tx size < 8x8,
      daala-dist function is applied to the whole partition after all tx blocks are encoded
      instead of each 8x8 sub block of the partition.
      
      Change-Id: I27d9e2960aa641f550096e32ebcdf8dfb4de79a6
      30a2c5f2
    • Sebastien Alaiwan's avatar
      In verbose mode, display the coding path in use · 2751192a
      Sebastien Alaiwan authored
      Change-Id: Id926529b11f859aebed43fdcfcdedba9ce26b1a7
      2751192a
    • Frederic Barbier's avatar
      Cleanup dead fwd transform functions · d405f8a6
      Frederic Barbier authored
      Cleanup related wrappers and unit-tests.
      
      Change-Id: I2d37a8c80de63dbeaef584e3d5fa842c0b2ee6db
      d405f8a6
    • Sebastien Alaiwan's avatar
      Revert "Enable one_sided_compound by default" · 8e3da097
      Sebastien Alaiwan authored
      This reverts commit bf3813a1.
      
      Reason for revert: feature not ready.
      Incompatible with lossless under some circumstances,
      causes the following assertion failure:
      Assertion `(!is_compound) == (cm->reference_mode == SINGLE_REFERENCE)' failed
      
      BUG=aomedia:575
      
      Change-Id: I63a2b38ce3b7cb50108ac559cca0768b4579c9ae
      8e3da097
    • Nathan E. Egge's avatar
      Remove unused av1_inter_mode_tree ind/inv arrays. · 50484232
      Nathan E. Egge authored
      Change-Id: If00a0bdf239b2c9e355cffd2e472708acb189f16
      50484232
    • Sarah Parker's avatar
      Remove deprecated high-bitdepth functions · 31c66502
      Sarah Parker authored
      This unifies the codepath for high-bitdepth transforms and deletes
      all calls to the old deprecated versions. This required reworking
      the way 1d configurations are combined in order to support rectangular
      transforms.
      
      There is one remaining codepath that calls the deprecated 4x4 hbd
      transform from encoder/encodemb.c. I need to take a closer look
      at what is happening there and will leave that for a followup
      since this change has already gotten so large.
      
      lowres 10 bit: -0.035%
      lowres 12 bit: 0.021%
      
      BUG=aomedia:524
      
      Change-Id: I34cdeaed2461ed7942364147cef10d7d21e3779c
      31c66502
    • Angie Chiang's avatar
      Fix conflict between lv_map and cb4x4 · ee4a34c2
      Angie Chiang authored
      Change-Id: I0512000554ef74d397332e5ed135fe20e2c4a37e
      ee4a34c2