1. 12 Oct, 2017 1 commit
    • Yaowu Xu's avatar
      Fix msvc 2015 build · 989dd5bf
      Yaowu Xu authored
      BUG=aomedia:900
      
      Change-Id: I9ca596f677e174ccd12a6e4eb927733d25e76f58
      989dd5bf
  2. 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
  3. 02 Oct, 2017 1 commit
  4. 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
  5. 05 Sep, 2017 1 commit
  6. 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
  7. 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
  8. 15 Aug, 2017 1 commit
  9. 14 Aug, 2017 1 commit
  10. 21 Jul, 2017 1 commit
  11. 13 Jul, 2017 3 commits
  12. 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
  13. 11 Jul, 2017 1 commit
  14. 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
  15. 21 Jun, 2017 2 commits
    • 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
    • Timothy B. Terriberry's avatar
      ext_inter: Skip compound type probs. for small block sizes. · 4a81001b
      Timothy B. Terriberry authored
      When writing the compressed header, prob_diff_update() was called
      for compound_type_prob[] for every defined block size, even though
      luma never uses block sizes smaller than 4x4.
      
      This fixes is_any_masked_compound_used() and
      is_interinter_compound_used() to properly return 0 for chroma-only
      block sizes, and then uses these functions to guard the probability
      updates in write_compressed_header() and read_compressed_header(),
      the same way the actual compound type values are guarded in
      read_inter_block_mode_info() and pack_inter_mode_mvs().
      
      Change-Id: Ib521cf53f9ec166ef634609c8b47c5814b6a9ff5
      4a81001b
  16. 20 Jun, 2017 1 commit
  17. 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
  18. 12 Jun, 2017 2 commits
    • Yushin Cho's avatar
      Fix a compile warning with dual-filter off · 60baa359
      Yushin Cho authored
      Change-Id: I68bb6ea8e26efe44bbbfb0f1a956620578578d55
      60baa359
    • 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
      8e689e4b
  19. 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
      
      BUG=aomedia:577
      BUG=aomedia:584
      BUG=aomedia:595
      
      Change-Id: Ibc31d1ac701a029ea5efaa1197dd402bc4b7af1e
      e64d51a9
  20. 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
      4d26acb4
  21. 09 May, 2017 2 commits
    • Jingning Han's avatar
      Rework inter prediction process in cb4x4 mode · c44009c1
      Jingning Han authored
      Use 2x2 inter prediction for chroma component. This improves the
      compression performance by 0.6% for lowres.
      
      Change-Id: If9d98e49cee63f40085b179652bfacc31ff462ea
      c44009c1
    • Angie Chiang's avatar
      Make convolve_round work with warped_motion · 05685e9a
      Angie Chiang authored
      Warped_motion doesn't go through inter_predictor() function to
      generate prediction where convolve_round is activated.
      Therefore, we could avoid doing post rounding when the
      warped_motion mode is on.
      
      We use do_post_rounding to indicate whether post rounding is
      needed
      Change-Id: Ib17a0c0d4e6e5232e9682afa8cfdb9576f5cf4c0
      05685e9a
  22. 08 May, 2017 2 commits
  23. 05 May, 2017 1 commit
  24. 03 May, 2017 1 commit
  25. 01 May, 2017 1 commit
  26. 29 Apr, 2017 1 commit
    • Debargha Mukherjee's avatar
      Wedge smoothing function cleanup and improvements · c54594f8
      Debargha Mukherjee authored
      Clarifies in the code that the wedge smoothing
      functions can in fact be generated by shift of three 1-D
      prototypes. Also changes the smoothing function a little
      which gives a slight improvement.
      Also includes some generic cleanups.
      
      Change-Id: I5735e0021d50c36c42509d4fc0939e7220564571
      c54594f8
  27. 26 Apr, 2017 2 commits
    • Debargha Mukherjee's avatar
      Fix separation between ext-inter group of expts. · c5f735f9
      Debargha Mukherjee authored
      Change-Id: I9b6f99768c60e743d2fadfaabc532e7c15dc40f3
      c5f735f9
    • James Zern's avatar
      Revert "Fix separation between ext-inter group of expts." · 1b6ccfcf
      James Zern authored
      This reverts commit 5ca25dfc.
      
      It breaks high-bitdepth builds with:
      --enable-aom-highbitdepth --enable-experimental --enable-dual-filter
      --enable-entropy --enable-ext-inter --enable-ext-intra
      --enable-ext-partition-types --enable-ext-refs --enable-ext-tx
      --enable-filter-intra --enable-loop-restoration
      
      or more simply:
      --enable-aom-highbitdepth --enable-experimental --enable-ext-inter
      
      BUG=aomedia:463
      
      Change-Id: If814131e634e4411569859f7426efafe158b83fd
      1b6ccfcf
  28. 24 Apr, 2017 1 commit
  29. 20 Apr, 2017 1 commit
    • Alex Converse's avatar
      intrabc: Add initial skeleton · 28744309
      Alex Converse authored
      Missing features:
      * RDOPT (Forced on for certain blocks)
      * Any form of border extension
      * Non MI sized right and bottom edges
      * MV prediction
      
      Present features:
      * Force intrabc for some blocks
      * Carry intrabc in the bitstream
      * Validate DV is causal
      * Reconstruct intrabc block assuming border extension is unnecessary
      
      Change-Id: Ib1f6868e89bfacc2a4edfc876485bad1b347263b
      28744309
  30. 14 Apr, 2017 1 commit
    • Sarah Parker's avatar
      Refactor gm/wm/obmc for cleaner warping interactions · 4c10a3c2
      Sarah Parker authored
      This creates a central function which defines when a
      block should be warped. It also refactors the
      WARPED_MOTION code so that all calls to av1_warp_plane
      happen in the same location.
      
      No change in performance.
      
      Change-Id: Icaf9ec7700d34523809258594bb9843bb2975f46
      4c10a3c2
  31. 13 Apr, 2017 1 commit
    • Sarah Parker's avatar
      Disable neighbor warping for gm + obmc · a036d86f
      Sarah Parker authored
      Adds an option to disable warp when obmc is used with a
      global motion neighbor.
      
      Change in BDRATE on cam_lowres
      gm + obmc enabled: 0.035%
      gm + obmc + wm enabled: -0.005%
      
      Change-Id: I1d6de75c7ead325cec31ed3748b5532f3658d8a7
      a036d86f
  32. 12 Apr, 2017 1 commit