1. 08 Dec, 2015 1 commit
    • paulwilkins's avatar
      Changes to exhaustive motion search. · 4e692bbe
      paulwilkins authored
      This change has been imported from VP9 and
      alters the nature and use of exhaustive motion search.
      
      Firstly any exhaustive search is preceded by a normal step search.
      The exhaustive search is only carried out if the distortion resulting
      from the step search is above a threshold value.
      
      Secondly the simple +/- 64 exhaustive search is replaced by a
      multi stage mesh based search where each stage has a range
      and step/interval size. Subsequent stages use the best position from
      the previous stage as the center of the search but use a reduced range
      and interval size.
      
      For example:
        stage 1: Range +/- 64 interval 4
        stage 2: Range +/- 32 interval 2
        stage 3: Range +/- 15 interval 1
      
      This process, especially when it follows on from a normal step
      search, has shown itself to be almost as effective as a full range
      exhaustive search with step 1 but greatly lowers the computational
      complexity such that it can be used in some cases for speeds 0-2.
      
      This patch also removes a double exhaustive search for sub 8x8 blocks
      which also contained  a bug (the two searches used different distortion
      metrics).
      
      For best quality in my test animation sequence this patch has almost
      no impact on quality but improves encode speed by more than 5X.
      
      Restricted use in good quality speeds 0-2 yields significant quality gains
      on the animation test of 0.2 - 0.5 db with only a small impact on encode
      speed. On most natural video clips, however, where the step search
      is performing well, the quality gain and speed impact are small.
      
      Change-Id: Iac24152ae239f42a246f39ee5f00fe62d193cb98
      4e692bbe
  2. 09 Nov, 2015 1 commit
    • Johann's avatar
      Release v1.5.0 · cbecf57f
      Johann authored
      Javan Whistling Duck release.
      
      Change-Id: If44c9ca16a8188b68759325fbacc771365cb4af8
      cbecf57f
  3. 10 Sep, 2015 3 commits
  4. 31 Aug, 2015 1 commit
  5. 28 Aug, 2015 1 commit
    • Yunqing Wang's avatar
      vp10 cleanup: remove svc code · c147c4d6
      Yunqing Wang authored
      Spatial/temporal svc code was removed. Verified using Borg test,
      and the results before and after the change are matching.
      
      Change-Id: I4c2ee5cd560428e3e50be02e57e5871ef4246390
      c147c4d6
  6. 27 Aug, 2015 1 commit
  7. 26 Aug, 2015 1 commit
  8. 17 Aug, 2015 1 commit
  9. 13 Aug, 2015 2 commits
  10. 12 Aug, 2015 2 commits
  11. 11 Aug, 2015 1 commit
    • Marco's avatar
      Adjust speed setting for temporal layers in 1 pass non-rd mode. · 3d181a45
      Marco authored
      For speed 7, real-time mode: Base layer frames are further apart
      (for #temporal layers = 3, this is every 4 frames) so worth keeping
      same motion search parameters (as in speed 6) on the base layer frames.
      
      Change-Id: Idebf49dda6ef4f3d9a55aee55129a68253f692fb
      3d181a45
  12. 31 Jul, 2015 1 commit
  13. 30 Jul, 2015 1 commit
  14. 16 Jul, 2015 1 commit
    • paulwilkins's avatar
      Fix bug in setting sf->use_square_partition_only. · 7d15444d
      paulwilkins authored
      Fix bug in setting this flag for animated content.
      The bug did cause quality to increase because far
      more frames are not boosted than boosted.
      
      However, the speed trade off to gain is a lot less
      favorable and the behavior was not as intended.
      
      Change-Id: I89fb70419c88b26f40b3534de0481730a1b3fcfa
      7d15444d
  15. 08 Jul, 2015 2 commits
    • paulwilkins's avatar
      Changes to use of rectangular partitions. · 8dd466ed
      paulwilkins authored
      Changes to allow more use of rectangular partitions at
      speeds 1 and 2 for content classed by the first pass as
      animation and for blocks near the active image edge.
      
      This has quite a big impact in quality for the animated
      test sequence but also hurts encode speed for speed 2.
      
      For other content types the impact on both speed and
      quality is small.
      
      Added some plumbing for detection of internal vertical
      image edges.
      
      Change-Id: I3fc48de2349f8cb87946caaf0b06dbb0ea261a9a
      8dd466ed
    • paulwilkins's avatar
      Change speed and rd features for formatting bars. · a126b6ce
      paulwilkins authored
      Change speed features / behavior for split mode when there
      is an internal active edge (e.g. formatting bars).
      
      Remove some threshold constraints in rd code near the active
      edge of the image.
      
      Add some plumbing for left and right active edge detection.
      
      Patch set 5. Limit rd pass through for sub 8x8 to internal active edges.
      This takes away any speed penalty for most clips but keeps the enhanced
      edge coding for the more critical case of internal image edges
      
      Change-Id: If644e4762874de4fe9cbb0a66211953fa74c13a5
      a126b6ce
  16. 09 Jun, 2015 1 commit
    • Paul Wilkins's avatar
      Enable more split modes for animated content. · 4a28da58
      Paul Wilkins authored
      For content that is identified as likely to contain some
      animation or graphics content, increase the availability
      of split modes for good quality speeds 1-3.
      
      On a problem test animation clip this improves metrics
      results by about 0.25 db and makes a noticeable difference
      visually. It also causes a small drop in file size (~0.5%) but
      a rise in encode time of about 5-6% at speed  2.
      
      For more normal content it should have no effect.
      
      Change-Id: Ic4cd9a8de065af9f9402f4477a17442aebf0e439
      4a28da58
  17. 05 Jun, 2015 1 commit
  18. 04 Jun, 2015 1 commit
    • Paul Wilkins's avatar
      Animation and dead zone detection. · 668e8045
      Paul Wilkins authored
      Adds code to detect dead zone bars at the top and bottom
      of reformatted letterbox video (note that the code only
      looks at the top of the image and assumes any dead zone
      is symmetrical).  Use of this to adapt rate control etc.
      will follow in a subsequent patch.
      
      Also counts other blocks (excluding the dead zone) that
      have no intra signal. The presence of a significant
      number of such blocks can be used as a identify that the frame
      may be artificial (e.g.  animation, screen capture, graphics).
      This patch contains plumbing only and does not use
      the signal.
      
      Change-Id: I59bc93529cd4065416cef773e405fda3ae006a20
      668e8045
  19. 15 May, 2015 1 commit
    • Marco's avatar
      Change tx_size_search_method setting for non-rd speed 5. · e88de49f
      Marco authored
      Use the same settting as in speed >=6.
      This will use same logic for tx_size selecton as in speed >=6,
      which limits the transform size and reduces ringing artifact.
      Also metrics go up on average with this change: ~2% for PSNR, ~10% for SSIM.
      
      Change-Id: Ia2d50db236ae1cc72f742bfa6c9ec5ea50ff0e0a
      e88de49f
  20. 04 May, 2015 1 commit
    • Marco's avatar
      Allow for H and V intra modes for non-rd mode. · b9a72d3c
      Marco authored
      For non-rd mode (speed >=5): use mask based on prediction block size, and
      (for non-screen content mode) allow for checking horiz and vert intra modes
      for blocks sizes < 16x16.
      
      Avg psnr/ssim metrics go up by about ~0.2%.
      
      Only allowing H/V intra on block sizes below 16x16 for now, to keep
      encoding time increase very small, and also when allowing H/V on 16x16 blocks,
      metrics went down on a few clips which need to be further examined.
      
      Change-Id: I8ae0bc8cb2a964f9709612c76c5661acaab1381e
      b9a72d3c
  21. 01 May, 2015 2 commits
    • paulwilkins's avatar
      Image size restriction to rd auto partition search. · 4a7dcf8e
      paulwilkins authored
      Impose a limit on the rd auto partition search based on
      the image format. Smaller formats require that the search
      includes includes a smaller minimum block size.
      
      This change is intended to mitigate the visual impact of
      ringing in some problem clips, for smaller image formats.
      
      Change-Id: Ie039e5f599ee079bbef5d272f3e40e2e27d8f97b
      4a7dcf8e
    • paulwilkins's avatar
      Remove CONSTRAIN_NEIGHBORING_MIN_MAX. · 287b0c6d
      paulwilkins authored
      Remove one of the auto partition size cases.
      This case can behaves badly in some types of animated content
      and was only used for the rd encode path. A subsequent patch
      will add additional checks to help further improve visual quality.
      
      Change-Id: I0ebd8da3d45ab8501afa45d7959ced8c2d60ee4e
      287b0c6d
  22. 27 Mar, 2015 1 commit
  23. 10 Feb, 2015 1 commit
    • Adrian Grange's avatar
      Auto-adaptive encoder frame resizing logic · 23ebacdb
      Adrian Grange authored
      Note: This feature is still in development.
      
      Add an option for the encoder to decide the resolution
      at which to encode each frame.
      
      Each KF/GF/ARF goup is tested to see if it would be
      better encoded at a lower resolution. At present, each
      KF/GF/ARF is coded first at full-size and if the coded
      size exceeds a threshold (twice target data rate) at
      the maximum active Q then the entire group is encoded
      at lower resolution.
      
      This feature is enabled in vpxenc by setting:
        --resize-allowed=1
      
      In addition, if the vpxenc command line also specifies
      valid frame dimensions using:
        --resize-width=XXXX & --resize_height=YYYY
      then *all* frames will be encoded at this resolution.
      
      Change-Id: I13f341e0a82512f9e84e144e0f3b5aed8a65402b
      23ebacdb
  24. 03 Feb, 2015 2 commits
    • Jim Bankoski's avatar
      make low bitrates a lot less blocky · 9f1cf2c8
      Jim Bankoski authored
      Remove loop filter skip at speed 7+ because of bad visual artifacts and
      up the postprocessing.
      
      Change-Id: Ibdd0bac71aaee232d2bb2e14462733c51517768d
      9f1cf2c8
    • Yaowu Xu's avatar
      adjust rtc setting and threshold · 65a1a3e8
      Yaowu Xu authored
      1. Adjusted the threshold for coef update computation based on counts
      of tx used, avoid coef update computation when count is low (<20)
      2. Move sf->lpf_pick = LPF_PICK_MINIMAL_LPF to speed 8.
      
      Change-Id: I02b44309e40fcdbf135c7934ae067a3f42502d30
      65a1a3e8
  25. 23 Jan, 2015 1 commit
  26. 17 Dec, 2014 1 commit
    • Yaowu Xu's avatar
      Corrected value range of --cpu-used for vp9 · a16f0753
      Yaowu Xu authored
      This commit removes undefined value options of cpu-used for VP9 and
      changed vpxenc prompt to reflect the usable range of [-8,8]
      
      Change-Id: Ib80fef3dbb6ec9aabac45ed13e8ab6fbaf94f55e
      a16f0753
  27. 05 Dec, 2014 2 commits
    • Jingning Han's avatar
      Enable conditional skip path in rd_pick_intra_sby_mode · 74ded486
      Jingning Han authored
      These speed-up features for key frame coding are only turned on
      in the settings of hybrid non-RD and RD mode decision. It provides
      about 20% speed-up to the hybrid key frame coding at the expense
      of certain compression performance loss. For vidyo1, the key frame
      coding statistics are changed
      9838F, 35.020 dB, 61677 us -> 9920F, 34.834 dB, 47556 us
      
      Overall rtc set compression performance is down by -0.257%.
      
      Change-Id: I0025447fda26bb7855e982955642b5f55d71b51f
      74ded486
    • Jingning Han's avatar
      Use hybrid RD and non-RD coding flow for key frame coding · 07711e9b
      Jingning Han authored
      When block size is below 16x16, the encoder swap from non-RD to
      RD mode for key frame coding. This largely brough back the key
      frame compression performance. For vidyo1 at 1000 kbps, the key
      frame coding statistics are changed
      
      9978F, 34.183 dB, 36807 us -> 9838F, 35.020 dB, 61677 us
      
      As compared to the full RD case
      7187F, 34.930 dB, 214470 us
      
      The overall rtc set coding performance (single key frame setting)
      is improved by 1.5%.
      
      Change-Id: I78a4ecf025d7b24ec911e85be94e01da05e77878
      07711e9b
  28. 03 Dec, 2014 2 commits
    • Marco's avatar
      Enable non-rd mode coding on key frame, for speed 6. · 8fd3f9a2
      Marco authored
      For key frame at speed 6: enable the non-rd mode selection in speed setting
      and use the (non-rd) variance_based partition.
      
      Adjust some logic/thresholds in variance partition selection for key frame only (no change to delta frames),
      mainly to bias to selecting smaller prediction blocks, and also set max tx size of 16x16.
      
      Loss in key frame quality (~0.6-0.7dB) compared to rd coding,
      but speeds up key frame encoding by at least 6x.
      Average PNSR/SSIM metrics over RTC clips go down by ~1-2% for speed 6.
      
      Change-Id: Ie4845e0127e876337b9c105aa37e93b286193405
      8fd3f9a2
    • Jingning Han's avatar
      Rework coeff probability model update for rtc coding · 8fe50191
      Jingning Han authored
      This commit reworks the ONE_LOOP_REDUCED coefficient probability
      model update process. It allows model update for every coefficient
      across the spectrum at a coarser resolution, instead of performing
      precise update only for certain subset of probability models.
      
      The overall runtime remains nearly same (<1% change) for speed -6.
      The compression performance is improved by 7.5% in PSNR for speed
      -5 and 4.57% for speed -6, respectively.
      
      Change-Id: Ifb17136382ee7e39a9f34ff4a4f09a753125c8d1
      8fe50191
  29. 26 Nov, 2014 1 commit
  30. 25 Nov, 2014 1 commit
    • Yunqing Wang's avatar
      vp9_ethread: modify VP9_COMP structure · edbd61e1
      Yunqing Wang authored
      This patch modified struct VP9_COMP. Created a struct ThreadData
      to include data that need to be copied for each thread. In
      multiple thread case, one thread processes one tile. all threads
      share one copy of VP9_COMP,
      (refer to VP9_COMP *cpi in the code)
      but each thread has its own copy of ThreadData,
      (refer to ThreadData *td in the code).
      Therefore, within the scope of encode_tiles(), both cpi and td
      need to be passed as function parameters.
      
      In single thread case, the FRAME_COUNTS pointer in ThreadData
      points to "counts" in VP9_COMMON.
      
      Change-Id: Ib37908b2d8e2c0f4f9c18f38017df5ce60e8b13e
      edbd61e1
  31. 24 Nov, 2014 1 commit
    • Jingning Han's avatar
      Key frame non-RD mode decision process · 2fbdfd2c
      Jingning Han authored
      This commit makes a non-RD coding mode decision process for key
      frame coding. It can be optionally turned on in speed -6 and above.
      
      Change-Id: I0847258b392877a0210b4768bef88ebc9ad009b5
      2fbdfd2c