1. 18 Jul, 2017 1 commit
    • Angie Chiang's avatar
      Add flag inter_stats_only · 08a22a63
      Angie Chiang authored
      This flag will allow us to skip key frame's stats
      Therefore, we can test inter frame performance when frame number
      is small. The inter frame's stats won't get underwhelmed because
      of key frame's stats
      
      Change-Id: I9eaa8e5775fb2e740406cfa4b4f64f96f180d9db
      08a22a63
  2. 17 Jul, 2017 1 commit
  3. 14 Jul, 2017 2 commits
    • hui su's avatar
      aomenc: remove config control of "allow_screen_content_tools" · 1b5328e0
      hui su authored
      Always let the encoder decide if "allow_screen_content_tools" should be set.
      
      -The screen content detector(is_screen_content()) works fairly well.
      
      -Keeping the config control may lead to mismatches. For example, user
      may encode the 1st frame with the flag on, then turn the flag off for
      the 2nd frame via config control. On the decoder side, the flag is on
      for both frames, because the flag is only transmitted in the header of
      all-intra frame, i.e. the 1st frame in this example.
      
      BUT=aomedia:656
      
      Change-Id: I0652fe2b9f8df19bfbf7ed7d3513205c80ea9c61
      1b5328e0
    • Yunqing Wang's avatar
      Make EXT_TILE compatible with TILE_GROUPS · eeb08a9b
      Yunqing Wang authored
      Added a 1-bit flag 'large_scale_tile'. If it is 0 that is the default value,
      use normal tile coding in TILE_GROUPS. If it is 1, use large-scale tile
      coding in EXT_TILE.
      
      At large_scale_tile=1 case, if single-tile-decoding is required, then the
      loopfilter is disabled.
      
      Related API and unit tests were modified.
      
      Change-Id: I3ba12dc3d80ccf1ab21543ab3b16c02282c34e3b
      eeb08a9b
  4. 13 Jul, 2017 2 commits
    • Debargha Mukherjee's avatar
      Remove some commented out code · 1c318d52
      Debargha Mukherjee authored
      Change-Id: Id89b613a227867782f9feba16d87eca4b5a86369
      1c318d52
    • Zoe Liu's avatar
      Make last_bipred_frame a reference frame · aff92d58
      Zoe Liu authored
      The frame marked as last_bipred at the encoder side is the frame right
      before the source frame of BWDREF_FRAME, which was not used as a
      reference. This CL is to add this type of frames to the reference frame
      buffer and use them as reference for the coding of future frames. This
      is a non-normative change.
      
      A tiny gain is observed (lowres BDRate -0.016% in avg psnr). The main
      target of this CL is to make it possible to have more flexible gf group
      structure. For instance, LAST_BIPRED_UPDATE can be replaced by
      LAST_UPDATE followed by an extra alt ref frame.
      
      Change-Id: If3dbce0959bb468e95d01a1feca1dac6bfb91d36
      aff92d58
  5. 12 Jul, 2017 3 commits
    • hui su's avatar
      Automatically turn on/off screen content tools · d9a812bd
      hui su authored
      Turn "allow_screen_content_tools" on when the source video has many blocks
      with only few different colors. The automatic detection is enabled by
      defualt (or with command line flag "--tune-content=default"). With
      "--tune-content=screen", the screen content tools are always turned on.
      
      On the screen_content test set, the "default" setting is less than 0.3%
      worse than the "screen" setting on keyframe encoding.
      
      Change-Id: Iac7ab8952c96531d1fae84da1823291f5987519c
      d9a812bd
    • Rupert Swarbrick's avatar
      ext-partition-types: Add 4:1 partitions · 93c39e91
      Rupert Swarbrick authored
      This patch adds support for 4:1 rectangular blocks to various common
      data arrays, and adds new partition types to the EXT_PARTITION_TYPES
      experiment which will use them.
      
      This patch has the following restrictions, which can be lifted in
      future patches:
      
        * ext-partition-types is incompatible with fp_mb_stats and supertx
          for the moment
      
        * Currently only 32x32 superblocks can use the new partition types
      
      There's a slightly odd restriction about when we allow
      PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
      EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
      has_rows and has_cols is true. This means that at least half of the
      width and height of the block must be visible. It might be nice to
      relax that restriction but that would imply a change to how we encode
      partition types, which seems already to be in a state of flux, so
      maybe it's better to wait until that has settled down.
      
      Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
      93c39e91
    • Zoe Liu's avatar
      Further work on ext-comp-refs for ref frame coding · fcf5fa27
      Zoe Liu authored
      (1) Work with var-refs to remove redundant bits in ref frame
          coding;
      (2) Add a new uni-directional compound reference pair:
          (LAST_FRAME, LAST3_FRAME);
      (3) Redesign the contexts for encoding uni-directional reference frame
          pairs;
      (4) Use aom_entropy_optimizer to collect stats for all the default
          probability setups related to the coding of reference frames.
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) with one-sided-compound,
      the coding gain of ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.385%; ovr_psnr -0.378% ssim -0.344%
      midres: avg_psnr -0.466%; ovr_psnr -0.447% ssim -0.513%
      
      AWCY - High Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2758 | -0.1526 | -0.0965 |  -0.2581 | -0.2492 | -0.2534 |    -0.2118
      
      AWCY - Low Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -1.0467 | -1.4500 | -0.9732 |  -0.9928 | -1.0407 | -1.0180 |    -1.0049
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) without
      one-sided-compound, the coding gain of
      ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.875%; ovr_psnr -0.877% ssim -0.895%
      midres: avg_psnr -0.824%; ovr_psnr -0.802% ssim -0.843%
      
      Change-Id: I8de774c9a74c20632ea93ccb0c17779fa94431cb
      fcf5fa27
  6. 11 Jul, 2017 2 commits
  7. 05 Jul, 2017 1 commit
    • Zoe Liu's avatar
      Remove unused code · 6b4d4c49
      Zoe Liu authored
      Stats can be collected through the tool of aom_entropy_optimizer using
      the dumped file counts.stt.
      
      Change-Id: I121fb6f819841fe09e304c11f83113b27c73afdd
      6b4d4c49
  8. 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
  9. 22 Jun, 2017 1 commit
  10. 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
  11. 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
  12. 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
  13. 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
  14. 14 Jun, 2017 1 commit
  15. 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
  16. 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
  17. 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
  18. 31 May, 2017 2 commits
  19. 30 May, 2017 1 commit
  20. 29 May, 2017 1 commit
  21. 25 May, 2017 1 commit
  22. 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
  23. 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
  24. 20 May, 2017 1 commit