1. 22 Sep, 2017 1 commit
    • 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
  2. 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
  3. 19 Sep, 2017 1 commit
  4. 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
  5. 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
  6. 13 Sep, 2017 4 commits
  7. 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
  8. 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
  9. 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
  10. 09 Sep, 2017 2 commits
  11. 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
  12. 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
  13. 06 Sep, 2017 5 commits
  14. 05 Sep, 2017 5 commits
    • Wei-Ting Lin's avatar
      ncobmc-adapt-weight: applying at the encoder as new motion mode · 01d4d8f2
      Wei-Ting Lin authored
      Change-Id: I1cd1197b48a3315fe4f44578b80634be73de17a3
      01d4d8f2
    • Rupert Swarbrick's avatar
      Fix tile height/width calculation · 9a3640d8
      Rupert Swarbrick authored
      In the bitstream in bug 709, the frame has a width of 13318 mi
      units. This rounds up to 13328 mi units (when rounding to a whole
      number of max superblocks) but then the shift right by log2_tile_cols
      gives floor(13328/32) = floor(416.5) = 416. Of course 32*416 = 13312
      which is less than 13318.
      
      This patch moves the <mi_cols, log2_tile_cols> -> tile_width
      calculation (and the equivalent calculation for tile_height) into a
      common function which gets the rounding right.
      
      BUG=aomedia:709
      
      Change-Id: If5e8e6b7a3c6f3d336cda9edd94a17595eaf5406
      9a3640d8
    • Rupert Swarbrick's avatar
      Allow tile_rows/tile_cols to not be a power of 2 · 940942ba
      Rupert Swarbrick authored
      The example bitstream in bug 710 shows what might go on. This has a
      frame with mi_cols=540 and log2_tile_cols=3. But 540/8 = 67.5, which
      gets rounded up to give a tile_width of 5*16=80. However, 540/80 =
      6.75 which means that the frame finishes somewhere in the middle of
      tile 7 (and tile 8 is completely empty).
      
      This patch clamps tile_rows/tile_cols to ensure that can't happen. The
      bitstream still signals ceil(log2(tile_<rows/cols>)) so there's no
      change there.
      
      BUG=aomedia:710
      
      Change-Id: Idfad658ef59cf71674100f5e74bd53dd192c6a84
      940942ba
    • Thomas Davies's avatar
      NEW_MULTISYMBOL: adapt palette mode coding. · 59f92319
      Thomas Davies authored
      Use adaptive CDFs for coding the palette mode.
      
      Change-Id: Iadbccfea4f4a38f3037814a609adf3f3ae2c835d
      59f92319
    • Jonathan Matthews's avatar
      Reset delta_lf_present_flag as required · a48b1e68
      Jonathan Matthews authored
      BUG=aomedia:721
      
      Change-Id: Ic6e767b1c11399379391a2ba92e3ec53dd0a2be0
      a48b1e68
  15. 04 Sep, 2017 1 commit