1. 06 Jun, 2017 1 commit
    • 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
  2. 02 Jun, 2017 1 commit
    • 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
  3. 01 Jun, 2017 1 commit
    • 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
  4. 21 May, 2017 4 commits
    • Timothy B. Terriberry's avatar
      cb4x4: Elide special cases cb4x4 doesn't need · 9edb72c9
      Timothy B. Terriberry authored
      These conditions in has_top_right() are never true when cb4x4 is
      enabled.
      
      The corresponding check in has_bottom_left() is already behind a
      similar #if.
      
      This is needed by a subsequent patch to move sub-4x4 block sizes
      behind their own configuration flag, since that changes the value
      of bw_unit, which might cause the condition to become true when it
      should not be.
      
      Encoder and decoder output should remain unchanged.
      
      Change-Id: I648654dfc265f911d83668d94dc927ebc0c70771
      9edb72c9
    • Timothy B. Terriberry's avatar
      cb4x4: Don't assume TX units are half MI_SIZE in has_bottom_left() · 47de4660
      Timothy B. Terriberry authored
      Currently the "transform units" used to measure transform sizes
      in some parts of the code are based on the smallest defined
      transform size.
      
      cb4x4 currently defines a 2x2 transform size, even when chroma_2x2
      is not enabled, which means that the scale of the transform units
      was always double that of MODEINFO units.
      
      Several areas of the code were hard-coding this assumption instead
      of converting from one to the other using appropriate constants.
      
      Change-Id: Iff437425f2c5abd02a82ff1c7c8002aefc2f75a6
      47de4660
    • Timothy B. Terriberry's avatar
      cb4x4: Don't assume TX units are half MI_SIZE in predict_square_intra_block() · 31bc29f6
      Timothy B. Terriberry authored
      Currently the "transform units" used to measure transform sizes
      in some parts of the code are based on the smallest defined
      transform size.
      
      cb4x4 currently defines a 2x2 transform size, even when chroma_2x2
      is not enabled, which means that the scale of the transform units
      was always double that of MODEINFO units.
      
      Several areas of the code were hard-coding this assumption instead
      of converting from one to the other using appropriate constants.
      
      Change-Id: I86057b85b7d4cd810d87da28f5eedc5b27597e29
      31bc29f6
    • hui su's avatar
      filter-intra: fix memory overflow · 9ef435ac
      hui su authored
      BUG=aomedia:545
      
      Change-Id: I8beacce0f87b52dfd614bcd8c88426839c4ba51d
      9ef435ac
  5. 19 May, 2017 1 commit
  6. 17 May, 2017 1 commit
  7. 16 May, 2017 2 commits
    • hui su's avatar
      Palette: use uint16_t to store palette colors · fa4ff85b
      hui su authored
      Harmonize the low-bitdepth and high-bitdepth.
      
      Change-Id: I533f717ca189a5e577719821ea5aea940e3b6223
      fa4ff85b
    • Joe Young's avatar
      [intra-edge] Filter intra edge samples · 12c0bc03
      Joe Young authored
      For ext-intra directional modes, filter intra edge samples
      dependent on block size and prediction angle.
      
      Congiguration:
      ./configure --enable-experimental --enable-ext-intra
        --enable-internal-stats --disable-cdef --disable-delta-q
      
      Coding gain (1 frame Intra):
      cif:    -0.03%
      midres: -0.01
      720p:   -0.65
      1080p:  -0.83
      4k:     -1.19
      
      Change-Id: I372bfc7614f6a07fe1d8e7b61bd0b6660f9fb4a1
      12c0bc03
  8. 15 May, 2017 1 commit
    • Yue Chen's avatar
      Fix filter_intra overflow · 7bfa8677
      Yue Chen authored
      (1) clipping output of intra filter right away to stop
      unreasonable pixel values from propogating.
      (2) fix wrong filter coefficients
      
      Bug=aomedia:418
      
      Change-Id: I2620034ad03b499afb64da6cadb17fc1aa221c44
      7bfa8677
  9. 12 May, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] move cfl_idx_to_alpha to header · 04120190
      Luc Trudeau authored
      Move cfl_idx_to_alpha in the header to facilitate inlining.
      Remove the forward MB_MODE_INFO forward declaration
      
      Change-Id: Id33fb0228d88b6285252843e2345a0d3ae875cd2
      04120190
  10. 11 May, 2017 1 commit
  11. 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
  12. 06 May, 2017 1 commit
  13. 05 May, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Alpha signaling · f533400a
      Luc Trudeau authored
      Writes and reads alpha to and from the bitstream.
      
      A special case is needed on the encoder side to handle prediction block
      skips. Since whether or not a prediction block is skipped during CfL, a
      rollback is required if the block was skipped and the alpha index was
      not zero. The advantage of this is that no signaling is required when
      the prediction block is skipped as it is assumed tha the alpha index is
      zero.
      
      A encode facade is added to the intra prediction facade as CfL requires
      special encoder side operations.
      
      Change-Id: Ic3b11d0fdbd51389d862112eb09d8785127a6b06
      f533400a
  14. 03 May, 2017 1 commit
    • Jingning Han's avatar
      Account for sub8x8 chroma intra boundary condition · 3da18d60
      Jingning Han authored
      Properly account for the intra boundary condition for sub8x8
      chroma components in the modified chroma-2x2 framework. This fixes
      a rare enc/dec mismatch issue when chroma-sub8x8 is turned on.
      
      Change-Id: I058a2fb855a491bf604277f4c82169c1b55424fa
      3da18d60
  15. 02 May, 2017 1 commit
  16. 29 Apr, 2017 2 commits
  17. 28 Apr, 2017 1 commit
  18. 27 Apr, 2017 1 commit
    • hui su's avatar
      Refactor ext-intra · 0a6731f5
      hui su authored
      Remove the code about block size dependent angle steps and deltas,
      as they are modefied to be the same for all blocks in c81ea6e0.
      
      BUG=aomedia:442
      
      Change-Id: I54607dd752ef895c1418f979410b14c02fc9ce22
      0a6731f5
  19. 24 Apr, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Custom block-level DC_PRED · f8164157
      Luc Trudeau authored
      Adds the CfL experiment flag and computes a block-level DC_PRED that is
      required by CfL in order to compute alpha_cb and alpha_cr.
      
      The rate-distorsion impact of computing DC_PRED at the prediction block level
      for chroma planes is rather small
      
      Subset 1:
      master_no_cdef@2017-04-18T20:37:05.712Z
        -> block_DCPRED_no_cdef@2017-04-18T20:38:07.381
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0712 |  0.0337 | -0.1692 |   0.0693 | 0.0814 |  0.0710 |    -0.0063
      Note: CDEF was disabled because of problematic asserts.
      
      Change-Id: I44d1cde8605b108366f4bd4cedbf5159dbbb5880
      f8164157
  20. 12 Apr, 2017 1 commit
  21. 11 Apr, 2017 2 commits
  22. 10 Apr, 2017 1 commit
    • Angie Chiang's avatar
      Use block_idx rather than block_raster_idx · 752ccce7
      Angie Chiang authored
      1) block_raster_idx is actually raster order only when tx_size
      is TX_4x8.
      It's very specific, so we should put it near to the place it's
      actually used.
      
      2) Sync the meaning of block_idx on encoder/decoder sides
      
      Change-Id: I7d37a992cb773503e29f9c0d9d2586e580aa6173
      752ccce7
  23. 07 Apr, 2017 2 commits
  24. 06 Apr, 2017 1 commit
    • Urvang Joshi's avatar
      av1_has_bottom() Bugfix. · 1c247974
      Urvang Joshi authored
      This function was incorrectly using transform width instead of height.
      The bug wasn't caught yet, because all calls to this function currently
      use square transform sizes only.
      
      Change-Id: Id206c64aa26a8deecbbf90844220ad2f93230c15
      1c247974
  25. 03 Apr, 2017 1 commit
  26. 20 Mar, 2017 1 commit
    • Debargha Mukherjee's avatar
      Add config flags and macros to control ext-inter · 37f6fe61
      Debargha Mukherjee authored
      Adds a dependent config flag 'interintra' to turn on/off interintra
      modes altogether.
      Adds a dependent config flag 'wedge' to turn on/off wedge compound
      for both interinter and interintra.
      
      Adds another macro to change wedge predictors to use
      only 0, 1/2, or 1 weights.
      
      From now, use
      --enable-ext-inter --enable-wedge --enable-interintra to get the
      same behavior as the old --enable-ext-inter.
      
      Change-Id: I2e787e6994163b6b859a9d6431b87c4217834ddc
      37f6fe61
  27. 17 Mar, 2017 1 commit
  28. 02 Mar, 2017 1 commit
    • Yue Chen's avatar
      Use 3-tap spatial filter in FILTER_INTRA experiment · 8d8638a1
      Yue Chen authored
      3-tap recursive intra prediction filters are added.
      Macro USE_3TAP_INTRA_FILTER is set to 1 to use 3-tap by default.
      Coding gain of FILTER_INTRA experiment in AWCY, high delay 150f
      3-tap: 0.51%
      4-tap: 0.68%
      
      Change-Id: I44192dd08bfd8155f58a9b0b5cf1de88fceb762e
      8d8638a1
  29. 23 Feb, 2017 2 commits
    • Jingning Han's avatar
      Add chroma 2x2 block experiment · 31b6a4f9
      Jingning Han authored
      Support the use of 2x2 prediction and transform block size for
      chroma components. This experiment builds on top of cb4x4. It
      brings back the loss in performance gains due to 4x4 chroma
      component constrain. The coding gains for lowres are up from 1.5%
      to 2.5%.
      
      Change-Id: I8e461e230c2d920f6df1af9d935ebe9dfa3820d9
      31b6a4f9
    • Jingning Han's avatar
      Fix bottom ref condition for intra prediction in cb4x4 · f0179c3c
      Jingning Han authored
      Resolve a rare enc/dec mismatch issue triggered by the 4x4 chroma
      block size in sub8x8 block coding.
      
      To avoid using 2x2 chroma block size, it always uses the top-left
      4x4 luma block coding information to predict the 4x4 chroma block.
      The rest 3 4x4 luma blocks will be coded independently without
      coding the collocated chroma blocks.
      
      The compression performance gains are 1.45% for lowres set (down
      from 2.4% of the original cb4x4 design).
      
      Change-Id: Iff560fcab172ed4219434d5174c4d8dfbbb04135
      f0179c3c
  30. 22 Feb, 2017 1 commit
    • Jingning Han's avatar
      Fix chroma intra prediction reference check · edc62f74
      Jingning Han authored
      Fix the intra prediction boundary availability check for chroma
      components. Such intricacy is due to the re-schedule of sub8x8
      chroma coding block to avoid 2x2 prediction and transform size.
      
      Change-Id: I4a2dff8743cf78af8dfb90265019e8d1222ed734
      edc62f74
  31. 16 Feb, 2017 1 commit
    • Joe Young's avatar
      [ext-intra] fix bug in sample interpolation when dy < 0 · e568e6f0
      Joe Young authored
      When the "dy" variable is between -1 and 0 (base2 == -1)
      we should interpolate between the upper-left(-1,-1) and left(-1,0)
      samples, instead of just taking the left sample.
      
      Coding gain improves a bit with this change.
      
      BUG=aomedia:357
      
      Change-Id: If520f71b22115e79120499c21f8d6925c1fa24be
      e568e6f0
  32. 27 Jan, 2017 1 commit
    • Jingning Han's avatar
      Fix ext-partition/type in cb4x4 mode · 86e27791
      Jingning Han authored
      This commit fixes the encoding/decoding mismatch issue when
      ext-partition and ext-partition-type are both turned on in cb4x4
      mode.
      
      BUG=aomedia:336
      
      Change-Id: I4d6ad5863c9d3bc8e3a41c259b8b39f130164790
      86e27791