1. 02 Oct, 2017 3 commits
  2. 30 Sep, 2017 1 commit
    • Rupert Swarbrick's avatar
      Add a new layout for HORZ/VERT_A/B partitions · 3dd33911
      Rupert Swarbrick authored
      This hides behind --enable-ext_partition_types_ab. When that flag is
      set, the mixed partitions change from
      
         +-+-+---+          +-+-+---+
         |   |   |          | | |   |
         |---+   |    to    | | |   |
         |   |   |          | | |   |
         +-+-+---+          +-+-+---+
      
      (that's PARTITION_VERT_A; other partitions change similarly).
      
      Since 128x32 and 32x128 block support hasn't yet been merged, this
      patch also temporarily disables these partitions for 128x128 blocks.
      
      Change-Id: Ic479c0fc129f590b8ad56d72dc98ba79ae1bd1cf
      3dd33911
  3. 29 Sep, 2017 6 commits
  4. 28 Sep, 2017 6 commits
    • Cheng Chen's avatar
      Make LOOPFILTER_LVL support segment · d8184dae
      Cheng Chen authored
      Experiment LOOPFILTER_LVL has 4 deblocking filter levels for:
      y plane horizontal, y plane vertical, u plane, and v plane.
      
      The patch supports segment updates for each of the four filter levels.
      
      Change-Id: I494e8d9ab67e37c5f6234b8d9db8e3e3abf70d52
      d8184dae
    • Rupert Swarbrick's avatar
      Don't work in TX64X64 blocks on a subsampled chroma plane · 4e7b7d6f
      Rupert Swarbrick authored
      With ext-partition and tx64x64 enabled, the encoder could choose
      TX_64X64 to encode the transform for a subsampled plane of a
      BLOCK_128X128 block. This broke an assumption in the nested loop in
      write_tokens_b and also caused bug 827 (with a rather cryptic
      failure).
      
      This patch changes get_vartx_max_txsize to ensure that the encoder and
      decoder don't think they can use TX_64X64 in this situation. It also
      adds a couple of assertions to the loop mentioned above so that if
      something comes unstuck it'll be much more obvious what went wrong.
      
      BUG=aomedia:827
      
      Change-Id: Ie093f2f20f6242949d68e950c8f95b100867ee17
      4e7b7d6f
    • Ryan's avatar
      fix one bug in the decoder header initization · dd8df163
      Ryan authored
      1. seg->temporal_update flag is only read when seg->update_map flag is
      set to 1 in the bit stream. in case update_map flag is different from frame
      to frame, the temporal_update flag will not be reset to 0 when
      update_map flag changed from 1 to 0. i.e, the previous temporal_update
      flag will be used in the later process. in the read_inter_segment_id
      function, temporal_update flag is used to read the segment id. it will
      cause bit stream parsing error.
      
      Change-Id: I663975bc84bbed7409d4f5dd1c1005480b2fbcf8
      dd8df163
    • Thomas Daede's avatar
      Remove unused bytes from uncompressed header. · 3e22da3d
      Thomas Daede authored
      Although they are called "sync codes", nothing is synchronized
      using them.
      
      Change-Id: I2dbd67daf9f4822438323212bb96cac489c38c5d
      3e22da3d
    • Ola Hugosson's avatar
      Add striped_loop_restoration experiment · 1e7f2d0c
      Ola Hugosson authored
      This experiment offset the filter tile grid 8 pixels upwards.
      Deblocked pixels (rather than CDEFed pixels) are used for the
      2 lines above and below the filter processing unit. The 8 pixel
      offset is the offset produced by deblock/cdef. This way the
      loop_restoration does not need additional line buffers in a
      single pass hardware implementation.
      
      Change-Id: I89e0831dc28413a5d3e02d7a426ce2885ab629d7
      1e7f2d0c
    • Rupert Swarbrick's avatar
      Move tile_cols/tile_rows calculation into common function · 5a010aac
      Rupert Swarbrick authored
      This is just a code cleanup, moving the calculation of cm->tile_rows
      and cm->tile_cols into get_tile_size, which is already calculating
      cm->tile_width and cm->tile_height. The patch also gets rid of a
      spurious AOMMIN and replaces it with an assertion.
      
      Change-Id: I46666c4a197ac26d4b3746d9ea6575dc4af0d570
      5a010aac
  5. 27 Sep, 2017 6 commits
    • Pavel Frolov's avatar
      Init cm->prev_frame before decoding gm params · 57c36e18
      Pavel Frolov authored
      This fixes global motion read/write mismatch.
      Minimal test case would be 3 encoded frames with:
          1) frame0: KEY frame
          2) frame1: INTER frame with refresh_frame_flags not 0x00 and
      not 0xFF, say 0x01 (refresh first slot)
          3) frame2: INTER frame with all reference indices equal to 3
      (i.e. no reference to frame1)
      
      When decoding frame2 decoder will use cm->prev_frame=frame1
      for gm params decoding, then switch to cm->prev_frame=frame0
      for the rest of the frame.
      This makes frame2 dependent on frame1 which is not used as reference.
      And also it is different from what encoder does.
      
      BUG=aomedia:750
      
      Change-Id: I42ba19c03d909286af12ba3149910693a12249e8
      57c36e18
    • 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
    • Dominic Symes's avatar
      MAX_TILE experiment: add explicit tiles · f58f111f
      Dominic Symes authored
      This patch is designed to complete the CONFIG_MAX_TILE experiment.
      It adds the following features:
      - Explicit tiles of same width can be signalled with command line --tile_width
      - Explicit tiles of same hieght can be signalled with command line --tile_height
      - max_tile now works with the depenedent horizontal tiles experiment
      - additional checking added to ensure maximum number of rows/columns <= 64
      - one fix to the tile group code for when the number of tiles is not a power of two
      
      Change-Id: I749a68fdb3dcdd8d1ced2b3558f3817e4b832c06
      f58f111f
    • Pavel Frolov's avatar
      Setup sb_size when decoding intra_only frame · ea3dd3aa
      Pavel Frolov authored
      This fixes decoder's capability to start decoding
      bitstream from non-KEY intra_only frame.
      
      BUG=aomedia:816
      
      Change-Id: Iecd5add418590119f59a51acd7208eb08cb17042
      ea3dd3aa
    • Sebastien Alaiwan's avatar
      Fix typo in comment · c4559cad
      Sebastien Alaiwan authored
      Change-Id: Id6f588876b1adf68abd8c17d7eef2223d552e457
      c4559cad
    • Cheng Chen's avatar
      LPF_SB: add filter step and tune threshold · f89ca3e1
      Cheng Chen authored
      Set filter step = 2, such that 3 bit can represent [-14, +14] filter
      level difference.
      
      Tune threshold for reusing filter level between previous and current
      superblock.
      
      Change-Id: I6f26377591f3e93f7c068e4aa4279ae9bc2c9522
      f89ca3e1
  6. 26 Sep, 2017 5 commits
    • Yushin Cho's avatar
      Disable palette coding if pvq is enabled · a8810391
      Yushin Cho authored
      PVQ has been broken again since the experiment flag for palette is removed
      in commit c6300aa1.
      
      As a fix, if PVQ is enabled then disable both of --tune-content=screen and
      automatic detection of screen and use of palette coding tool.
      
      Change-Id: Iea6bb042b4402163805c44dabfb3f4c05dfd4e23
      a8810391
    • Luc Trudeau's avatar
      [CFL] Store Reconstructed Luma for Intra In Inter · b05eeaef
      Luc Trudeau authored
      Like for intra block in intra frames, an extra call to
      txfm_rd_in_plane is added to the RDO of intra blocks in inter frames.
      This extra call is performed using the best parameters found during
      RDO and the reconstructed luma pixel are stored.
      
      Results on objective-1-fast (compared to CfL on Intra frames only)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2497 | -3.5526 | -3.5048 |  -0.2456 | -0.2392 | -0.2508 |    -1.4811
      
      https://arewecompressedyet.com/?job=cfl-no-inter%402017-09-13&job=cfl-inter%402017-09-13T14%3A13%3A13.918Z
      
      Change-Id: I70ea2c01859b6c55d7c3eb9680d492c0bfc2aad4
      b05eeaef
    • Cheng Chen's avatar
      Reorgnize loop filter range for superblock · 5589d71c
      Cheng Chen authored
      For each superblock, its filtering range is shifted up and left by
      8 pixels (half of the maximum loop filter length), such that
      estimation of deblocking filtering will not cross two superblocks.
      
      Change-Id: I82244b7c26ab8b2ac553037b3bb1fe1d82bf5704
      5589d71c
    • 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
  7. 23 Sep, 2017 4 commits
  8. 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
  9. 20 Sep, 2017 4 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
  10. 19 Sep, 2017 1 commit
  11. 18 Sep, 2017 1 commit
    • 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
  12. 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