1. 24 Oct, 2017 1 commit
    • Rupert Swarbrick's avatar
      Expose av1_loop_restoration_filter_unit in restoration.h · dd6f09ab
      Rupert Swarbrick authored
      This patch also does a certain amount of rejigging for loop
      restoration coefficients, grouping the information for a given
      restoration unit into a structure called RestorationUnitInfo. The end
      result is to completely dispense with the RestorationInternal
      structure.
      
      The copy_tile functions in restoration.c, together with those
      functions that operate on a single stripe, have been changed so that
      they take pointers to the top-left corner of the area on which they
      should work, together with a width and height.
      
      The same isn't true of av1_loop_restoration_filter_unit, which still
      takes pointers to the top-left of the tile. This is because you
      actually need the absolute position in the tile in order to do striped
      loop restoration properly.
      
      Change-Id: I768c182cd15c9b2d6cfabb5ffca697cd2a3ff9e1
      dd6f09ab
  2. 23 Oct, 2017 1 commit
  3. 21 Oct, 2017 2 commits
  4. 20 Oct, 2017 2 commits
  5. 19 Oct, 2017 3 commits
    • Cheng Chen's avatar
      Soft enable loopfilter_level · 9ac7a0f3
      Cheng Chen authored
      Enable it as it is adopted.
      Fix some compile warnings and compatibilities.
      
      Change-Id: If324e749e27ffa42f69a19ad5ebb39bc493b33ec
      9ac7a0f3
    • David Barker's avatar
      Fix interaction of loopfilter-level + obu · 3dffa270
      David Barker authored
      When obu is enabled, we should only apply look filtering after
      the frame is fully decoded. This was not working correctly with
      the combination of loopfilter-level + obu; move an 'if' condition
      around in order to fix this.
      
      Change-Id: I0f06d81663ea1d91f4e4b251b1eaf4bda70a8770
      3dffa270
    • Rupert Swarbrick's avatar
      Remove partial_frame support from loop restoration · 146a060a
      Rupert Swarbrick authored
      This flag comes from the loop filter's speed features and (I think)
      tells the encoder to make decisions about the filter by looking at a
      narrow strip in the middle of the frame.
      
      That's reasonable enough, but doesn't make any sense for loop
      restoration, where we were calling av1_loop_restoration_frame from
      pickrst.c in order to calculate what restoration parameters to use for
      a given restoration unit (which might not be in the narrow strip in
      the middle!)
      
      As it turns out, the LPF_PICK_FROM_SUBIMAGE method is never actually
      signalled in the reference encoder, which is presumably why we haven't
      spotted this before.
      
      Change-Id: I745e2eab873c0b33920caca40e338af9d078d25e
      146a060a
  6. 18 Oct, 2017 2 commits
  7. 17 Oct, 2017 3 commits
    • Frederic Barbier's avatar
      Ensure that diff_len is lower than frame_id_length · 4d5d90ed
      Frederic Barbier authored
      A frame should be referenced with a unique delta,
      which is not guaranteed when diff_len is greater than frame_id_length.
      
      Otherwise, it's possible to get into a situation where a frame
      can be referenced with many different delta_frame_id values,
      although the decoder only accepts one of them.
      
      Avoid ambiguities when delta-referencing a frame, and
      avoid wasting bits by using a coding enforcing the restriction.
      
      Change-Id: If7c611c9b6ec69662c5af540ade59f08bacda2ba
      4d5d90ed
    • Frederic Barbier's avatar
      Hide coding details of fid_length/delta_fid_length · e83fcfeb
      Frederic Barbier authored
      Let the writing/parsing logic do the +7/+2 offseting,
      and let the rest of the code directly manipulate the actual values.
      
      Change-Id: I460d5bf18446c028f326cb747b3c26c8d451637c
      e83fcfeb
    • Hui Su's avatar
      Remove max_tx_size in MACROBLOCKD · a4808100
      Hui Su authored
      This variable is unused.
      
      Change-Id: I8ee9c588898417e956e7cd7993ff54cbb885285e
      a4808100
  8. 16 Oct, 2017 4 commits
  9. 13 Oct, 2017 2 commits
  10. 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
  11. 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
  12. 08 Oct, 2017 1 commit
  13. 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
  14. 06 Oct, 2017 2 commits
  15. 05 Oct, 2017 1 commit
  16. 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
  17. 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
  18. 02 Oct, 2017 1 commit