1. 27 Sep, 2017 1 commit
    • Cheng Chen's avatar
      Fix select filter level · 15f6b863
      Cheng Chen authored
      Only use cm->mi, instead of cm->mi_grid_visible to get filter level.
      The latter may not work for shifted grid loop filtering.
      
      Change-Id: I55ed6a42f0abb19d6814e8c0cf8d64ce79bf6abc
      15f6b863
  2. 26 Sep, 2017 1 commit
    • Cheng Chen's avatar
      Reorgnize loop filter range for superblock · 5589d71c
      Cheng Chen authored
      For each superblock, its filtering range is shifted up and left by
      8 pixels (half of the maximum loop filter length), such that
      estimation of deblocking filtering will not cross two superblocks.
      
      Change-Id: I82244b7c26ab8b2ac553037b3bb1fe1d82bf5704
      5589d71c
  3. 20 Sep, 2017 1 commit
    • Cheng Chen's avatar
      Search for deblocking filter level for superblock · f572cd30
      Cheng Chen authored
      Search and pick filter level for each superblock after the entire
      frame has been encoded. And then apply loop filtering using
      selected filter levels.
      
      Now it can't work with LOOPFILTER_LEVEL. Y, U, V planes share the
      same filter level.
      
      Per superblock, filter levels are signaled via bitstream.
      
      Future work: move selecting filter level into each superblock
      rather than wait for the whole frame encoded.
      
      Change-Id: I46cb994ec4866abb0456146f7c3cae8813c1d52e
      f572cd30
  4. 07 Sep, 2017 1 commit
    • Yi Luo's avatar
      Lowbd parallel_deblocking sse2 optimization · ea8a0d52
      Yi Luo authored
      Baseline + parallel_deblocking:
      
      - Passed unit tests *SSE2/Loop8Test6*, *AVX2/Loop8Test6*.
      - 1080p, 25 frames, profile=0, encoding/decoding, output match.
      - Decoder frame rate increases from 54.15 to 65.84.
      
      Change-Id: I55938c94961066594f4b9080192c7268c19d9bf9
      ea8a0d52
  5. 04 Sep, 2017 1 commit
  6. 01 Sep, 2017 1 commit
    • David Barker's avatar
      Miscellaneous fixes for var-tx · 16c64e33
      David Barker authored
      Lots of small bug fixes, mainly around the transform size coding:
      
      * The loop filter was accidentally using the non-subsampled
        block size for the V plane, due to comparing a plane index
        (0, 1, or 2) against PLANE_TYPE_UV (== 1)
      
      * We allowed an initial update of the transform partition probabilities
        even on frames where we know they will never be used
        (because tx_mode != TX_MODE_SELECT).
        Further, these probabilities would not be reverted at the end
        of the frame, leading to the probability delta persisting across frames.
      
        Change this to behave more like the non-var-tx transform size coding,
        where probability deltas are only coded for frames with
        tx_mode == TX_MODE_SELECT, and the deltas only apply for one frame.
      
      * Fix decoder for the case where the video as a whole isn't lossless,
        and we have tx_mode == TX_MODE_SELECT, but the current segment
        *is* lossless.
        Note that the encoder already does the right thing in this case.
      
      * Don't allow the transform splitting to recurse "below" 4x4.
        This is really just a refactor, but means we can increase the
        maximum depth when subdividing rectangular transforms if we
        want to, whereas the previous code would have needed special cases
        for 4x8 and 8x4 transforms.
      
      * Finally, when we hit the maximum splitting depth, don't update
        the counts as if we had coded a 'no split' symbol.
      
      Change-Id: Iaebdacc9de81d2e93d3c49241e719bbc02e32682
      16c64e33
  7. 30 Aug, 2017 1 commit
    • Yi Luo's avatar
      Highbd parallel_deblocking sse2 optimization · 6f5569f3
      Yi Luo authored
      - Decoder speed improves ~13.7% (baseline + parallel_deblocking).
      - Highbd loopfilter AVX2 version works when this experiment is
        disabled.
      
      Change-Id: I5d56b137a1d52236a4735656c370d57ef71ae043
      6f5569f3
  8. 19 Aug, 2017 2 commits
    • Cheng Chen's avatar
      Change experimental flag name · 13fc8194
      Cheng Chen authored
      CONFIG_UV_LVL --> CONFIG_LOOPFILTER_LEVEL
      Change name because the experiment combines filter level search
      in U, V plane, and horizontal, vertical search in Y plane.
      
      Change-Id: Ia05b8f80cd93b60a0305eb94e5783559ef904c13
      13fc8194
    • Cheng Chen's avatar
      Dual deblocking filter strength thresholds · 179479fe
      Cheng Chen authored
      A new experiment for deblocking filter that separates vertical
      and horizontal filter strengths. This experiment is based on the
      assumption that non-flatness characteristics of vertical and
      horizontal direction may differ. Therefore selecting different
      filter strengths for vertical and horizontal can improve deblocking
      performance.
      
      The process of finding proper filter strength:
      1. Search through the filter level under the constraint that
         (vertical == horizontal), and find the best solution.
      2. Fix vertical level as the best solution found in step 1 and vary
         horizontal level to find the best value.
      3. Fix the selected horizontal level, vary vertical level to find
         its best value.
      
      The experiment is working with UV_LVL, sharing the same config flag.
      The searching for horizontal and vertical filter strength only applies
      on Y plane for now.
      
      The experimental flag should be changed to filter_level later.
      
      Change-Id: I164eec8d3ccb3da7ff109c5c55f4b52c1536ddf1
      179479fe
  9. 15 Aug, 2017 1 commit
    • Urvang Joshi's avatar
      Remove ALT_INTRA flag. · 93b543ab
      Urvang Joshi authored
      This experiment has been adopted as it has been cleared by Tapas.
      
      Change-Id: I0682face60f62dd43091efa0a92d09d846396850
      93b543ab
  10. 14 Aug, 2017 1 commit
    • Cheng Chen's avatar
      Improve readability for experiment UV_LVL · 9efbaf9c
      Cheng Chen authored
      Add asserts for switch.
      Add helper functions to make selection of plane functions readable.
      Remove extra { such that brackets match.
      
      Change-Id: I048f3e5e0822bf1669fdcbedb84a0255139df686
      9efbaf9c
  11. 08 Aug, 2017 1 commit
  12. 04 Aug, 2017 1 commit
  13. 31 Jul, 2017 1 commit
  14. 27 Jul, 2017 1 commit
    • Cheng Chen's avatar
      Select filter level for U, V planes · e94df5cf
      Cheng Chen authored
      Previously, U, V planes share the same filter level with Y.
      Here, we search and pick the best filter level for U, V planes.
      Selected filter levels are transmitted per frame.
      This works with parallel_deblocking.
      
      Coding gain on Google test set:
      		Avg_psnr	ovr_psnr	ssim
      lowres: 	-0.116		-0.120		-0.339
      midres:		-0.218		-0.228		-0.338
      hdres:		-0.260		-0.264		-0.365
      
      Change-Id: I03d2ac47539f3eea9f3c4b08007bd6d3f4b73572
      e94df5cf
  15. 21 Jul, 2017 1 commit
  16. 20 Jul, 2017 2 commits
    • Cheng Chen's avatar
      Directional deblocking filter · 9050c9da
      Cheng Chen authored
      New deblocking filter that smooths block boundaries in an estimated
      direction of object orientation.
      
      1. Select the proper direction for deblocking filtering.
      Compute abs gradient line by line for the block.
      Select the direction with least sum of abs gradient.
      
      2. Apply deblocking filtering for a block along this direction.
      Apply directional filtering for Y, U, V planes.
      
      Coding gain on Google test set:
      
      %	  	avg_psnr   ovr_psnr  ssim
      lowres  	-0.129 	  -0.136    -0.277
      midres  	-0.103    -0.127    -0.188
      hdres	  	-0.159    -0.158    -0.173
      screen_content  -0.408    -0.397    -0.695
      
      Change-Id: Ie8646dcc163ace5d8faf5e502b38342d885efc30
      9050c9da
    • Ryan Lei's avatar
      refactor the code to use common av1_get_uv_tx_size function. · 2a4b7810
      Ryan Lei authored
      Change-Id: I9a0470cb47f953cfdb026fb699cdcc000a8deca9
      2a4b7810
  17. 18 Jul, 2017 1 commit
    • Ryan Lei's avatar
      enable parallel_deblocking experiment by default · 2c6ca5fe
      Ryan Lei authored
      this change enables parallel_deblocking by default after it has been
      officially adopted. the parallel_deblocking_15taps experiment is merged
      into the parallel_deblocking experiment so it is removed to clean up
      the code. internal compile flags are added to disable 15 tap for both
      luma and chroma plane for future experiment purpose. the internal
      compile flags are disabled by default.
      
      Change-Id: I1668fd2cb7676d756c52263d6993241618d33ee6
      2c6ca5fe
  18. 17 Jul, 2017 1 commit
  19. 12 Jul, 2017 1 commit
    • Rupert Swarbrick's avatar
      ext-partition-types: Add 4:1 partitions · 93c39e91
      Rupert Swarbrick authored
      This patch adds support for 4:1 rectangular blocks to various common
      data arrays, and adds new partition types to the EXT_PARTITION_TYPES
      experiment which will use them.
      
      This patch has the following restrictions, which can be lifted in
      future patches:
      
        * ext-partition-types is incompatible with fp_mb_stats and supertx
          for the moment
      
        * Currently only 32x32 superblocks can use the new partition types
      
      There's a slightly odd restriction about when we allow
      PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
      EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
      has_rows and has_cols is true. This means that at least half of the
      width and height of the block must be visible. It might be nice to
      relax that restriction but that would imply a change to how we encode
      partition types, which seems already to be in a state of flux, so
      maybe it's better to wait until that has settled down.
      
      Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
      93c39e91
  20. 10 Jul, 2017 1 commit
  21. 21 Jun, 2017 1 commit
    • Timothy B. Terriberry's avatar
      cb4x4: Move sub-4X4 block sizes behind chroma flags. · 81ec2619
      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_sub8x8 and chroma_2x2 (which is not) in
      separate steps.
      
      Encoder and decoder output should remain unchanged.
      
      Change-Id: Iff2a5494cab3b7d96f881e8bd9cd4bf18c817cfa
      81ec2619
  22. 19 Jun, 2017 1 commit
  23. 15 Jun, 2017 1 commit
    • Ryan's avatar
      clean up the logic for generating tile boundary information · 639a9eba
      Ryan authored
      the tile boundary info flag was updated for each mi data structure
      which starts from cm->mi. there is the second level buffer which
      contains the pointer to the mi structure. it starts at
      cm->mi_grid_visible. for every coded block, pointer in the second level
      buffer only points to the top left mi structure of that particular coded
      block. in order to get the correct boundary info for each mi. we have to
      access the mi structure from cm->mi instead of cm->mi_grid_visible.
      this change doesn't impact the result, it only cleans up the logic.
      
      Change-Id: I8f883a284f600e3075754124b8197d78898a56be
      639a9eba
  24. 14 Jun, 2017 2 commits
    • Cheng Chen's avatar
      Fix a bug in loop filter mask · 4fd4c0d1
      Cheng Chen authored
      Fix a bug that causes unnecessary filtering on inner 4x4
      block boundaries inside a 8x8 transform block.
      
      BUG=aomedia:594
      
      Change-Id: I0b39fdb4fd9a1c1892c8eac547f5d83823fd05c8
      4fd4c0d1
    • Ryan Lei's avatar
      integrate parallel_deblocking with var_tx experiment · 1eb55ffc
      Ryan Lei authored
      this change added the support for var_tx in the parallel deblocking
      experiment. the mainc change is the way to get actual transform
      size for every MI from internal tx size table of the mbmi structure.
      
      Change-Id: I225f3a95b1def15d6389d572927156720e487e11
      1eb55ffc
  25. 13 Jun, 2017 1 commit
    • 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
  26. 02 Jun, 2017 1 commit
    • 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
  27. 01 Jun, 2017 2 commits
    • 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
  28. 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
  29. 25 May, 2017 1 commit
    • Cheng Chen's avatar
      Fix loop filtering bug in non-420 video. · b496bba1
      Cheng Chen authored
      BUG=aomedia:386
      
      Fix the bug by separating mask_4x4_int into mask_4x4_int_r and
      mask_4x4_int_c. The horizontal and vertical filtering are now
      correctly handled.
      
      Change-Id: I2207a12c83cba3e3003e1e45c7587695ad87a691
      b496bba1
  30. 21 May, 2017 1 commit
  31. 18 May, 2017 1 commit
  32. 17 May, 2017 1 commit
  33. 08 May, 2017 1 commit
    • Urvang Joshi's avatar
      Add a new experiment SMOOTH_HV. · e6ca8e83
      Urvang Joshi authored
      This experiment extends ALT_INTRA by adding two new modes:
      smooth horizontal and smooth vertical.
      
      Improvement on *intra frames* in BDRate (PSNR):
      ===============================================
      
      AWCY (high latency): -0.46%
      (Also, -1.0% or more on PSNR Cb,Cr and APSNR Cb,Cr).
      
      AWCY (low latency): -0.43%
      (Also, -0.88% to -0.94% on PSNR Cb,Cr and APSNR Cb,Cr).
      
      Google sets:
      lowres: -0.454
      midres: -0.484
      hdres:  -0.525
      
      Improvement on *video overall* in BDRate (PSNR):
      ================================================
      
      AWCY (high latency): -0.15%
      
      Google sets:
      lowres: -0.085
      midres: -0.079
      
      Change-Id: I9f4e7c1b8ded1fe244c72838f336103ccc715d50
      e6ca8e83
  34. 02 May, 2017 1 commit
  35. 01 May, 2017 1 commit
  36. 27 Apr, 2017 1 commit
    • Yaowu Xu's avatar
      Localize the use of CONFIG_EXT_DELTA_Q · 140a61de
      Yaowu Xu authored
      The commit localizes the use of a experimental flag to reduce code
      duplication.
      
      BUG=aomedia:442
      
      Change-Id: Ia9d5b28c5b1d8148e6ed5496b9cd135242e5c8d4
      140a61de