1. 07 Aug, 2017 1 commit
    • David Barker's avatar
      Fix bug in highbd wedge-interintra prediction · b746c3b7
      David Barker authored
      When calling aom_(highbd_)blend_a64_mask for a subsampled plane,
      the mask is subsampled in-place. This means that the mask stride
      passed in needs to be the value before subsampling. Since the
      wedge masks are set up so that mask stride = mask width, this means
      that the stride should equal the width of the current mi block.
      However, for the wedge-interintra path in combine_interintra_highbd,
      we subsampled the mask stride, resulting in the wrong stride being
      used for chroma planes if subsampling_x == 1.
      The lowbd path already uses the correct stride, so this patch just
      copies the stride calculation over to the highbd path.
      Change-Id: I08a4120b11a38912c45d9e637a54e009eddd88ec
  2. 04 Aug, 2017 1 commit
  3. 02 Aug, 2017 2 commits
  4. 31 Jul, 2017 2 commits
  5. 26 Jul, 2017 2 commits
  6. 25 Jul, 2017 2 commits
    • Jingning Han's avatar
      Account for the 64x64 proc block constrain in obmc masking · 440d4254
      Jingning Han authored
      Make the codec account for the 64x64 processing unit constraint
      when producing the mask for overlapped filter.
      Change-Id: I3e596492ae522abe678369b0c9710441549e817e
    • Jingning Han's avatar
      Make maximum obmc process unit 64x64 · 501294ce
      Jingning Han authored
      For 128x128 level blocks, process the overlapped prediction in
      the unit of 64x64. This allows hardware design to reuse the 64x64
      processing unit in 128x128 level block coding.
      Change-Id: I3967b8e3c1c697f96a50e59a0957fc69b67e6f8e
  7. 21 Jul, 2017 2 commits
  8. 13 Jul, 2017 3 commits
    • Urvang Joshi's avatar
      Refactor av1_build_inter_predictors_sb(). · 686d4fd2
      Urvang Joshi authored
      Before this, this function was copied-and-edited from
      av1_build_inter_predictors_sby() and av1_build_inter_predictors_sbuv().
      Also, some places used sb() one directly (like rdopt.c), while others used
      sby() and sbuv() separately (like encodeframe.c --> encode_superblock()).
      This was prone to errors, if someone mistakenly modified only one/two of
      the 3 functions.
      Now, we just reuse sby() and sbuv() functions in sb().
      Verified that there's no change in output.
      Change-Id: If81d78e767cc3fa09f06094d4db36ff1eaea3e4f
    • Jingning Han's avatar
      Remove deprecated av1_build_inter_predictor_sub8x8 function · 2cf590fe
      Jingning Han authored
      Change-Id: Ia75a5160fc11df5d5dcbcb1bcf767de9925f811e
    • Jingning Han's avatar
      Resolve performance regression in compound rounding and segment · 077e320a
      Jingning Han authored
      This commit resolves the compression performance regression when
      both compound rounding and compound segment are enabled.
      Change-Id: I831b4e44d2b054aa74922eb0c541eaa2ac355e0e
  9. 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
  10. 08 Jul, 2017 2 commits
    • Fergus Simpson's avatar
      Fix frame scaling prediction · 505f0068
      Fergus Simpson authored
      Use higher precision offsets for more accurate predictor
      generation when references are at a different scale from
      the coded frame.
      Change-Id: I4c2c0ec67fa4824273cb3bd072211f41ac7802e8
    • Debargha Mukherjee's avatar
      Changed scaling of MVs to use higher precision. · 15836145
      Debargha Mukherjee authored
      This is intended to be a no-op when scaling is not
      enabled, but is expected to result in more accurate
      prediction when references need to be scaled.
      However note all xs, yx, subpel_x and subpel_y values
      are now at higher than 1/16th precision.
      Change-Id: I4b22573ea290a31fc58ead980bb0d5e5a9e89243
  11. 24 Jun, 2017 1 commit
    • David Barker's avatar
      Change mv scaling behaviour · 67d968f3
      David Barker authored
      This patch changes the motion vector scaling and clamping to be
      slightly more accurate (removing an occasional 1px offset due to
      multiple roundings) and fixes the border clamping when scaling
      Change-Id: I032dc0b87854eebafa58f1f803981e23c8cc2d9b
  12. 23 Jun, 2017 1 commit
    • David Barker's avatar
      Fix bug with chroma-sub8x8 + resizing · 11132ce3
      David Barker authored
      The special path in build_inter_predictors for chroma blocks
      corresponding to sub8x8 luma blocks would always fetch the
      scale factors from 'xd', which correspond (at least in the
      decoder) to the references of the block for which is_chroma_reference
      returns true.
      The correct behaviour is to fetch the scale factors from 'ref_buf',
      which corresponds to the references of the block currently being
      This patch fixes some encode/decode mismatches which were caused
      by the above behaviour when the various reference frames had
      different sizes.
      Change-Id: I48a0a167ea25d47d08018016cf8b77885b3b5d6b
  13. 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
  14. 16 Jun, 2017 1 commit
    • Fergus Simpson's avatar
      Unify resize and superres denominator constants · bfbf6a59
      Fergus Simpson authored
      constants with the same value that did essentially the same thing.
      This patch merges the two into SCALE_DENOMINATOR for simplicity's sake.
      Change-Id: I252a9b7f89f10d77bdb0c3cf2d67d31d337afa4b
  15. 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:
      Change-Id: If6140455771f0f1a3b947766eccf82f23cc6b67a
  16. 12 Jun, 2017 1 commit
    • 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
  17. 11 Jun, 2017 1 commit
  18. 09 Jun, 2017 1 commit
    • 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
      Change-Id: Ibc31d1ac701a029ea5efaa1197dd402bc4b7af1e
  19. 01 Jun, 2017 1 commit
  20. 25 May, 2017 2 commits
  21. 24 May, 2017 1 commit
    • 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
  22. 20 May, 2017 1 commit
  23. 19 May, 2017 3 commits
    • Jingning Han's avatar
      Prevent obmc access 2x2 level prediction block · 90edf660
      Jingning Han authored
      When the above and left neighbor blocks are coded in the sub8x8
      block size, use 4x4 level prediction block to produce the reference
      for obmc.
      Change-Id: Ic19f6e3b3880cebd153078823a3b77b04e28053b
    • Jingning Han's avatar
      Fix inter predictor route condition · f28b8cfe
      Jingning Han authored
      Fix a bug introduced in the previous commit that effectively
      disables chroma-sub8x8.
      Change-Id: I521fdc1f15f5bed5272081217e70d1e2549c7ecd
    • Jingning Han's avatar
      Guard the OBMC not to use 2x2 level prediction block · 6247103b
      Jingning Han authored
      Limit the minimum prediction block size for chroma component to
      be 4x4 in OBMC. This resolves an enc/dec mismatch when all the
      experiments are turned on.
      Change-Id: I3151912387943b03ef5c9aa2d10fe13d15c79cf7
  24. 18 May, 2017 1 commit
  25. 15 May, 2017 1 commit
  26. 11 May, 2017 1 commit
    • Yue Chen's avatar
      Add CONFIG_INTERINTRA flags and reduce # of interintra modes to 4 · 4d26acb4
      Yue Chen authored
      Use CONFIG_INTERINTRA to properly separate interintra from the basic
      ext_inter experiment.
      When macro REDUCE_INTERINTRA_MODES is 1, only 4 ii modes are enabled
      so as to reduce the complexity overhead.
      (Right now the flag is off)
      Change-Id: Iec6f36a1000f181adbb822ad66c7d5b2625e9cc7
  27. 10 May, 2017 3 commits