1. 16 Oct, 2017 1 commit
  2. 13 Oct, 2017 2 commits
  3. 10 Oct, 2017 6 commits
    • Ryan's avatar
      soft enable new_multisymbol · f0e39196
      Ryan authored
      enable new_multisymbol by default since it has been enabled.
      
      Change-Id: I6df662c6ae949ac9f834f788ff93b12a1a1eff28
      f0e39196
    • Zoe Liu's avatar
      Clean up the debug code for frame_sign_bias · d38575f4
      Zoe Liu authored
      Change-Id: Ia4b25afaed5dbd48c8e68fe42a479d7ddb645876
      d38575f4
    • Cheng Chen's avatar
      Loop filtering after each superblock · 5ad5b289
      Cheng Chen authored
      The patch is to enable loop filtering for intra block copy.
      
      Apply loop filtering right after each superblock is encoded.
      Use a constant filter level for now. In future updates, the filter
      level should be optimized by LPF_SB and better guess value.
      
      Change-Id: I0a5797b5ba5384c00044a8ec4a495dc75aa0f3fe
      5ad5b289
    • Urvang Joshi's avatar
      horzonly-frame-superres: Apply to superres only. · 69fde2eb
      Urvang Joshi authored
      Plain resize is now unaffected by this flag. That is, plain resizing is
      performed for both width and height always.
      
      Change-Id: I652204d68ca5266f0a1a413927828038aa5dfdf6
      69fde2eb
    • Lester Lu's avatar
      lgt-from-pred: transforms based on prediction · 432012f6
      Lester Lu authored
      In this experiment, sharp image discontinuity in the predicted
      block is detected. Based on this discontinuity, we choose
      particular LGTs as row and column transforms.
      
      Bitstream syntax, entropy coding, and RD search for LGT are added.
      One binary symbol is used to signal whether LGT is used. This
      experiment can work independently with the lgt experiment.
      
      lowres: -0.414% for key frames, -0.151% overall
      midres: -0.413% for key frames, -0.161% overall
      
      Change-Id: Iaa2f2c2839c34ca4134fa55e77870dc3f1fa879f
      432012f6
    • Angie Chiang's avatar
      Add frame-level flag to turn on/off adapt_scan · 6dbffbf1
      Angie Chiang authored
      Change-Id: I7a73dbe72b618e795191cc31bc32e31ad99d8587
      6dbffbf1
  4. 09 Oct, 2017 2 commits
    • Rupert Swarbrick's avatar
      Catch invalid block sizes in bitstream · 415c8f1f
      Rupert Swarbrick authored
      There's a bitstream conformance requirement that says that any block
      must subsample to a valid block size with the current subsampling
      mode. For example, this means that BLOCK_4X8 is illegal if there is
      subsampling in only the horizontal direction (since there is no
      BLOCK_2X8).
      
      This patch checks the bitstream is conformant as it reads partition
      information in decodeframe.c
      
      BUG=aomedia:875
      
      Change-Id: I18139aa76d6f965282402edbb0b68959478a46c3
      415c8f1f
    • Zoe Liu's avatar
      Add encoder/decoder support to frame_sign_bias · 17af2748
      Zoe Liu authored
      Frame sign bias value will not be signaled in frame header. Instead,
      the sign bias of reference frames are derived from their corresponding
      frame offsets at both encoder and decoder.
      
      The tool of 'frame_sign_bias' is dependent of 'frame_marker'. Compared
      against baseline, the enabling of both tools obtains a small coding gain
      of -0.08 ~ -0.11% in BDRate over Google lowres/midres tests.
      
      Change-Id: I8d85dc427ced0b2152712ccf61be4be6068075b9
      17af2748
  5. 08 Oct, 2017 1 commit
  6. 07 Oct, 2017 1 commit
    • Urvang Joshi's avatar
      FRAME_SUPERRES: Rework to use scale factor of 8/D · de71d142
      Urvang Joshi authored
      Earlier, the superres scale was in the form of:
      N/16, where N ranged from 8 to 16.
      
      We change this to the form:
      8/D, where D ranges from 8 to 16.
      
      This helps on the decoder side, by making it possible to work on 8x8
      blocks at a time.
      
      Change-Id: I6c72d4b3e8d1c830e61d4bb8d7f6337a100c3064
      de71d142
  7. 06 Oct, 2017 2 commits
  8. 05 Oct, 2017 1 commit
  9. 04 Oct, 2017 2 commits
    • Rupert Swarbrick's avatar
      Catch invalid streams starting with intra-only frames · 5eb471c0
      Rupert Swarbrick authored
      This adds a check (and internal error on failure) to make sure that a
      stream that starts with an intra-only frame cannot refer to a slot
      that hasn't been written in a subsequent inter frame.
      
      BUG=aomedia:849
      
      Change-Id: I39a371bd38f53413187a64de1067f9ab8f00b833
      5eb471c0
    • Cheng Chen's avatar
      LOOPFILTER_LEVEL: add flexibility for EXT_DELTA_Q · 880166ab
      Cheng Chen authored
      When experiment LOOPFILTER_LEVEL is on, there're four base filter levels
      for each frame. This patch enables one to use one delta or four deltas
      to update corresponding filter levels for each superblock in
      EXT_DELTA_Q.
      
      1 bit per frame is sent through bitstream to select one or four deltas.
      Now, we hard code to use one delta.
      
      Change-Id: I9c61a035064fa81878b0575ad21664e2b22a6a45
      880166ab
  10. 03 Oct, 2017 4 commits
    • David Barker's avatar
      Fix global-motion + error-resilient-mode · d7c8bd51
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/21783
      changed things so that error-resilient frames use the default
      global motion parameters as a reference, rather than taking
      the reference from the previous frame.
      
      This was implemented by clearing out cm->prev_frame->global_motion
      when we have an error-resilient frame. Unfortunately, this causes
      an issue: if we have an error resilient frame which isn't stored
      into any reference slots, followed by a non-error-resilient frame,
      then both frames refer to the same prev_frame. The second frame
      then delta-codes against cm->prev_frame->global_motion, but
      this was reset to the default values by the intervening
      error-resilient frame!
      
      In order to allow the above case to work as intended, expand the
      default warp parameter set to a full WarpedMotionParams struct,
      and use that as the reference for error-resilient frames.
      
      This also allows us to remove set_default_warp_params, as we
      can now just copy directly from default_warp_params.
      
      Change-Id: I9645615db2700c1d3810e6e42f4f1da626fcd5e3
      d7c8bd51
    • David Barker's avatar
      Deduplicate use_reference_buffer/frame_id_numbers_present_flag · 5e70a114
      David Barker authored
      These two flags serve essentially the same purpose, so we can
      simplify down to just having one flag. Since the
      frame_id_numbers_present_flag is older and listed in the
      reference-buffer design doc, this is the one we'll keep.
      
      Note that, previously, frame_id_numbers_present_flag was only
      sent when CONFIG_OBU was enabled - otherwise it was always set
      to 1. On the other hand, use_reference_buffer was always signalled
      so that allowed us to disable frame ids even without CONFIG_OBU.
      
      In order to keep the ability to disable frame IDs without
      CONFIG_OBU, we send a "real" sequence header (ie, with the same
      data as in CONFIG_OBU) in-line within the uncompressed header.
      This is sent every keyframe and every intra-only frame, just
      as the use_reference_buffer flag was before this patch.
      
      BUG=aomedia:853
      
      Change-Id: I4bb6c7a222aeddfb6d3737a39d10782d32ee2eee
      5e70a114
    • Thomas Davies's avatar
      Fix compile error with NEW_MULTISYMBOL and RECT_TX_EXT. · e715483c
      Thomas Davies authored
      No need to read any of the compressed header.
      
      BUG=aomedia:846
      
      Change-Id: I1e7c2fc3d22621075cf9420b799ddc8c778c1564
      e715483c
    • Cheng Chen's avatar
      Make LOOPFILTER_LEVEL support EXT_DELTA_Q · a97394f7
      Cheng Chen authored
      Before LOOPFILTER_LEVEL, there's one filter level,
      now we have four filter levels for y plane vertical,
      y plane horizontal, u plane and v plane.
      
      This patch enables experiment LOOPFILTER_LEVEL to support per
      superblock loop filter level update.
      
      Change-Id: Ib11a1564471eb3076c26e73e5cdf7b5a3045ef97
      a97394f7
  11. 02 Oct, 2017 5 commits
  12. 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
  13. 29 Sep, 2017 6 commits
  14. 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