1. 16 Nov, 2017 1 commit
    • paulwilkins's avatar
      Disable allow_partition_search_skip for speed 2. · 44473e7e
      paulwilkins authored
      When allow_partition_search_skip  is set the two pass code
      can optionally skip the partition search in the rd loop if the image
      appears static (based on selection of 0,0 motion).
      
      Unfortunately 0,0 motion does not necessarily mean that there are
      no meaningful changes or that motion or intra modes will not be selected
      in the second pass.
      
      Disabling "allow_partition_search_skip" may hurt the encode speed a little
      for a small number of clips but can have a big impact on compression.
      The most notable example of this in our test sets is "bridge_close_cif"
      where this change gives a gains of 18%, 12% and 16% in opsnr, ssim and
      psnr-hvs.
      
      Change-Id: I765e288b5c0cd82bce00a148e7653a21e9203024
      44473e7e
  2. 15 Nov, 2017 3 commits
    • paulwilkins's avatar
      Code cleanup. · 05302360
      paulwilkins authored
      Removal of parameters to and code in calc_frame_boost() that is no
      longer required.
      
      No change to results from previous patch.
      
      Change-Id: Ic92da35613fdc247d22fddf24d09679fc5329017
      05302360
    • paulwilkins's avatar
      Remove decay_accumulator clause from alt ref breakout. · 03c1a827
      paulwilkins authored
      The decay accumulator clause covers similar ground to the
      new clause that tests the accumulated second reference error
      so it has been removed to reduce complexity.
      
      Change-Id: I4ec1cce32d72bd4ee463ad7def2831a68447d525
      03c1a827
    • paulwilkins's avatar
      Add clause to alt ref group breakout. · 607e45f4
      paulwilkins authored
      Add a clause to the breakout test for alt ref groups that
      examines the size of the accumulated second reference
      frame error compared to the cost of intra coding.
      
      This clause causes a reduction in the average group length for many
      clips. Alongside the change to the group length the minimum
      boost is increased.
      
      On balance the results are positive for psnr and psnr-hvs
      but is negative for ssim/fast ssim for the smaller image formats.
      
      Strong gains on some harder clips (eg ducks take off (midres) ~20%,
      husky (lowres) 6-17%. Most of the negative cases are lower motion
      clips. Subsequent patch hopefully will help with those.
      
      Change-Id: Ic1f5dbb9153d5089e58b1540470e799f91a65dc4
      607e45f4
  3. 14 Nov, 2017 2 commits
  4. 13 Nov, 2017 7 commits
    • Jerome Jiang's avatar
    • Jerome Jiang's avatar
      vp9 svc: Change conditions on VPX_ENCODER_ABI_VERSION. · 0d2555bd
      Jerome Jiang authored
      VPX_ENCODER_ABI_VERSION was bumped up in 93e83f.
      
      Change-Id: Id5707f9f9db56fa96549bc8f54e1cfa04e7fa4cd
      0d2555bd
    • Jim Bankoski's avatar
      add 10 and 12 bit to tiny_ssim · becab42e
      Jim Bankoski authored
      Change-Id: I92e4dba2d1682a0d77ad9a214ec4312b1cf4d42e
      becab42e
    • paulwilkins's avatar
      New content type to improve grain retention. · a73cee28
      paulwilkins authored
      For new VP9 only content type adjust  the rate distortion and ARF
      filter based on the relative spatial variance of the source and
      reconstruction.
      
      In regards to the RD loop the method favors modes where the
      reconstruction variance is similar to the source variance. However it
      is currently only applied to regions where the source variance is quite
      low.
      
      For very low variance blocks it applies a further bias against intra
      coding and large prediction block sizes (the later in particular limit
      the usefulness of the loop filter).
      
      The final part of this change is to lower the strength of the ARF
      filter for blocks where the source has very low spatial variance, to
      encourage some low amplitude texture or noise to pass through
      the filter.
      
      This change improves the retention of film grain and fine noise /
      texture in spatially flat regions, but as expected causes a significant
      drop in PSNR on many clips. This is to be expected because similar
      but misaligned noise or texture will give a lower PSNR than a flat
      noise free reconstruction. However, it is worth noting that most clips
      show a strong gain in FAST SSIM.
      
      The features are enabled on the vpxenc command line by setting
      --tune-content=film.
      
      VPX_ENCODER_ABI_VERSION bumped for this change and cvbr.
      
      Change-Id: I26a4e4edfa3dc5cacead82fa701fe7a9118ccd0a
      a73cee28
    • paulwilkins's avatar
      Small parameter clean up. · 55fc4d95
      paulwilkins authored
      Removed three parameters that are no longer needed in calls
      to calc_arf_boost() and associated minor changes.
      
      No impact on encode results.
      
      Change-Id: Ieaf31d0d2e1990b99cf69647170145a1bbfbb9fb
      55fc4d95
    • Paul Wilkins's avatar
    • Paul Wilkins's avatar
      Merge "CVBR command line option." · f5817fa6
      Paul Wilkins authored
      f5817fa6
  5. 10 Nov, 2017 5 commits
  6. 09 Nov, 2017 8 commits
    • Jerome Jiang's avatar
    • Jerome Jiang's avatar
      vp9: SVC feature to use partition from lower resolution. · fdb054a0
      Jerome Jiang authored
      For SVC with 3 spatial layers:
      Add feature to copy/upscale partition from middle spatial layer
      to the upper/highest resolution, when superblock sad is not high.
      
      Enabled for speed >= 7 and only for non-reference frames.
      
      Speedup ~3-4%, small loss in avgPNSR/SSIM of ~1%.
      
      Change-Id: I7f0a2716c0fde28bade0f86159d11b7e31d6ab8d
      fdb054a0
    • Scott LaVarnway's avatar
      runtime error fix: bitdepth_conversion_avx2.h · 2387024f
      Scott LaVarnway authored
      Change-Id: I7364a157de39eb7137b599808474b8d46d19d376
      2387024f
    • Johann Koenig's avatar
      Merge "fail early on oversize frames" · bdb8b3ad
      Johann Koenig authored
      bdb8b3ad
    • Scott LaVarnway's avatar
      vpx: [x86] add vp9_block_error_fp_avx2() · 62ab5e99
      Scott LaVarnway authored
      SSE2 asm vs AVX2 intrinsics speed gains:
      blocksize   16: ~1.00
      blocksize   64: ~1.17
      blocksize  256: ~1.67
      blocksize 1024: ~1.81
      
      Change-Id: I2a86db239cf57e3ff617890ccb2d236aba83ad5e
      62ab5e99
    • paulwilkins's avatar
      Fix to frames considered in arf boost calculation. · d6e29868
      paulwilkins authored
      For a chosen interval "i" the existing arf boost calculation examined frames
      +/- (i-1) frames from the current location in the second pass.
      
      This change checks to make sure that the forward search does not extend
      beyond the next key frame in the event that the distance to the next key
      frame is < (i - 1).
      
      Small metrics gains on all our  test sets but these are localized to a few clips
      (e.g. midres set psnr-hvs sintel -2.59% but overall average was only -0.185%)
      
      Change-Id: I26fc9ce582b6d58fa1113a238395e12ad3123cf6
      d6e29868
    • Jerome Jiang's avatar
      Merge "vp9: Add nonref frame buffer test." · adbb4c4d
      Jerome Jiang authored
      adbb4c4d
    • Jerome Jiang's avatar
      vp9: Add nonref frame buffer test. · a68bbcff
      Jerome Jiang authored
      The new test will run a SVC bitstream which has non ref frames.
      It checks the number of buffer acquired and released to make sure all
      external frame buffers are released.
      
      Add a new test bitstream:
      vp90-2-22-svc_1280x720_1.webm
      which has 400 frames in total, and 1 spatial layer and 2 temporal layers.
      There is one non ref frame every other frame.
      
      Disabled for now. Will be enabled with the fix.
      
      BUG=b/68819248
      
      Change-Id: I0515336fd9809a9e1fceba90e4dce53dabaf53a5
      a68bbcff
  7. 08 Nov, 2017 2 commits
    • Johann Koenig's avatar
    • paulwilkins's avatar
      CVBR command line option. · 93e83fd7
      paulwilkins authored
      Added command line control of Corpus VBR.
      
      The new corpus vbr mode is a variant of standard
      VBR (end-usage=0) where the complexity distribution
      mid point is passed in rather than calculated for a specific
      clip or chunk.
      
      The new variant is enabled by setting a new command line
      parameter --corpus-complexity to a zero value. Omitting
      this parameter or setting it to 0 will cause the codec to use
      standard vbr mode.
      
      The correct value for a given corpus needs to be derived
      experimentally using a training set such that the average
      rate for the corpus is close to the target value.
      
      For example our using our low res test set with upper and lower
      vbr limits of 50%-150% and a corpus complexity value of 650
      gives a similar average data rate across the set to using standard
      vbr. However, with the corpus mode easier clips will be allocated
      fewer bits and harder clips more bits rather than having the same
      rate target for all.
      
      Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
      93e83fd7
  8. 06 Nov, 2017 1 commit
    • Marco's avatar
      Nonrd_pickmode: avoid computing UV cost when early_term is set. · 6fbc354c
      Marco authored
      For nonrd_pickmode: if early_term is set there should be
      no need to include UV in rdcost (when color_sensitivity is set).
      
      Neutral change on RTC and RTC_derf metrics, for speed >= 5.
      No change for ytlive metrics.
      
      Very small speed gain (~0.5%) on some clips with strong color content.
      
      Change-Id: Ifc00928ecd935fc71e94935ceef0ae7481249f07
      6fbc354c
  9. 03 Nov, 2017 3 commits
    • Kyle Siefring's avatar
      Support building AVX-512 and implement sadx4 for AVX-512 · b383a17f
      Kyle Siefring authored
      The added AVX-512 support requires the subset of AVX-512 added in Skylake-X.
      
      Change-Id: I39666b00d10bf96d06c709823663eb09b89265b7
      b383a17f
    • Marco's avatar
      Compound prediction mode for nonrd pickmode. · eb7d431c
      Marco authored
      Allow for compound prediction mode in nonrd_pickmode for ZEROMV.
      For real-time encoding, 1 pass with non-zero lag-in-frames.
      
      Added speed feature to control the feature.
      Enabled for speed >=6 for now, under VBR mode.
      
      avgPSNR/SSIM metrics positive on ytlive set, for speed 6:
      some clips up by ~3-5%, some clips neutral gain, average gain
      across clips is ~1%.
      
      Small/negligible decrease in speed.
      
      Change-Id: I7a60c7596e69b9a928410c5ee2f9141eecd8613d
      eb7d431c
    • Johann's avatar
      fail early on oversize frames · 5fe82459
      Johann authored
      Even though frame_size is calculated in uint64_t, it winds up in an int
      size value.
      
      This was exposed with the msan test because the memset is called with
      (int)frame_size, leading to a segfault.
      
      Change-Id: I7fd930360dca274adb8f3e43e5e6785204808861
      5fe82459
  10. 01 Nov, 2017 2 commits
  11. 31 Oct, 2017 2 commits
  12. 30 Oct, 2017 2 commits
  13. 27 Oct, 2017 1 commit
    • James Zern's avatar
      vp8: correct if/else '{' placement · acb94609
      James Zern authored
      swap '{' and c-style comments removing a few redundant ones along the
      way; covers most leftovers from the clang-tidy run against an
      x86_64-linux config.
      
      Change-Id: I67a45596f80a12389faca49c5be440875092a7df
      acb94609
  14. 26 Oct, 2017 1 commit