1. 01 Dec, 2017 1 commit
  2. 27 Nov, 2017 1 commit
    • David Barker's avatar
      scaling: Fix border clamping for subsampled planes · b3b5304f
      David Barker authored
      When forming a scaled prediction, we need to clamp against
      the extended frame border which was set up when the relevant
      reference frame was decoded. The width of this border actually
      depends on the subsampling mode (for UV planes), but before this
      patch we were always using the Y plane's border width.
      
      This resulted in bad predictions when signalling a motion vector
      which points far outside the reference frame. This patch fixes
      the clamping, and restores the intended behaviour for out-of-frame
      motion vectors.
      
      Change-Id: I2cf575ce339a3e22a3c8444de0d0c3be031007c9
      b3b5304f
  3. 20 Nov, 2017 1 commit
    • Cheng Chen's avatar
      JNT_COMP: refactor if statements · 8263f80c
      Cheng Chen authored
      Refactor if statement that use frame_offset == -1 to indicate
      jnt_comp is not chosen, as distance now can not be negative.
      Instead, add a variable use_jnt_comp_avg for the same functionality.
      
      Change-Id: Ie6b9c6ab36131b48bc9e066babada17046729cd8
      8263f80c
  4. 18 Nov, 2017 1 commit
    • Zoe Liu's avatar
      Add motion selection to ext_skip · f40a9577
      Zoe Liu authored
      A new block mode, referred to as skip_mode is added. If a block is
      coded as skip_mode, it will be inter-coded, with its references and
      motion vectors derived from its neighboring blocks with zero-residue.
      Otherwise, the block can be coded in the current intra or inter mode.
      
      The computational load on skip_mode evaluation at the encoder should
      be kept minimum. No transform size / type evaluations are needed.
      
      Change-Id: I5aef0159c7d5ecd64258510835903375d6c536d6
      f40a9577
  5. 14 Nov, 2017 1 commit
  6. 10 Nov, 2017 1 commit
    • Cheng Chen's avatar
      JNT_COMP: turn off for one_sided_compound · 060e192b
      Cheng Chen authored
      One_sided_compound is less likely to provide gains for jnt_comp.
      Stop jnt_comp search when one_sided_compound is true. It saves coding
      time as well as bit overhead.
      
      Change-Id: I6714e5d211eba14a5793bdae7215ccfcc1d8f67a
      060e192b
  7. 06 Nov, 2017 1 commit
    • Cheng Chen's avatar
      JNT_COMP: Refactor code · f78632e0
      Cheng Chen authored
      The refactoring serves two purposes:
      1. Separate code paths for jnt_comp and original compound average
      computation. It provides function interface for jnt_comp while leaving
      original compound average computation unchanged. In near future, SIMD
      functions can be added for jnt_comp using the interface.
      
      2. Previous implementation uses a hack on second_pred. But it may cause
      segmentation fault when the test clip is small. As reported in Issue
      944. This refactoring removes hacking and make it possible to address
      the seg fault problem in the future.
      
      Change-Id: Idd2cb99f6c77dae03d32ccfa1f9cbed1d7eed067
      f78632e0
  8. 04 Nov, 2017 1 commit
  9. 01 Nov, 2017 2 commits
    • Yue Chen's avatar
      Remove CONFIG_INTERINTRA · 670b660d
      Yue Chen authored
      Change-Id: Icbedc16b01adf9b48f0f357ec89143462865d54e
      670b660d
    • Zoe Liu's avatar
      Add decoder support to ext_skip · f704a1c8
      Zoe Liu authored
      At the frame header level, add the checking on whether an inter-coded
      frame allows the use of 'skip_mode'. At the block level, add the
      decoding of 'skip_mode' for all the blocks if 'skip_mode' is allowed
      for the current frame. If 'skip_mode' is set, no further bit needs to
      read out, and the block is set as:
      - Inter-coded in compound mode;
      - With the nearest forward and backward reference frames;
      - In NEAREST_NEARESTMV mode;
      - In SIMPLE_TRANSLATION motion mode;
      - In COMPOUND_AVERAGE compound type; and
      - Skip set for residual.
      
      Change-Id: I50297f63a81135109332c4a51b516bffd7726777
      f704a1c8
  10. 31 Oct, 2017 2 commits
  11. 30 Oct, 2017 2 commits
  12. 27 Oct, 2017 1 commit
    • Zhijie Yang's avatar
      Add short_filter experiment · f02f8aef
      Zhijie Yang authored
      Reduce the motion interpolation filter taps for inter prediction
      blocks with widths or heights smaller than or equal to 4 to alleviate the memory
      bandwidth increase.
      
      AWCY HL: 0.01% Y, -0.20% U, -0.29% V (positive number means loss)
      
      Change-Id: Ic454340e20aea2f1aae622336990f24a9e5b54d8
      f02f8aef
  13. 24 Oct, 2017 1 commit
  14. 21 Oct, 2017 1 commit
  15. 20 Oct, 2017 1 commit
    • Debargha Mukherjee's avatar
      Remove CONFIG_CB4X4 config flags · 6ea917ec
      Debargha Mukherjee authored
      Since CB4X4 is adopted and without it the codec does not work,
      it is better to remove it and simplify the code.
      
      Change-Id: I51019312846928069727967e3b2bbb60f0fba80d
      6ea917ec
  16. 17 Oct, 2017 1 commit
  17. 16 Oct, 2017 1 commit
  18. 13 Oct, 2017 1 commit
  19. 12 Oct, 2017 2 commits
  20. 04 Oct, 2017 1 commit
    • Rupert Swarbrick's avatar
      Pack InterpFilters into a single integer · 27e90295
      Rupert Swarbrick authored
      Before this patch, if CONFIG_DUAL_FILTER was true then an MB_MODE_INFO
      stored its filter choices as an array of four numbers, each of which
      was between 0 and 10. It also seems that elements 2 and 3 of the array
      were always the same as elements 0 and 1 when used.
      
      This patch defines a new type(def) called InterpFilters together with
      constructor and extractor functions. When CONFIG_DUAL_FILTER is zero,
      InterpFilters is a synonym for InterpFilter and the constructor and
      extractor functions should compile away to nothing. When it is
      nonzero, InterpFilters is a uint32_t which stores the x filter in the
      high part and the y filter in the low part (this looks strange, but
      matches the old numbering).
      
      Making this change allows us to get rid of lots of special case code
      that was dependent on CONFIG_DUAL_FILTER. The uniform
      extract/make/broadcast interface also actually shortens code in
      general.
      
      Change-Id: I6b24a61bac3e4b220d8d46d0b27cfe865dcfba81
      27e90295
  21. 02 Oct, 2017 1 commit
  22. 27 Sep, 2017 1 commit
    • David Barker's avatar
      ext-partition: Don't read not-yet-decoded values · 761b1ac8
      David Barker authored
      When deciding whether the top-right or bottom-left blocks are
      available, we currently always act as if we're using 128x128
      superblocks. This means that, when using 64x64 superblocks,
      we sometimes conclude that blocks are available when they haven't
      been decoded yet!
      
      This typically happens at, for example, mi_row=15, mi_col=16
      (for bottom left), where we're at a 64x64 boundary but not
      a 128x128 boundary.
      
      This patch fixes the issue by checking based on the signalled
      superblock size.
      
      Note: Most of this patch is just threading 'cm' through the
      intra prediction process, so that we have access to cm->sb_size
      in has_top_right() and has_bottom_left()
      
      Change-Id: I126964c510aafffc870e7cd8b3e64a46abb14b3a
      761b1ac8
  23. 05 Sep, 2017 1 commit
  24. 25 Aug, 2017 1 commit
    • Rupert Swarbrick's avatar
      Add support for 16x4 partitions · 6a93b155
      Rupert Swarbrick authored
      When updating default_partition_cdf, this sums the probabilities that
      were divided evenly across the pairs PARTITION_HORZ_A/PARTITION_HORZ_B
      and PARTITION_VERT_A/PARTITION_VERT_B. Those summed probabilities now
      get distributed evenly across the triples you get by adding
      PARTITION_HORZ_4 and PARTITION_VERT_4, respectively.
      
      Rather than implement 2X8/8X2 blocks for now, ss_size_lookup returns
      4X8/8X4 block sizes to use as chroma transform sizes for 4X16/16X4
      blocks.
      
      The changes in setup_pred_plane and set_skip_context are because this
      is presumably the first time we've had to deal with 16x4 or 4x16
      blocks. Since BLOCK_16X4 is not less than BLOCK_8X8, the existing
      logic didn't work (and the "shuffle back one" logic should probably be
      done for small widths and heights separately).
      
      Change-Id: If28d8954da42d6c726f2bcce2cb5242154b0870c
      6a93b155
  25. 16 Aug, 2017 1 commit
    • Rupert Swarbrick's avatar
      Simplify motion var parameters in reconinter.h · 1cfe474b
      Rupert Swarbrick authored
      Before this patch, the functions build_inter_predictors, allow_warp
      and av1_make_inter_predictor took two parameters (if
      CONFIG_MOTION_VAR): mi_col_offset and mi_row_offset. These were used
      for two things: they were used to look up a MODE_INFO structure and
      the code figured out it was doing OBMC if at least one offset was
      nonzero.
      
      This patch slightly simplifies things by passing the relevant mi and a
      flag saying whether we're doing OBMC instead. This means the
      allow_warp function actually loses a parameter.
      
      It also moves all mention of the functions out of the header and into
      reconinter.c since they are only used in that compilation unit.
      
      Change-Id: I8dedad9d7384ee0aa17b977e92ea7bfa83a532ef
      1cfe474b
  26. 15 Aug, 2017 1 commit
  27. 14 Aug, 2017 1 commit
  28. 21 Jul, 2017 1 commit
  29. 13 Jul, 2017 3 commits
  30. 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
  31. 11 Jul, 2017 1 commit
  32. 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
      505f0068
    • 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
      15836145
  33. 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