1. 26 Sep, 2017 2 commits
    • Cheng Chen's avatar
      Add threshold to superblock filter level selection · c7855b1a
      Cheng Chen authored
      Signal one bit to indicate whether current superblock reuses filter
      level of previous superblock.
      Try filtering and compute sse using previous filter level and search
      the best possible filter level. If their diff is less than predefined
      threshold, current superblock reuses previous level. Otherwise,
      signal the best filter level.
      
      Change-Id: Ibf125860883b774ef2464b62bb8b799b48258c64
      c7855b1a
    • Debargha Mukherjee's avatar
      Add experiment to restrict compressed header · 2eada612
      Debargha Mukherjee authored
      The compressed header is now used only when the refresh
      type is set as forward, i.e. in error resilience and
      frame parallel modes. As long as backward updates are
      used the header is disabled thereby saving bits.
      
      Change-Id: Iee9f66ffbd30ef3552ea41b75e4b51537cd9ff97
      2eada612
  2. 24 Sep, 2017 1 commit
  3. 23 Sep, 2017 4 commits
  4. 22 Sep, 2017 2 commits
    • Hui Su's avatar
      Remove probablity model for tx type · 98b0b3e9
      Hui Su authored
      It's not being used anymore, replaced by the CDF model.
      The counters are moved under the entropy-stats experiment, so that they
      can be used to tune the default CDF values.
      
      Change-Id: I50cb170c4c8699cf7317fd77853b3fedf2342d3e
      98b0b3e9
    • Hui Su's avatar
      Refactor the ext-tx experiment · ddbcde28
      Hui Su authored
      Use common structure for inter and intra tx type information when
      possible.
      
      Change-Id: I1fd3bc86033871ffbcc2b496a31dca00b7d64b31
      ddbcde28
  5. 20 Sep, 2017 5 commits
    • Cheng Chen's avatar
      Search for deblocking filter level for superblock · f572cd30
      Cheng Chen authored
      Search and pick filter level for each superblock after the entire
      frame has been encoded. And then apply loop filtering using
      selected filter levels.
      
      Now it can't work with LOOPFILTER_LEVEL. Y, U, V planes share the
      same filter level.
      
      Per superblock, filter levels are signaled via bitstream.
      
      Future work: move selecting filter level into each superblock
      rather than wait for the whole frame encoded.
      
      Change-Id: I46cb994ec4866abb0456146f7c3cae8813c1d52e
      f572cd30
    • Soo-Chul Han's avatar
      initial implementation of HLS based on R18 · 65c00ae1
      Soo-Chul Han authored
      Change-Id: I78bb38e3d61d74442278bd5ed1c4f695b7c8e24a
      65c00ae1
    • David Barker's avatar
      new-multisymbol: Don't signal ext-comp-refs probs · 037ee412
      David Barker authored
      Currently, when new-multisymbol and ext-comp-refs are
      both enabled, the comp_ref_type_prob and uni_comp_ref_prob
      arrays are forward updated in the compressed header, but
      their values are never used.
      
      We can save a tiny bit of space by not signalling the
      forward updates at all; as a side benefit, we can wrap
      the whole of read_frame_reference_mode_probs() in
      a #if !CONFIG_NEW_MULTISYMBOL block.
      
      Note: It seems the encoder already does this; I think
      the reason it doesn't cause mismatches is because we
      effectively pad the compressed header out to a full byte,
      and av1_diff_update_prob() reads a bit with a very high
      probability of being 0.
      
      Change-Id: Ia1fca05ee498609c98c7ea1f89578f6783357d7f
      037ee412
    • Dominic Symes's avatar
      Add the max-tile tool with uniform tile support · db5d66fe
      Dominic Symes authored
      This adds the tool CONFIG_MAX_TILE
      Uniform tiles are implemented using power of two number of rows or columns.
      Maximum number of rows or columns is 64
      Explicit tiles will follow in a later commit once the command line API is updated for this
      
      Change-Id: Ia8d22e7f4aa779448211496c644937afdf037228
      db5d66fe
    • Luc Trudeau's avatar
      [CFL] CfL for Intra frames only · a66a2cb2
      Luc Trudeau authored
      This commit serves as a baseline to test CfL in video sequences. This
      starting baseline uses CfL only in intra frames. This allows to measure
      the contribution of CfL in intra frames over the whole video sequence.
      
      Results on Objective-1-fast (Compare to master with CfL disabled)
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1869 | -2.4708 | -1.9988 |  -0.1725 | -0.1390 | -0.1453 |    -0.9564
      
      https://arewecompressedyet.com/?job=master%402017-09-13&job=cfl-no-inter%402017-09-13
      
      Change-Id: I20b2f239455b43e977588dc738b21e0508ad9333
      a66a2cb2
  6. 19 Sep, 2017 1 commit
  7. 18 Sep, 2017 2 commits
    • David Barker's avatar
      Save global motion params even in error-resilient-mode · cba7da74
      David Barker authored
      The error-resilient-mode flag is currently set per frame,
      so we can encode a non-error-resilient frame immediately
      after an error-resilient frame.
      
      As of https://aomedia-review.googlesource.com/c/21783 , this
      case causes the decoder to read uninitialized memory. This
      happens because the error-resilient frame no longer sets up
      cm->cur_frame->global_motion. Then, on the non-error-resilient
      frame, that is renamed to cm->prev_frame->global_motion and we
      try to use it as a reference for delta encoding.
      
      Fix this by always writing cm->cur_frame->global_motion.
      
      Change-Id: I0d4f13bf413ca15da210e06d5ce1780331c005da
      cba7da74
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: support EXT_COMP_REFS signaling. · 0fbd2b79
      Thomas Davies authored
      Change-Id: Ic29bac4cd00a009e4a5a607ecc5596fa53bb1c1f
      0fbd2b79
  8. 16 Sep, 2017 1 commit
    • Hui Su's avatar
      intrabc: replace prob with cdf · 6c8584f6
      Hui Su authored
      Improves keyframe coding by 0.1% on the screen_content testset.
      
      Change-Id: I5793a67eaae21010ef200038af99ebb9029fc770
      6c8584f6
  9. 13 Sep, 2017 4 commits
  10. 12 Sep, 2017 1 commit
    • Debargha Mukherjee's avatar
      Ensure consistent border extension before LR · fc9f3ccd
      Debargha Mukherjee authored
      Before LR the border extension needs to be consistent.
      Otherwise there will be inconsistency at the frame boundaries
      causing mismatches.
      
      BUG=aomedia:742
      BUG=aomedia:744
      BUG=aomedia:745
      
      Change-Id: I5b0c51aa1493c58f7acc706bf686ce711eadd75d
      fc9f3ccd
  11. 11 Sep, 2017 5 commits
    • Sarah Parker's avatar
      Tokenize and write mrc mask · 99e7daa2
      Sarah Parker authored
      This allows a mask for mrc-tx to be sent in the bitstream for
      inter or intra 32x32 transform blocks. The option to send the mask
      vs build it from the prediction signal is currently controlled with
      a macro. In the future, it is likely the macro will be removed and it
      will be possible for a block to select either method. The mask building
      functions are still placeholders and will be filled in in a followup.
      
      Change-Id: Ie27643ff172cc2b1a9b389fd503fe6bf7c9e21e3
      99e7daa2
    • Jingning Han's avatar
      Use per tile model update for coeff_br coding · e29c9260
      Jingning Han authored
      Change-Id: Ie52d52bc25e3fdfdea877349215431d8edc064a3
      e29c9260
    • Jingning Han's avatar
      Fix base range counter index in lv-map decoding · 2e40574e
      Jingning Han authored
      Fix the index order of br_idx.
      
      Change-Id: I55acda816d1ec33c25ca4c31b09976f5e6f9c562
      2e40574e
    • Soo-Chul Han's avatar
      add SEG_LVL_ZEROMV · a752d1d5
      Soo-Chul Han authored
      Change-Id: Icd04302886a4d12890d04f9f15563169a91e3a0d
      a752d1d5
    • Steinar Midtskogen's avatar
      CDEF: Do not filter chroma if subsampling_x != subsampling_y · 1c1161f1
      Steinar Midtskogen authored
      Since CDEF looks uses the luma direction for chroma, CDEF would have
      to change significantly to support formats like 4:2:2.  The limited
      use of such formats does not justify the complexity to support this,
      so the simple solution is to mandate that the chroma planes aren't
      filtered if subsampling_x != subsampling_y.  Most of the visual gain
      is in luma, anyway.
      
      This also means that the chroma strengths and chroma skip condition
      shall not be sent if subsampling_x != subsampling_y.
      
      BUG=aomedia:720
      
      Change-Id: I35c184a6fe0908ae0fee1e74494b6904fa9a3c82
      1c1161f1
  12. 10 Sep, 2017 2 commits
    • Jingning Han's avatar
      Rework base range entropy coding in level map system · 87b01b5a
      Jingning Han authored
      Replace the truncated geometric distribution model with the grouped
      leaves structure for more efficient probability modeling.
      Each group has its own Geometric distribution
      
      This give us 0.2% gain on lowres
      
      Change-Id: If5c73dd429bd5183a8aa81042f8f56937b1d8a6a
      87b01b5a
    • Debargha Mukherjee's avatar
      Reduce/Eliminate line buffer for loop-restoration. · e168a783
      Debargha Mukherjee authored
      This patch forces the vertical filtering for the top and bottom
      rows of a processing unit for the Wiener filter to not use border
      more than what is set in the WIENER_BORDER_VERT macro.
      This macro is currently set at 0 to eliminate line buffer completely,
      but it could be increased to 1 or 2 to use limited line buffers
      if the coding efficiency is affected too much with a 0 line-buffer.
      
      Also, for the sgr filter we added the option of using overlapping
      windows horizonttally and vertically to improve coding efficiency.
      The vertical border used is set by the SGRPROJ_BORDER_VERT
      macro, while the horizontal border can be set by the
      SGRPROJ_BORDER_HORZ macro set at 2, the max needed. Currently we do not
      recommend changing SGRPROJ_BORDER_HORZ below 2.
      
      The overall line buffer requirement for LR is twice the max of
      WIENER_BORDER_VERT and SGRPROJ_BORDER_VERT.
      Currently both are set as 0, eliminating line buffers completely.
      
      Also this patch extends borders consistently before CDEF / LR.
      
      Change-Id: Ie58a98c784a0db547627b9cfcf55f018c30e8e79
      e168a783
  13. 09 Sep, 2017 2 commits
  14. 08 Sep, 2017 1 commit
    • Hui Su's avatar
      palette-delta-encoding: remove dependency on above SB row · 3748bc2a
      Hui Su authored
      Do not refer to above MB when on SB boundary. This helps to
      reduce line buffer.
      
      Keyframe coding gain on the screen_content testset drops from
      1.28% to 1.20%.
      
      Change-Id: I4b06fd137d6c9ea68d618035381f09d0746ba9e8
      3748bc2a
  15. 07 Sep, 2017 4 commits
    • David Barker's avatar
      Don't read global motion for intra-only frames · d3bbfee8
      David Barker authored
      Save bits by not encoding global motion data when there's no
      previous frame to use as a reference. Use the same logic
      as for using the previous frame's motion vectors - ie, we don't
      read global motion information when the current frame is
      intra-only or when using error-resilient mode.
      
      This also fixes an undefined behaviour / segfault bug - see
      https://bugs.chromium.org/p/aomedia/issues/detail?id=731 for
      details
      
      BUG=aomedia:731
      
      Change-Id: Icca90a1bccafd06de8a4056ca5353318fce416cb
      d3bbfee8
    • Wei-Ting Lin's avatar
      ncobmc-adapt-weight: add bitstream to support warped motion · 07ed3ab2
      Wei-Ting Lin authored
      Change-Id: I0e9df3719e5f9a55e1386afe44851d1707e2e01b
      07ed3ab2
    • Rupert Swarbrick's avatar
      Remove repetition in decode_partition · 668d3d99
      Rupert Swarbrick authored
      The callsites to decode_block and decode_partition in the body of
      decode_partition are rather noisy with code that is enabled or
      disabled by config flags, so it's hard to see what is fundamentally a
      simple recursion.
      
      This patch moves all that cruft into a pair of locally defined
      preprocessor macros (DEC_BLOCK and DEC_PARTITION) to simplify
      things.
      
      There's no diff in disassembled code when compiling before and after
      the patch.
      
      Change-Id: Ie08db263a9874e2c566c758e8f3a51d131b1b80b
      668d3d99
    • David Barker's avatar
      Fix an edge case in tile group decoding · 1a191125
      David Barker authored
      As of patch https://aomedia-review.googlesource.com/c/20220 ,
      it is no longer always the case that tile_rows == (1 << log2_tile_rows)
      and tile_cols == (1 << log2_tile_cols). This exposed an inconsistency
      in the tile-group decoding:
      
      When reading the first tile group in a frame, we read
      (log2_tile_rows + log2_tile_cols) bits each for the tile group
      start and length, but when reading later tile groups we read
      get_msb(tile_rows * tile_cols) bits. But now there are edge cases
      where those values differ! Since the encoder always uses
      (log2_tile_rows + log2_tile_cols) bits, this leads to mis-parsing
      the bitstream.
      
      Fix this by moving the decode logic to one function, which always
      reads (log2_tile_rows + log2_tile_cols) bits. As a bonus, this gives
      us one place to check other invariants, eg. that tile groups can't
      run off the end of the frame.
      
      Change-Id: I83b24314526b6055300b70b0f1cdce038e6b23dc
      1a191125
  16. 06 Sep, 2017 3 commits