1. 21 Jul, 2017 1 commit
  2. 18 Jul, 2017 2 commits
    • Alex Converse's avatar
      Don't clobber |allow_screen_content_tools|. · 74ad0917
      Alex Converse authored
      Screen content tools can be forced on or inferred by color counting.
      This prevents the inferred status of the tools from getting clobbered
      when controls are evaluated.
      
      BUG=aomedia:656
      
      This also fixes the build with --disable-palette --enable-intrabc
      
      Change-Id: If815a1eff2f9419117477f14cda143dd669c87c6
      74ad0917
    • Alex Converse's avatar
      Revert "aomenc: remove config control of "allow_screen_content_tools"" · 2f7d37bf
      Alex Converse authored
      This reverts commit 1b5328e0.
      
      This commit has some pretty negative consequences with block copy. I
      need to be able to force block copy on for arbitrary sequences while it
      is still in development, and I need to be able to keep the palette
      enable status between block copy and non-block copy runs.
      
      Change If815a1eff2f9419117477f14cda143dd669c87c6 will prevent
      allow_screen_content_tools from getting clobbered and still allow us to
      force it on.
      BUG=aomedia:656
      
      Change-Id: I7a2f4207b5d2da35aec7870250e8b330c58a0e13
      2f7d37bf
  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 1 commit
    • Wei-Ting Lin's avatar
      ncobmc_adapt_weight: add motion mode cdf · 9bcff194
      Wei-Ting Lin authored
      Add a new default motion_mode_cdf supporting this
      experiment.
      Also define the costs for the ncobmc mode tokens.
      
      Change-Id: Iebab044e4a34e3d2a94c18893107d82055cc9c77
      9bcff194
  5. 12 Jul, 2017 2 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
  6. 11 Jul, 2017 1 commit
    • Nathan E. Egge's avatar
      Remove the EC_ADAPT experimental flags. · 6bdc40f1
      Nathan E. Egge authored
      Removing these flags make the EC_ADAPT experiment an integral part of
       the draft AV1 bitstream definition
      This commit has no effect on metrics.
      
      Change-Id: Ice78520935e8bfa9d25cf4b8384a1b872069d09c
      6bdc40f1
  7. 19 Jun, 2017 1 commit
    • 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
  8. 16 Jun, 2017 1 commit
  9. 15 Jun, 2017 4 commits
    • Zoe Liu's avatar
      Add the new coding tool "speed_refs" · d1ac0321
      Zoe Liu authored
      This patch will not cause any performance change regardless of whether
      speed_refs is on or off.
      
      This coding tool is targeted to speed up the encoder side reference
      frame selection process. The essential idea is to have two scanning
      passes for each superblock of size 64x64 and this CL lays out the
      initial framework but no reference frame selection is done yet:
      
      First scanning pass - To simplify the partition and the mode
      candidates (e.g. considering nearestmv / nearmv / zeromv only) and
      identify the best reference frame prediction candidates;
      
      Second scanning pass - Use the best reference frame candidate(s)
      obtained from the first pass to encode the current superblock.
      
      Change-Id: I11266d468de3077271a5e866eebd341a8014d136
      d1ac0321
    • Arild Fuldseth (arilfuld)'s avatar
      Fix a bug in determination of reference_mode · 6c20c78f
      Arild Fuldseth (arilfuld) authored
      Fix a bug where the encoder sets reference_mode =
      COMPOUND_REFERENCE even if the frame contains some
      4x4 blocks (but no larger blocks) that are single
      reference. This occurs only in corner cases,
      typically for very small frame sizes (e.g. 16x8).
      
      BUG=aomedia:575
      
      Change-Id: I5caedaa753a56e9f9b48995c1d2e0a0886aa4366
      6c20c78f
    • 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
  10. 14 Jun, 2017 1 commit
  11. 13 Jun, 2017 1 commit
    • Zoe Liu's avatar
      Add encoder/decoder pipeline to support single ref comp modes · 85b66463
      Zoe Liu authored
      Now the single ref comp mode should work with WEDGE and
      COMPOUND_SEGMENT. For motion_var, the OBMC_CAUSAL mode uses the 2nd
      predictor if the neighboring block is single ref comp mode predicted.
      
      This patch removes the mode of SR_NEAREST_NEWMV and leaves four
      single ref comp modes in total:
      
      SR_NEAREST_NEARMV
      SR_NEAR_NEWMV
      SR_ZERO_NEWMV
      SR_NEW_NEWMV
      
      Change-Id: If6140455771f0f1a3b947766eccf82f23cc6b67a
      85b66463
  12. 12 Jun, 2017 1 commit
    • 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
  13. 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
  14. 31 May, 2017 1 commit
  15. 30 May, 2017 1 commit
  16. 26 May, 2017 1 commit
    • Yi Luo's avatar
      Improve the quantization table interface · c621023e
      Yi Luo authored
      - Add av1_build_quantize() function so that quantization
        related unit test would be able to access quant/dequant
        table without starting an encoder instance and directly
        accessing cpi.
      
      Change-Id: I8ba429e5deb7a4e7f967996aaec1d20bff0feb3c
      c621023e
  17. 20 May, 2017 1 commit
  18. 19 May, 2017 2 commits
  19. 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
  20. 12 May, 2017 1 commit
    • 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
  21. 11 May, 2017 1 commit
    • Yue Chen's avatar
      Add CONFIG_INTERINTRA flags and reduce # of interintra modes to 4 · 4d26acb4
      Yue Chen authored
      Use CONFIG_INTERINTRA to properly separate interintra from the basic
      ext_inter experiment.
      When macro REDUCE_INTERINTRA_MODES is 1, only 4 ii modes are enabled
      so as to reduce the complexity overhead.
      (Right now the flag is off)
      
      Change-Id: Iec6f36a1000f181adbb822ad66c7d5b2625e9cc7
      4d26acb4
  22. 09 May, 2017 1 commit
    • 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
  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 1 commit
  25. 04 May, 2017 2 commits
    • hui su's avatar
      Remove subframe_prob_update experiment · ed5a30f2
      hui su authored
      The coding gain from this experiment can be mostly obtained
      from ec-adapt.
      
      BUG=aomedia:450
      
      Change-Id: Ia7f9df9b2c13d8cdb962eeb39624f3e4e3f036ba
      ed5a30f2
    • Fergus Simpson's avatar
      resize-refactor: Refactor 2-pass VBR resizing · ddc846ea
      Fergus Simpson authored
      Replaces resizing's table and index approach to frame sizes with
      numerator and denominator integers in the AV1_COMP struct.
      
      This approach is more flexible and will be simpler going forward as it
      is much more similar to the 1-pass CBR approach that is also being
      refactored. The intention is to merge both approaches and this is the
      first step toward that.
      
      Change-Id: I5733c0687390f8a8e2790dcddfa09fb08ab88376
      ddc846ea
  26. 29 Apr, 2017 1 commit
  27. 26 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      Add the motion vector unit test · ff4fa068
      Yunqing Wang authored
      This unit test was ported from VP9. To prevent the motion vector out of
      range bug, added a motion vector unit test. In the 4k video encoding,
      always forced to use extreme motion vectors and also encouraged to use
      INTER modes. In the decoding, checked if the motion vector was valid,
      and also checked the encoder/decoder mismatch.
      
      Change-Id: I1c72ea7c32a3cec9c67f1bbdc168e60507e57516
      ff4fa068
  28. 24 Apr, 2017 3 commits
    • Yaowu Xu's avatar
      Cleanup: Remove const for params passed by value · 4ff59b55
      Yaowu Xu authored
      BUG=aomedia:448
      
      Change-Id: Ieff977fca8a5033ddef2871a194870f59301ad8f
      4ff59b55
    • Fangwen Fu's avatar
      Extend delta q with segments · 6160df29
      Fangwen Fu authored
      This is the first patch for ext_delta_q experiment.
      * Allow delta q to work with segment features
      
      Change-Id: I9455ebb3b5b23b41daa4afa1149672a20d3a3f2c
      6160df29
    • Luc Trudeau's avatar
      [CFL] Custom block-level DC_PRED · f8164157
      Luc Trudeau authored
      Adds the CfL experiment flag and computes a block-level DC_PRED that is
      required by CfL in order to compute alpha_cb and alpha_cr.
      
      The rate-distorsion impact of computing DC_PRED at the prediction block level
      for chroma planes is rather small
      
      Subset 1:
      master_no_cdef@2017-04-18T20:37:05.712Z
        -> block_DCPRED_no_cdef@2017-04-18T20:38:07.381
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0712 |  0.0337 | -0.1692 |   0.0693 | 0.0814 |  0.0710 |    -0.0063
      Note: CDEF was disabled because of problematic asserts.
      
      Change-Id: I44d1cde8605b108366f4bd4cedbf5159dbbb5880
      f8164157
  29. 20 Apr, 2017 2 commits
    • Alex Converse's avatar
      Lowercase cpi->Source and cpi->Last_Source · f77fd0b0
      Alex Converse authored
      BUG=aomedia:449
      
      Change-Id: I8d1a0342e11877e466a1fb771f9a1941598c95d5
      f77fd0b0
    • Yunqing Wang's avatar
      ext_tile: add 2 tile encoding modes · d8cd55f4
      Yunqing Wang authored
      Added 2 tile encoding modes:
      TILE_NORMAL mode supports the large-scale tile coding up to 1024 x 1024
      tiles;
      TILE_VR mode supports the large-scale tile coding and also the decoding
      of a single tile.
      
      TILE_NORMAL mode allows the non-vr content to be encoded in multiple tiles
      without using the coding tool that are designed for vr applications.
      
      Change-Id: Id804806a1bbcb916b7f5dc7e2c5509d88f3defcb
      d8cd55f4