1. 06 Jun, 2017 4 commits
    • Urvang Joshi's avatar
      Add a new experiment "rect-intra-pred". · 766a389b
      Urvang Joshi authored
      Earlier, intra prediction for rectangular blocks was performed by
      running two steps of prediction on square sub-blocks.
      
      With this experiment, we do proper intra prediction for rectangular
      blocks. This ensures that we make use of all available neighboring
      pixels especially for directional modes. For this, all the intra
      predictors were updated to work with rectangular transform block sizes.
      
      Performance improvements are small but free of cost:
      
      All Intra frames:
      lowres: -0.126
      midres: -0.154
      
      Video Overall:
      lowres: -0.043
      midres: -0.100
      
      [Could not get AWCY results due to a backlog.]
      
      BUG=aomedia:551
      
      Change-Id: I7936e91b171d5c246cb0a4ea470a981a013892e6
      766a389b
    • Luc Trudeau's avatar
      [CFL] Get subsampling from AV1 common · dac5e391
      Luc Trudeau authored
      This change does not impact the bitstream
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      Change-Id: I6e131e91bad5efa345ed2542ae970eb6122eff51
      dac5e391
    • Luc Trudeau's avatar
      Move FrameContext out of plane loop · e2ac9855
      Luc Trudeau authored
      Change-Id: Ideaeb52dbaf87e5a68da90cb94b0517760cb9d5c
      e2ac9855
    • Debargha Mukherjee's avatar
      Make loop-restoration compatible w/ frame_superres · 2dd982e4
      Debargha Mukherjee authored
      When frame_superres is on, loop-restoration should work
      on the size of the upscaled frame and not on the internal
      width and height in the common structure. This patch
      makes the necessary changes on the encoder and decoder
      side to enable that.
      
      Change-Id: I1d1c024ac6f95944169d90647b4c5a61354a5cc6
      2dd982e4
  2. 05 Jun, 2017 2 commits
    • Urvang Joshi's avatar
      is_directional_mode: Check for directional modes directly. · 875a6675
      Urvang Joshi authored
      Earlier, the condition was negating all non-directional modes to check
      if a mode is directional. This was error-prone, e.g. when a new
      non-directional mode is added.
      
      By checking for directional modes directly, we avoid such errors.
      
      Change-Id: Ia4a62e278cd73078c53ed5096db646eff77f054e
      875a6675
    • Sarah Parker's avatar
      Early termination for warp error computation · 81f6ecd1
      Sarah Parker authored
      This terminates the computation for the warp error once
      the frame error exceeds the best frame error found
      so far to avoid unneccessary computation.
      
      Change-Id: I094a0b3e13f8b91610e051cb91d20a815879dd80
      81f6ecd1
  3. 02 Jun, 2017 4 commits
    • Angie Chiang's avatar
      Mark SMOOTH2 filter under USE_EXTRA_FILTER flag · aadbb025
      Angie Chiang authored
      Change-Id: Ia9a5d818e8c2ff9b4cc41c6d7950cfe005c20bfc
      aadbb025
    • Alex Converse's avatar
      intrabc: adapt use_intrabc prob · 7c412ea4
      Alex Converse authored
      First keyframe BD-RATE objective-1-fast:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.3705 | -0.3232 | -0.3812 |  -0.3782 |     N/A | -0.3412 |        N/A
      
      First keyframe BD-RATE twitch-1:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2479 | -0.2477 | -0.2467 |  -0.2567 | -0.2486 | -0.2508 |    -0.2487
      
      
      
      Change-Id: Iea6c895c6fe9e9764887a8968f6e5330903969d3
      7c412ea4
    • Ryan Lei's avatar
      integrate parallel_deblocking with CB4x4 · 17905edf
      Ryan Lei authored
      this change makes parallel deblocking experiment works with
      cb4x4. the inner loop process every 4x4 block.
      
      Change-Id: I86adb3d7b6d67a91ccc12aab29da9bfb8c522cf1
      17905edf
    • Joe Young's avatar
      [intra-edge] Use 5-tap filter · 3be70f72
      Joe Young authored
      For intra edge filtering experiment, replace the 2x iteration
      (5-6-5) filter with a 5-tap filter (2-4-4-4-2).
      
      BDrate (1 key-frame) for this change:
      cif:    +0.02%
      midres: +0.04
      720p:   -0.01
      1080p:  -0.03
      4k:     -0.01
      
      BDrate (1 key-frame) for intra-edge experiment:
      (05/31, disable rect-tx, ext-tx, delta-q, ext-delta-q)
      
                1 key-frame     60 frames
               PSNR   SSIM     PSNR  SSIM
      cif:    -0.02   -0.01   -0.03  -0.01
      midres: -0.02   -0.02   -0.05  -0.10
      720p:   -0.36   -0.39   -0.05  -0.06
      1080p:  -0.75   -0.88   -0.22  -0.27
      4k:     -0.91   -1.12   -0.45  -0.54
      
      Change-Id: I834037e662b4483d4d6bdceb1c1624d56ba293a4
      3be70f72
  4. 01 Jun, 2017 8 commits
    • Yushin Cho's avatar
      Fix daala-dist for cb4x4 · 63927c43
      Yushin Cho authored
      The place where av1_daala_dist() is applied for sub8x8 partition is
      moved from sub8x8 mode decision functions to rd_pick_partition().
      
      BD-Rate change by daala-dist with '--disable-var-tx' is:
      (AWCY, objective-1-fast, high delay mode)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      15.1558 | 12.9585 | 14.4662 |  -3.8651 | -1.7102 | -9.2956 |    10.8686
      
      In MSE probe mode:
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0429 |  0.0435 |  0.1651 |  -0.0415 | 0.0850 |  0.0122 |     0.0546
      
      Change-Id: I3b2ea916d41c48e433eb641adf44552e4725c198
      63927c43
    • Angie Chiang's avatar
      Add gen_txb_cache() and it's related functions · 2affb3b0
      Angie Chiang authored
      This function pre-generate counts/magnitudes of each level map
      such that we don't have to re-calculate the counts/magnitudes
      while doing the optimization.
      
      Change-Id: Ifdfc89522cf2f2b9f3734d451324081f42b47cb0
      2affb3b0
    • Angie Chiang's avatar
      Add get_coeff_cost() and get_txb_cost() · 488f921c
      Angie Chiang authored
      Change-Id: I085f2bc706fde41afbee5ff48b56acc095f804c2
      488f921c
    • Timothy B. Terriberry's avatar
      cb4x4: Move sub-4X4 TX sizes behind CONFIG_CHROMA_2X2. · fe67ed6a
      Timothy B. Terriberry authored
      cb4x4 itself should not require these sizes.
      
      This simplifies compatibility with other experiments, since we can
      first make them work with cb4x4 (which is now on by default), and
      then worry about chroma_2x2 (which is not) in separate steps.
      
      Encoder and decoder output should remain unchanged.
      
      Change-Id: I4e9fcdae49f238b5099a3c74a398fe993c2545f8
      fe67ed6a
    • Jingning Han's avatar
      Rework loop filter tx size selection · 6e4955d4
      Jingning Han authored
      Update and capture the effective transform block size per color
      plane.
      
      Change-Id: Ib6e0e7abb3973db6b8d511ee7c9948aaab048788
      6e4955d4
    • Yue Chen's avatar
      Make ext_inter/wedge/compound_segment/interintra on by default · f03907a2
      Yue Chen authored
      (1) Make unit tests for masked sad/variance encoder-only
      (2) Fix compile error with intrabc
      (3) Fix warnings reported by static analysis
      
      Change-Id: I0cd2176fcda0b81e1fc30283767678376ced4c42
      f03907a2
    • David Barker's avatar
      Fix integer overflow in warp filter · 17c37ceb
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/12602/ made the
      variable 'sum' in the warp filter unsigned, to indicate that its
      value should always be >= 0. But 'sum' is used to accumulate
      signed values, and it is expected that some of those values
      will be negative.
      
      The issue is that, when running 'x += y', if x is a uint32_t
      and y is an int (and is 32 bits), the C standard says to
      convert y to a uint32_t before doing the addition. This causes
      overflow, and so undefined behaviour, if y < 0.
      
      This is fixed by making 'sum' signed, and by explicitly bounds
      checking against zero at the end of the filter.
      
      BUG=aomedia:572
      
      Change-Id: I1d484b5f5698db0ec9761807610b3b2b35647983
      17c37ceb
    • Urvang Joshi's avatar
      get_min_tx_size: assert() doesn't need an 'if'. · affbe5e1
      Urvang Joshi authored and James Zern's avatar James Zern committed
      Change-Id: Id2be191fb48ed8d65b452499e1a1a1f470359321
      affbe5e1
  5. 31 May, 2017 1 commit
    • Jingning Han's avatar
      Rework txfm_above and txfm_left context offset · 331662e9
      Jingning Han authored
      Make the txfm_above and txfm_left be processed in the unit of
      miniumum transform block size. Scale the transform block step
      size with respect to the mode_info step size.
      
      Change-Id: Iee4421e005db742cd4ff7899215560063e5f68e5
      331662e9
  6. 30 May, 2017 2 commits
    • David Barker's avatar
      Tidy up warp filter · facac4f5
      David Barker authored
      * Simplify the C version of the warp filter to make the intent
        of the code clearer
      * Replace saturate_uint() in the C warp filter with an assertion
        that the intermediate values are in-range. This is because they
        should (provably) *never* go out-of-range.
      * Add a comment describing the intended hardware architecture
      * Miscellaneous comment updates
      
      Change-Id: I798736f923ece599f22d573d31c5dfccd18b2d0e
      facac4f5
    • Arild Fuldseth (arilfuld)'s avatar
      Use 7-bit smooth and regular filters with DUAL_FILTER · f3b5e7f4
      Arild Fuldseth (arilfuld) authored
      Change-Id: If8f8e1a0032e914beb3ec3bcde221fe4a5605139
      f3b5e7f4
  7. 29 May, 2017 2 commits
  8. 27 May, 2017 1 commit
    • Debargha Mukherjee's avatar
      High precision Wiener filter rework · 11cf46f4
      Debargha Mukherjee authored
      Implements the high precision Wiener filter with an offset
      to reduce the error due to saturation without increasing
      the number of bits needed for intermediate precision.
      
      Also turns the high precision filter on.
      
      Change-Id: I34037a5746a6a89c5fce67753c1b027749085edf
      11cf46f4
  9. 26 May, 2017 3 commits
    • Debargha Mukherjee's avatar
      Clean-up unused 3rd order least squares · 17f041a7
      Debargha Mukherjee authored
      Change-Id: Ia18f9f7034dafb9ac0108143d4f65f3f6b1a77d5
      17f041a7
    • Fergus Simpson's avatar
      resize-refactor: Check pixel dim instead of mb dim · 056732f6
      Fergus Simpson authored
      Changes av1_scale_if_required to check if a resize is needed using the
      width and height from cm directly rather than cm's mi_cols and mi_rows
      times MI_SIZE.
      
      This is simpler, and won't have issues with sizes that aren't divisible
      by MI_SIZE.
      
      Change-Id: Icbf34252a62436bb9bb0f83fa5fd688f7c5ae256
      056732f6
    • Fergus Simpson's avatar
      resize: Clear above context to aligned width · 8c70d917
      Fergus Simpson authored
      This fixes an issue with context clearing introduced by commit
      5e81643d.
      
      In av1_zero_above_context width_y went from being assigned "2 *
      aligned_width" to "width << 1". All this patch does is replace width
      with the aligned_width.
      
      This resolves an issue with random resizing being broken on the master
      branch.
      
      Change-Id: Ib60bf81e6091802053a5a26057c626d4efe6497c
      8c70d917
  10. 25 May, 2017 6 commits
  11. 24 May, 2017 5 commits
    • Thomas Davies's avatar
      AOM_QM: modify low QM levels. · 8f286984
      Thomas Davies authored
      Use a more aggressive tail to simulate larger viewing
      distances better for low value QM levels.
      
      This does not change default QM coding (qmlevel >= 5)
      or non-QM coding.
      
      Change-Id: Ifb6fa6faf8ce9b77177c97798e08418788c53fbd
      8f286984
    • David Michael Barr's avatar
      [CFL] Calculate SSE for distinct alpha before RDO · 84a44dbe
      David Michael Barr authored
      
      
      Separate the codes into a table of distinct values
      and an index into that table.
      Pull the SSE calculation of the RDO loop and avoid
      repeating for the same alpha values.
      
      Change-Id: I8c4bd7eab6f8000e6aca9687d9190abc3e270c37
      Signed-off-by: default avatarDavid Michael Barr <b@rr-dav.id.au>
      84a44dbe
    • Thomas Davies's avatar
      AOM_QM: redesign matrices and support CB_4X4 and RECT-TX. · 6675adff
      Thomas Davies authored
      All matrices are derived by subsampling 32x32 and 32x16 matrices.
      Inter and intra matrices now use the same matrix set.
      
      BUG=aomedia:520
      
      AWCY results for default setting (qm-min=5, qm-max=9):
      
        PSNR  | PSNR Cb | PSNR Cr | PSNR HVS | SSIM  | MS SSIM | CIEDE 2000
         2.75 |  7.98   |    -    |  -3.52   |  0.73 |   -2.21 |   4.22
      
      Change-Id: I8414d19eaf50cfe80d4fe2290da6cdf4ebb406cb
      6675adff
    • Jingning Han's avatar
      Fix set_skip_context logic · f65b89ab
      Jingning Han authored
      Properly reset mi_row and mi_col values per plane.
      
      Change-Id: Ic624f286c8ee2521403557bc1d685752166b1947
      f65b89ab
    • Jingning Han's avatar
      Fix chroma-sub8x8 for non-420 format · bdcee1e7
      Jingning Han authored
      The chroma-sub8x8 is mainly designed for YUV420 format. When the
      format is YUV444, it falls back to regular block size behavior.
      
      Change-Id: Ibedc4f1d59e7bf717384ede9423f22678d54c0fa
      bdcee1e7
  12. 23 May, 2017 2 commits