1. 27 Jun, 2017 1 commit
    • Todd Nguyen's avatar
      Add experiment bgsprite · 302d0970
      Todd Nguyen authored
      Work in progress to generate ARF with stitched background image.
      
      Change-Id: I2fea75bbe5ac6f713f53eb5825776dadfc1d98c5
      302d0970
  2. 22 Jun, 2017 1 commit
  3. 21 Jun, 2017 3 commits
    • Debargha Mukherjee's avatar
      Add chorma tilesize option in loop-restoration · 84f567c7
      Debargha Mukherjee authored
      Adds an option bit in the bitstream syntax to allow chroma to
      have restoration tilesize that is coupled to luma based on
      subsmapling of the color components.
      
      This is meant to ease encoder hardware implementation.
      
      Change-Id: Ic3cc2b68c0f33701ed3ff2fe19cf57cd864da67f
      84f567c7
    • Timothy B. Terriberry's avatar
      cb4x4: Move sub-4X4 block sizes behind chroma flags. · 81ec2619
      Timothy B. Terriberry authored
      cb4x4 itself should not require these sizes.
      
      This simplifies compatibility with other experiments, since we can
      first make them work with cb4x4 (which is now on by default), and
      then worry about chroma_sub8x8 and chroma_2x2 (which is not) in
      separate steps.
      
      Encoder and decoder output should remain unchanged.
      
      Change-Id: Iff2a5494cab3b7d96f881e8bd9cd4bf18c817cfa
      81ec2619
    • Fergus Simpson's avatar
      Use last_show_frame in use_prev_frame_mvs calc · 2b4ea11a
      Fergus Simpson authored
      Without tempmv-signaling configured, using the previous frame's MVs
      requires that the last frame was a show frame. With tempmv-signaling
      configured, cm->show_last_frame is not checked when calculating
      use_prev_frame_mvs. This patch adds that check and resolves mismatches
      seen with random resizing and random superres.
      
      Includes a couple fixes too - cm's last_width, last_height, and
      last_show_frame were updated under different conditions. Now they're all
      updated at the same time.
      
      Change-Id: Ibdfb196cb6e9d002fd57cb4df10a899b60faac00
      2b4ea11a
  4. 19 Jun, 2017 3 commits
    • Timothy B. Terriberry's avatar
      encoder: Remove 64x upsampled reference buffers · 5d24b6f0
      Timothy B. Terriberry authored
      They do not handle border extension correctly (interpolation and
      border extension do not commute unless you upsample into the
      border), nor do they handle crop dimensions that are not a multiple
      of 8 (the upsampled version is not sufficiently large), in addition
      to using massive amounts of memory and being a criminal waste of
      cache (1 byte used for every 8 bytes fetched).
      
      This commit reimplements use_upsampled_references by computing the
      subpixel samples on the fly. This implementation not only corrects
      the border handling, but is also faster, while maintaining the
      same quality.
      
      HL AWCY results are basically noise:
          PSNR | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
        0.0188 |   0.0187 | 0.0045 |  0.0063 |     0.0228
      
      Change-Id: I7527db9f83b87a7bb8b35342f7e6457cd0bef9cd
      5d24b6f0
    • Debargha Mukherjee's avatar
      Fix a bug for non 420 formats and some refactoring · 887069f3
      Debargha Mukherjee authored
      BUG=aomedia:607
      
      Change-Id: I5a5fb893f0237e7ca6e0d807e825f8d4e26949b2
      887069f3
    • Zoe Liu's avatar
      Add new coding tool of ext-comp-refs · c082bbcb
      Zoe Liu authored
      The tool of ext-comp-refs adds the uni-directional compound reference
      prediction. In details, 3 pairs of uni-direcitonal compound references
      are added for the comp ref prediction:
      (LAST_FRAME, LAST2_FRAME),
      (LAST_FRAME, GOLDEN_FRAME), and
      (BWDREF_FRAME, ALTREF_FRAME).
      
      This new tool of ext-comp-refs will eventually overwrite
      one-side-compound and have the two coding tools to merge to one.
      
      It achieves -0.35 ~ -0.55% coding gains in BDRate, compared against
      AV1 baseline with the default experiments on, but without
      one-sided-compound. It achieves -0.2% ~ -0.3% coding gains when
      one-sided-compound is on. It achieves larger gains on higher
      resolution.
      
      Change-Id: Icbdb16e97b96aaebaf2213f5f72d5331e2e358eb
      c082bbcb
  5. 16 Jun, 2017 2 commits
    • Timothy B. Terriberry's avatar
      encoder: Fix scale_and_extend_frame() for non-4:2:0 · 6d99b21b
      Timothy B. Terriberry authored
      The code to pre-scale reference frames was hardcoded to only work
      for 4:2:0. This makes it work for 4:2:2, 4:4:0, and 4:4:4, also.
      
      It also eliminates the special case for a fourth plane, based on the
      assert above that the total number of planes is no more than three.
      
      Change-Id: I79870d2d11bfc3b6e2e73c48a9ba679bffab186f
      6d99b21b
    • Fergus Simpson's avatar
      Unify resize and superres denominator constants · bfbf6a59
      Fergus Simpson authored
      RESIZE_SCALE_DENOMINATOR and SUPERRES_SCALE_DENOMINATOR were two
      constants with the same value that did essentially the same thing.
      
      This patch merges the two into SCALE_DENOMINATOR for simplicity's sake.
      
      Change-Id: I252a9b7f89f10d77bdb0c3cf2d67d31d337afa4b
      bfbf6a59
  6. 15 Jun, 2017 3 commits
    • Sebastien Alaiwan's avatar
      Cleanup debug trace · 2e5933f5
      Sebastien Alaiwan authored
      Change-Id: I9158a54b80cf76346356e8dba90ee37f80808bf5
      2e5933f5
    • Debargha Mukherjee's avatar
      Unify and clean up resize arguments · 29e40a65
      Debargha Mukherjee authored
      Unifies the command line arguments for resize and superes.
      Removes resize arguments that are currently unused.
      
      Change-Id: I1362dffceb8257cee539f92679d1e8d79df08e66
      29e40a65
    • Fergus Simpson's avatar
      frame_superres: Add aomenc argument · c4e78942
      Fergus Simpson authored
      Adds "superres-mode" and "superres-numerator" arguments to configure
      superres scaling.
      
      There are only two modes right now: SUPERRES_FIXED and SUPERRES_DYNAMIC.
      0 sets the fixed mode and 1 sets the dynamic mode.
      
      For the fixed mode superres will scale to the provided numerator where
      possible. The cumulative scale change over resizing and superres is
      limited to 1/2, so it may have to back off.
      
      For the dynamic mode, the provided numerator will be used as the initial
      numerator. Asides from that it's just random for now.
      
      Change-Id: Ibae01c77abba2599fbf51096459d09ddca458d4f
      c4e78942
  7. 14 Jun, 2017 1 commit
  8. 13 Jun, 2017 1 commit
    • Fergus Simpson's avatar
      Make loop-restoration compatible w/ frame_superres · 9cd57cf8
      Fergus Simpson authored
      There were several places where loop_restoration used the encoded width
      and height while superres was active. This patch changes it to use the
      upscaled width and height, since loop_restoration is supposed to occur
      after superres has done its upscaling.
      
      Change-Id: I2b9bbb06b5370618758bf81d8eb63f2eef26af80
      9cd57cf8
  9. 12 Jun, 2017 4 commits
    • Fergus Simpson's avatar
      frame_superres: Fix bad assert · abd4343a
      Fergus Simpson authored
      Commit 12311 had a misplaced assert set that was causing superres debug
      runs to fail. The asserts just needed to be moved to where they were
      relevant to fix the issue.
      
      Change-Id: Ic370686c7156fcaf9380d8d8fd9d35b892d77e46
      abd4343a
    • Fergus Simpson's avatar
      frame_superres: Post encode/decode upscaling · d2bcbb56
      Fergus Simpson authored
      This patch implements the post-encode and post-decode upscaling for the
      frame superresolution experiment to work.
      
      Upscaling happens after cdef and before loop restoration.
      
      For now, this patch forces on random-superres.
      
      The patch also cleans up some broken rate control hooks from VP9
      days, to be brought back later when the resize and superres tools
      are stable.
      
      Change-Id: If0a8f69224dfaa0f4ae7703bd429ea2af953c7a6
      d2bcbb56
    • Zoe Liu's avatar
      Add encoder/decoder support for var-refs · 7b1ec7a9
      Zoe Liu authored
      Check the availability of the reference frames at the frame level at
      both encoder and decoder, and if a reference frame is not available
      for a specific video frame, remove the signaling of such reference
      frame info at the block level.
      
      This patch adds the consideration of the bit saving inside the RD
      optimization loop.
      
      Change-Id: I4c22f1b843b21c7d2b47e118c99c3ad615a3d4e4
      7b1ec7a9
    • Steinar Midtskogen's avatar
      Speed up CDEF parameter selection for cpu-used > 0 · b1555c93
      Steinar Midtskogen authored
      High delay cpu-used=4
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
       0.0579 |  0.1380 | -0.1975 |   0.0361 |  0.0226 |  0.0072 |     0.0470
      
      Low delay cpu-used=4
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1016 | -0.0695 |  0.1013 |  -0.1324 | -0.0903 | -0.1260 |    -0.1710
      
      Change-Id: I5a66a1ffc2d1fb2a203065b7fbb2fd2bd2b281ad
      b1555c93
  10. 02 Jun, 2017 1 commit
    • Jingning Han's avatar
      Resolve extremely large stack alloc in rdopt · d064cf03
      Jingning Han authored
      Move the large stack allocation from stack initialization to
      dedicated mem space. This resolves the extremely large stack issue
      when ext-partition, motion-var, and high bit-depth are all turned
      on.
      
      BUG=aomedia:415
      
      Change-Id: I85b77bbc6429093fcb0152176d9e237087d6bbd8
      d064cf03
  11. 31 May, 2017 2 commits
  12. 30 May, 2017 1 commit
  13. 29 May, 2017 1 commit
  14. 25 May, 2017 1 commit
  15. 24 May, 2017 1 commit
    • David Barker's avatar
      ext-inter: Further cleanup · f19f35f7
      David Barker authored
      * Rename the 'masked_compound_*' functions to just 'masked_*'.
        The previous names were intended to be temporary, to distinguish
        the old and new masked motion search pipelines. But now that the
        old pipeline has been removed, we can reuse the old names.
      
      * Simplify the new ext-inter compound motion search pipeline
        a bit.
      
      * Harmonize names: Rename
        aom_highbd_masked_compound_sub_pixel_variance* to
        aom_highbd_8_masked_sub_pixel_variance*, to match the naming of
        the corresponding non-masked functions
      
      Change-Id: I988768ffe2f42a942405b7d8e93a2757a012dca3
      f19f35f7
  16. 23 May, 2017 1 commit
    • David Barker's avatar
      ext-inter: Delete dead code · 0f3c94e1
      David Barker authored
      Patches https://aomedia-review.googlesource.com/c/11987/
      and https://aomedia-review.googlesource.com/c/11988/
      replaced the old masked motion search pipeline with
      a new one which uses different SAD/SSE functions.
      This resulted in a lot of dead code.
      
      This patch removes the now-dead code. Note that this
      includes vectorized SAD/SSE functions, which will need
      to be rewritten at some point for the new pipeline. It
      also includes the masked_compound_variance_* functions
      since these turned out not to be used by the new pipeline.
      
      To help with the later addition of vectorized functions, the
      masked_sad/variance_test.cc files are kept but are modified
      to work with the new functions. The tests are then disabled
      until we actually have the vectorized functions.
      
      Change-Id: I61b686abd14bba5280bed94e1be62eb74ea23d89
      0f3c94e1
  17. 20 May, 2017 1 commit
  18. 19 May, 2017 3 commits
    • Fergus Simpson's avatar
      frame_superres: Refactor pre-encode frame size set · bc189939
      Fergus Simpson authored
      Before this commit set_frame_size decided on the frame size to use and
      then set it. It has been changed to just take an arbitrary size to make
      it more flexible.
      
      The decision of what size to use has been moved to the new
      set_scaled_size and existing av1_calculate_superres_size.
      
      setup_frame_size implements the old logic of getting the scaled size,
      then superres size, then setting the frame to use it.
      
      This change will make post-encode upscaling possible using
      set_frame_size since it can now be given a target resolution.
      
      Change-Id: I2f0f20740a54f751bc9963f279d6bcfdfb2722c2
      bc189939
    • Fergus Simpson's avatar
      frame_superres: Set superres scale to 1:1 at init · dac6aff9
      Fergus Simpson authored
      The superres scale was not initialized correctly, which prevented
      regular resizing if CONFIG_FRAME_SUPERRES was set. This patch
      initializes superres scaling to 1:1 so it won't interfere with anything
      else.
      
      Change-Id: I9e3c89e91a4eb66146b9b924e8c19d0ed44a8dc4
      dac6aff9
    • Fergus Simpson's avatar
      resize-refactor: Make av1_set_size_literal use int · 0a30c882
      Fergus Simpson authored
      av1_set_size_literal took unsigned ints as its size inputs. This was
      inconsistent with elsewhere in the code base so this change makes it
      take signed ints instead.
      
      Change-Id: I5f39f813714f5d6cb1fc93f928f33b3633b653ec
      0a30c882
  19. 18 May, 2017 1 commit
    • David Barker's avatar
      ext-inter: Use joint_motion_search for masked compounds · c155e018
      David Barker authored
      Add functions which take both components of a masked compound and
      compute the resulting SAD/SSE. Extend joint_motion_search to understand
      masked compounds, and use it to evaluate NEW_NEWMV modes.
      
      Change-Id: I782199a20d119a6c61c6567df157508125ac7ce7
      c155e018
  20. 15 May, 2017 1 commit
    • Fergus Simpson's avatar
      frame-superres: Pre-encode downscaling · 3502d08b
      Fergus Simpson authored
      Adds handling needed for the pre-encode downscaling for superres
      encoding. Makes use of the existing resizing functionality, just
      adjusting the target resolution after the resize logic and before the
      resize has actually occurred.
      
      Since the upscaling portion of superres is not yet implemented, superres
      scaling is not yet allowed to trigger. The numerator is set to be equal
      to the denominator and the superres_pending flag is not set.
      
      Change-Id: Ia5dac752d653c3bda319f0c8196e95bac2c8c554
      3502d08b
  21. 12 May, 2017 2 commits
    • Fergus Simpson's avatar
      frame_superres: Move av1_scale_if_requrired to common · 090bb60f
      Fergus Simpson authored
      This commit moves the av1_scale_if_required functions from
      av1/encoder/encoder to av1/common/resize. They take the
      scale_and_extend_frame_nonnormative function with them.
      
      This will be useful for resizing received frames in the decoder for the
      FRAME_SUPERRES experiment.
      
      Change-Id: I83afc3d97ff8ebce5ecb2e1205ba6c271156cb31
      090bb60f
    • Sebastien Alaiwan's avatar
      Fix HBD compilation of intrabc · 1dcb7075
      Sebastien Alaiwan authored
      Change-Id: Ie5718de1eb70fd753c2bfd7df9581aa92e13984c
      1dcb7075
  22. 09 May, 2017 2 commits
    • Fergus Simpson's avatar
      resize-refactor: Change resizing process with helpers · fecb2abc
      Fergus Simpson authored
      Adds three new helpers and changes one other. The intention of this is
      to make the triggering and function of resizing simpler. The new process
      is to resize to the next state and then update the current state to
      match. The new helpers reflect this change and make the overall flow
      simpler.
      
      resize_pending is now a helper instead of a member, so it doesn't need
      to be raised manually. A resize is pending when the numerator or
      denominator of the next resize state is different from the current one.
      resize_pending could be 1 (scale down), 0 (no change), or -1 (return to
      original resolution if 1-pass CBR), but now it can only be 1 or 0. To
      return to the original resolution just set the scale to 1:1. This
      reduces complexity with no change in functionality.
      
      resize_unscaled just returns 1 if the current numerator and denominator
      are equal. This makes some if conditions cleaner.
      
      resize_step makes the current scale equal to the next scale. This
      signifies that a resize is complete and will cause resize_pending to be
      false until the next state is changed. This is the end of the new
      resizing procedure.
      
      av1_calculate_coded_size has been changed to calculate the next size
      instead of the current size. The current state can't be updated until
      the resize is complete because if it were, the resize_pending state
      would drop and the resize wouldn't finish. This just means the next
      resolution is the target resolution until the resize is complete.
      
      Change-Id: I5d5855cc83f532d3a8b1f8853ba70a0d43221fbf
      fecb2abc
    • Fangwen Fu's avatar
      Make tile dependency experiment work with ext tile. · 70bcb89b
      Fangwen Fu authored
      * Add tile dependency support when ext tile enabled.
      
      Change-Id: I8fe40adf285e171b5b761b15590a8b1c6758b8f7
      70bcb89b
  23. 08 May, 2017 1 commit
    • hui su's avatar
      Palette: avoid memory leak with encoder buffers · 5d493143
      hui su authored
      For multi-thread encoding, previously the encoder buffers are
      allocated at every frame, but only freed at the end of encoding,
      causing memory leaks.
      
      Change-Id: Id0e9d7fba8330e82be9cec1d42b7d4b017b8d772
      5d493143
  24. 05 May, 2017 2 commits