1. 11 Jul, 2017 3 commits
    • Monty Montgomery's avatar
      Add CONFIG_DCT_ONLY experiment. · cb55dad1
      Monty Montgomery authored
      Building with --enable-dct_only will force the encoder to use only
       tx_type == DCT_DCT.
      This experiment gives a loss and is only added for testing.
      
      subset-1:
      
      master@2017-02-21T01:23:58.825Z ->
       master-dct_only@2017-02-21T02:57:28.585Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      2.5467 |  1.0524 |  0.9171 |   1.8849 | 2.6626 |  2.4995 |     1.8402
      
      objective-1-fast:
      
      master@2017-02-21T01:47:43.790Z ->
       master-dct_only@2017-02-20T16:54:03.578Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      1.6625 |  0.3948 |  0.3368 |   1.5268 | 1.7142 |  1.7097 |     1.0743
      
      Change-Id: I19b738f3d1a450bc50422149ac42bc184bfae08a
      cb55dad1
    • Sarah Parker's avatar
      Remove SEPARATE_GLOBAL_MOTION macro · 0eea89f3
      Sarah Parker authored
      Global_motion, obmc and warped_motion are now permanently
      mutually exclusive.
      
      Change-Id: Ib1a1207cc7caa6459a2027c6c4a50fcf4c451e76
      0eea89f3
    • Nathan E. Egge's avatar
      Remove the EC_ADAPT experimental flags. · 6bdc40f1
      Nathan E. Egge authored
      Removing these flags make the EC_ADAPT experiment an integral part of
       the draft AV1 bitstream definition
      This commit has no effect on metrics.
      
      Change-Id: Ice78520935e8bfa9d25cf4b8384a1b872069d09c
      6bdc40f1
  2. 10 Jul, 2017 1 commit
    • Lester Lu's avatar
      Inter and intra LGTs · 708c1ec5
      Lester Lu authored
      Here we have an LGT to replace ADST for intra residual blocks, and
      another LGT to replace ADST for inter residual blocks. The changes
      are only applied to transform length 4 and 8, and only for the
      lowbitdepth path.
      
      lowres: -0.18%
      
      Change-Id: Iadc1e02b53e3756b44f74ca648cfa8b0e8ca7af4
      708c1ec5
  3. 07 Jul, 2017 1 commit
    • David Barker's avatar
      Fix a logic error with cb4x4 disabled · a0c1638f
      David Barker authored
      In the case where:
      * global-motion and ext-inter are both enabled
      * cb4x4 is disabled
      * We have an 8x8 macroblock which is partitioned into smaller blocks
      
      the function is_nontrans_global_motion has a bug where it will
      always act as if that macroblock does not use global motion. This
      patch fixes that logic bug.
      
      Change-Id: I712d7bab6d646726d97aa37630399b4bcbee7757
      a0c1638f
  4. 06 Jul, 2017 1 commit
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: allow the usage of new motion mode · d0f7ba16
      Wei-Ting Lin authored
      The new motion mode "NCOBMC_ADAPT_WEIGHT" cannot be used
      in the motion search loop as it requires all mvs from the
      neighboring blocks. This patch add a wrapper to skip checking
      this mode during mv search.
      
      Change-Id: I3a39954e91101929f26b5479c8c6ae22abdc7bce
      d0f7ba16
  5. 28 Jun, 2017 1 commit
    • Jingning Han's avatar
      Support rectangular tx_type coding in var-tx · 243b66bc
      Jingning Han authored
      Support the transform block kernel coding for rectangular
      transform block size in var-tx. This integrates txk-sel with
      var-tx.
      
      Change-Id: I9a8edd84812168f56c79b78cc9af34f6304b1d54
      243b66bc
  6. 27 Jun, 2017 2 commits
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: Add bitstream syntax · 85a8f70c
      Wei-Ting Lin authored
      Define the syntax and entropy coding templates for
      NCOBMC_ADAPT_WEIGHT. The actual values of the default
      probabilities and the index tree structure need to
      be fine tuned.
      
      In this experiment all mv's in a superblock are sent
      first as in the ncobmc case.
      
      Change-Id: I68d50d3d27346c2847ea449a1168c6a99fbb4d3d
      85a8f70c
    • Yi Luo's avatar
      Fix inv txfm low/high bitdepth selection logic · 51281095
      Yi Luo authored
      We are going to have several commits to setup new low/high
      bitdepth data path selection logic. This patch is for inverse
      transform. Let me summarize the ideas as following.
      
      - For low/high bitdepth selection, encoder depends on
        input configuration, e.g., video sequence bitdepth,
        profile. Decoder depends on input bitstream. This has
        nothing to do with compiler/build  configuration.
      
      - Typical encoder usage for sampling format 4:2:0.
        1) 8-bit video sequence:
         a) --profile=0
         Fastest encoding/decoding pipeline on speedup.
      
         b) --profile=2 --bit-depth=10
         Image pixels are left shifted by 2 bits. It
         employs 16-bit reference frame buffer and has high
         calculation precision. It usually enjoys higher
         compression performance.
      
        2) 10/12-bit video sequence (HDR):
         --profile=2 --bit-depth=10/12
      
      - Transform coefficient type:
        Lowbitdepth:  int16_t
        Highbitdepth: int32_t
      
      - The type, tran_low_t is still used in codebase,
        Which is int32_t, defining the data path capacity.
        Naturally, it is high bitdepth.
      
      Eventually we shall remove the configuration flags,
      CONFIG_HIGHBITDEPTH/CONFIG_LOWBITDEPTH, and seperate
      low and high bitdepth data path. Two data paths co-exist
      in the same build environment.
      
      Change-Id: I35c06d4d4f19ebf80d909168fdddbae57c3cc884
      51281095
  7. 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
  8. 19 Jun, 2017 1 commit
    • Zoe Liu's avatar
      Add new coding tool of ext-comp-refs · c082bbcb
      Zoe Liu authored
      The tool of ext-comp-refs adds the uni-directional compound reference
      prediction. In details, 3 pairs of uni-direcitonal compound references
      are added for the comp ref prediction:
      (LAST_FRAME, LAST2_FRAME),
      (LAST_FRAME, GOLDEN_FRAME), and
      (BWDREF_FRAME, ALTREF_FRAME).
      
      This new tool of ext-comp-refs will eventually overwrite
      one-side-compound and have the two coding tools to merge to one.
      
      It achieves -0.35 ~ -0.55% coding gains in BDRate, compared against
      AV1 baseline with the default experiments on, but without
      one-sided-compound. It achieves -0.2% ~ -0.3% coding gains when
      one-sided-compound is on. It achieves larger gains on higher
      resolution.
      
      Change-Id: Icbdb16e97b96aaebaf2213f5f72d5331e2e358eb
      c082bbcb
  9. 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
  10. 12 Jun, 2017 1 commit
    • 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
  11. 08 Jun, 2017 1 commit
    • 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
  12. 01 Jun, 2017 2 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
    • 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
  13. 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
  14. 24 May, 2017 1 commit
    • 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
  15. 23 May, 2017 1 commit
  16. 21 May, 2017 2 commits
    • Timothy B. Terriberry's avatar
      cb4x4: Fix reset_skip_context() without chroma_2x2 · a2d5cdef
      Timothy B. Terriberry authored
      reset_skip_context() was always clearing the entropy contexts for
      all three color planes, using a block size that corresponded with
      the luma plane.
      
      However, when chroma_2x2 is disabled, then for sub-8x8 luma block
      sizes, the corresponding chroma block size is always 4x4, and the
      skip flag only affects the chroma blocks corresponding to the
      upper-left luma block.
      
      This patch makes reset_skip_context() reset the contexts that
      actually correspond to the chroma blocks that are skipped (if any).
      It also moves reset_skip_context() to av1_reset_skip_context() in
      blockd.c, because blockd.h gets included before onyx_int.h, which
      declares the required is_chroma_reference() function.
      reset_skip_context() was too large and used in too many places to
      be a reasonable candidate for inlining, anyway.
      
      AWCY results on objective-1-fast:
      
      cb4x4-fix-base@2017-05-11T06:26:50.159Z -> cb4x4-fix-reset_skip@2017-05-11T06:28:45.482Z
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0301 |  0.1068 |  0.1463 |   0.0359 | 0.0260 |  0.0347 |     0.0479
      
      A regression (near the noise range), but without this fix, the line
      buffer size required by the entropy contexts will be doubled.
      
      Change-Id: I12fa6e60d9c1c7c85927742775a346ea22b3193f
      a2d5cdef
    • Timothy B. Terriberry's avatar
      cb4x4: Fix indexing of tx_size counts. · fe0fb1d9
      Timothy B. Terriberry authored
      Create named constants for the minimum TX_SIZE used in the luma
      plane, as well as the minimum allowed TX_SIZE for which we have to
      explicitly code a selection (i.e., one larger than the minimum luma
      TX_SIZE).
      
      Then, use these constants consistently with tx_size_to_depth() to
      index the tx_size counts in FRAME_COUNTS, and also consistently use
      TX_SIZE named constants to index the tx_size_implied counts.
      
      Failing to index these counts correctly can, e.g., cause tx_mode to
      be chosen incorrectly.
      
      Change-Id: I706a62a33e2282e67c97a68bade87fb8023ec13b
      fe0fb1d9
  17. 19 May, 2017 1 commit
  18. 18 May, 2017 1 commit
  19. 17 May, 2017 2 commits
  20. 16 May, 2017 1 commit
  21. 15 May, 2017 1 commit
    • Yi Luo's avatar
      Integrate partial IDCT to adapt_scan · 2ab63cb7
      Yi Luo authored
      - Add eob delivery in av1_first_pass().
      - Fix eob threshold pointer copy.
      - Change local functions in IDCT to static.
      
      Change-Id: I1c95e8f899088773f063fe6be7f26a5f96864644
      2ab63cb7
  22. 11 May, 2017 2 commits
  23. 10 May, 2017 2 commits
  24. 09 May, 2017 2 commits
    • Alex Converse's avatar
      intrabc: Allow ext_tx transforms · daa15e4e
      Alex Converse authored
      objective-1-fast results:
      
      sequence       PSNR    PSNR HVS    SSIM    CIEDE   APSNR   MS SSIM VMAF
      average        -0.02    0.01       -0.02   -0.03   -0.02    0.00    0.06
      1080p           0.02    0.01        0.03    0.00    0.01    0.02    0.09
      1080p-screen   -0.32   -0.28       -0.32   -0.44   -0.31   -0.27    0.00
      360p            0.06    0.14        0.10    0.10    0.08    0.11    0.22
      720p            0.00    0.04       -0.05    0.01    0.00   -0.01   -0.10
      wikipedia_420  -1.04   -0.95       -1.05   -1.30   -1.03   -0.88   -0.29
      
      Change-Id: I30ce8a869daf1c3ed539ffed552786cbb785e7d0
      daa15e4e
    • Zoe Liu's avatar
      Remove the incorrect comment · dd0d4264
      Zoe Liu authored
      The element of "idx" in the data structure of RefBuffer is a
      connection between AV1_COMMON::RefBuffer and
      AV1_COMMON::BufferPool::RefCntBuffer.
      
      It is being used currently in many places in both the encoder and the
      decoder. "idx" is not only used to track whether a reference buffer is
      alive, but also serve as the connection to RefCntBuffer which contains
      info that RefBuffer itself cannot access.
      
      Change-Id: I5ccdb9c2afe840d04a025da359a704f5fc216ddd
      dd0d4264
  25. 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
  26. 05 May, 2017 2 commits
    • 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
    • Sebastien Alaiwan's avatar
      Merge ref-mv into codebase · e140c508
      Sebastien Alaiwan authored
      Change-Id: I96e386678f6227f3ca735c9be2725cb9795b3296
      e140c508
  27. 04 May, 2017 3 commits
  28. 03 May, 2017 1 commit