1. 27 Sep, 2017 1 commit
    • Marco's avatar
      Remove the speed condition on scene detection in 1 pass code. · 535b7b91
      Marco authored
      Scene detection is used for VBR mode and for screen_content mode.
      
      It was also enabled for CBR mode via the speed condition,
      but currently the analysis in the scene detection is not used
      in CRB mode (similar computations are done locally at superblock level
      when the source_sad feature is enabled).
      
      For 1 pass code.
      No change in behavior. Small speed gain, ~0.5%.
      
      Change-Id: I59991d7ef2af320bea7af4b907596e057affa42f
      535b7b91
  2. 26 Sep, 2017 2 commits
  3. 20 Sep, 2017 3 commits
    • Marco's avatar
      vp9: Modify pickmode early exit for ARF in 1pass. · 42373b21
      Marco authored
      Add the condition frames_since_golden > 0 to the
      early exit check for ARF usage in nonrd_pickmode.
      This improves quality of first frame following ARF, where
      frame_since_golden = 0.
      
      Small/neutral gain in metrics for speed 6, neutral change in speed.
      
      Only affects when USE_ALTREF_FOR_ONE_PASS is enabled.
      
      Change-Id: I82e73e6ff6fc849e5ca5448563cb8a0515fe0cdc
      42373b21
    • Linfeng Zhang's avatar
      Remove the unnecessary cast of (int16_t)cospi_{1...31}_64 · d586cdb4
      Linfeng Zhang authored
      BUG=webm:1450
      
      Change-Id: If59743aafe99226e0ec67ab5d20678ce25f53ab8
      d586cdb4
    • Linfeng Zhang's avatar
      Bug fix: fadst4() in vp9/encoder/vp9_dct.c · 24afb5d0
      Linfeng Zhang authored
      A new bug was introduced in a80bdfd0 "Change sinpi_{1,2,3,4}_9 from
      tran_high_t to int16_t". Reverted the change in this file.
      
      BUG=webm:1450
      
      Failed test C/TransHT.AccuracyCheck/26.
      
      Change-Id: Id001f57aad811803ef7d367d2b2bc008d8499991
      24afb5d0
  4. 19 Sep, 2017 4 commits
    • Linfeng Zhang's avatar
      cosmetics: NEON scaling code · 7c052972
      Linfeng Zhang authored
      Change-Id: Ib91054622c1f09c4ca523bc6837d7d8ab9f03618
      7c052972
    • Marco's avatar
      vp9: Modify simple_block_yrd condition for SVC · aaa6cdcc
      Marco authored
      Modify simple_block_yrd condition in nonrd_pickmode for SVC:
      allow it to be used also on base temporal_layer, only when
      spatial_layer > 1 and block size < 32x32.
      
      Speed up of about ~2% for 3 layer SVC, with little/negligible
      loss in quality.
      
      Change-Id: I7734bdae51cf51f22b96f6b2b27da20ea1d84344
      aaa6cdcc
    • Marco's avatar
      vp9: Fix condition for limiting ARF 1 pass vbr. · cd463c7a
      Marco authored
      Fix the setting to frames_till_gf_update_due, and
      adjust the limit value.
      Only affects when USE_ALTREF_FOR_ONE_PASS is enabled.
      
      Neutral change to metrics and speed for ytlive.
      
      Change-Id: I266d9a00b36221bc8602fa2746d4e8a8f7d4dfae
      cd463c7a
    • Marco's avatar
      vp9: Adjustments for ARF usage in 1 pass vbr. · ebb015a5
      Marco authored
      Only when USE_ALT_REF_ONE_PASS is enabled (off by default).
      Force fixed partition to 64x64 when is_src_alt_ref_frame is true,
      and don't force early exit for some modes in nonrd_pickmode
      for ARF noshow frames.
      
      Small gain ~0.2% on ytlive metrics for speed 6.
      Neutral speed difference.
      
      Change-Id: I27eb6622d0453c09a06ccdc3b16368762474d11d
      ebb015a5
  5. 18 Sep, 2017 1 commit
  6. 14 Sep, 2017 2 commits
    • James Zern's avatar
      Revert "Specialize 4 to 3 scaling in vp9_scale_and_extend_frame_c()" · baf658ec
      James Zern authored
      This reverts commit afee58f2.
      
      This causes ~8x slowdown in 4:3 in the C-code
      
      Change-Id: I60a7ead12dc4ec1548b1b12cfe4b0be42ef04e0e
      baf658ec
    • Hui Su's avatar
      VP9 level targeting: add a new AUTO mode · c3a6943c
      Hui Su authored
      In the new AUTO mode, restrict the minimum alt-ref interval and max column
      tiles adaptively based on picture size, while not applying any rate control
      constraints.
      
      This mode aims to produce encodings that fit into levels corresponding to
      the source picture size, with minimum compression quality lost. However, the
      bitstream is not guaranteed to be level compatible, e.g., the average bitrate
      may exceed level limit.
      
      BUG=b/64451920
      
      Change-Id: I02080b169cbbef4ab2e08c0df4697ce894aad83c
      c3a6943c
  7. 13 Sep, 2017 2 commits
  8. 12 Sep, 2017 1 commit
    • Linfeng Zhang's avatar
      Specialize 4 to 3 scaling in vp9_scale_and_extend_frame_c() · afee58f2
      Linfeng Zhang authored
      Scale 3x3 block instead of 16x16 block in each loop.
      
      Benefits:
      1. Reduced number of different phase_scaler from 16 to 3. Optimization code
         will be smaller and faster.
      2. The maximum phase_scaler drifting will be reduced from 5/16 to 1/24.
         (The drifting is 1/(3*16) in each step.)
      
      BUG=webm:1419
      
      Change-Id: Ibb9242a629ddb03e1ff93b859bece738255e698c
      afee58f2
  9. 11 Sep, 2017 1 commit
  10. 08 Sep, 2017 1 commit
    • paulwilkins's avatar
      Fix bug in intra mode rd penalty. · 0657f473
      paulwilkins authored
      The intra mode rd penalty was implemented as a rate penalty.
      Code was added to scale the penalty according to block size but
      this was not done correctly for the SB level or sub 8x8.
      
      The code did a weird double scaling in regard to bit depth that
      has been removed. Given that it is a rate penalty the bit depth
      should not matter.
      
      This bug fix improves average metrics  on our standard test
      sets by about 0.1%
      
      Change-Id: I7cf81b66aad0cda389fe234f47beba01c7493b1e
      0657f473
  11. 07 Sep, 2017 1 commit
  12. 06 Sep, 2017 1 commit
    • Linfeng Zhang's avatar
      Add ScaleFrameTest · d5d2cbcc
      Linfeng Zhang authored
      Move class VpxScaleBase to new file test/vpx_scale_test.h.
      Add new file test/vp9_scale_test.cc with ScaleFrameTest.
      
      BUG=webm:1419
      
      Change-Id: Iec2098eafcef99b94047de525e5da47bcab519c1
      d5d2cbcc
  13. 05 Sep, 2017 1 commit
  14. 01 Sep, 2017 1 commit
  15. 31 Aug, 2017 1 commit
  16. 29 Aug, 2017 1 commit
  17. 28 Aug, 2017 1 commit
  18. 25 Aug, 2017 2 commits
    • Marco's avatar
      vp9: Speed 6 adapt_partition for live/vbr usage. · a0de2692
      Marco authored
      Enable adapt_partition for vbr mode for speed 6.
      This allows the usage of the pickmode-based partition
      (used in speed 5), but only selectively for superblocks
      with high source sad, otherwise the faster variance based
      partition scheme is used.
      
      For speed 6 on ytlive set: avgPSNR/SSIM metrics up by ~0.6%,
      several clips up by ~1.5%. Small/negligible decrease in speed.
      
      Change-Id: I12f3efef6b3e059391de330fdbe5a44c2587f1f8
      a0de2692
    • Marco's avatar
      vp9: SVC: Modify mv search condition in speed features. · a74593b3
      Marco authored
      For SVC at speed >= 7: only use the improved mv search
      on base spatial layer, if top layer resolution is above 640x360.
      
      ~2.3% speedup
      Small/negligible loss in avgPSNR metrics on rtc set.
      
      Change-Id: Iaef75a57ebf1c248931bc1aa28d20b7fecac1851
      a74593b3
  19. 24 Aug, 2017 1 commit
    • Marco's avatar
      vp9: Adjust 16x16 splot threshold for variance partition · d1477715
      Marco authored
      For speeds < 7, increase threshold that controls the split
      of 16x16->8x8 blocks, for resolutions 720p and higher.
      
      Minor change for speed 5 (since it uses reference partition scheme
      which only uses variance partition as first step).
      For speed 6: ~0.5% increase in avgPSNR/SSIM metrics on ytlvie set.
      No change in speed.
      
      Change-Id: I5126580973201538d8ca26a9256b93c4d11d685b
      d1477715
  20. 23 Aug, 2017 2 commits
    • Marco's avatar
      vp9: SVC: Skip NEWMV for small blocks for (0, 0) base_mv. · c9ff7b66
      Marco authored
      For SVC encoding:
      average speedup ~1.5%, with small ~0.57 loss in avgPSNR metrics.
      
      Change-Id: Icebce6f6ef4e819d7dfcf8db898c583167351de4
      c9ff7b66
    • Johann's avatar
      quantize fp: neon implementation · e83d99d7
      Johann authored
      About 4x faster when values are below the dequant threshold and 10x
      faster if everything needs to be calculated.
      
      Both numbers would improve if the division for dqcoeff could be
      simplified.
      
      BUG=webm:1426
      
      Change-Id: I8da67c1f3fcb4abed8751990c1afe00bc841f4b2
      e83d99d7
  21. 22 Aug, 2017 2 commits
    • Marco's avatar
      vp9: Condition lighting change detection on CBR mode. · a31461c8
      Marco authored
      This feature is used for the CBR RTC encoding mode
      at speed >= 6. This change will exclude it for VBR mode.
      
      For speed 6 live encoding (VBR):
      avgPSNR/SSIM metrics on ytlive set up by ~1% (few clips up by 2/3%).
      No change in speed.
      
      Change-Id: I1a0dd94c334f7df309ab5a48d477d7e25355b798
      a31461c8
    • Johann's avatar
      quantize: capture skip block early · 7a178a56
      Johann authored
      This should probably be handled before vp9_regular_quantize_b_4x4 even
      gets called.
      
      Fixes an assert resulting from removing skip_block from the quantize
      functions.
      
      BUG=webm:1459
      
      Change-Id: I7f52b53f959b4654b3d4517ebda31a678f4d0fde
      7a178a56
  22. 21 Aug, 2017 3 commits
    • Johann's avatar
      quantize fp: ignore skip_block in arm · b527b473
      Johann authored
      Change-Id: Ie8ac00efa826eead2a227726a1add816e04ff147
      b527b473
    • Johann's avatar
      quantize fp: ignore skip_block in x86 · 7b13d99b
      Johann authored
      Change-Id: I1272917c49cf6e6710e52c36535b2fc8c8dced78
      7b13d99b
    • Johann's avatar
      Remove skip_block from quantize · 13eed991
      Johann authored
      This condition is handled before this code is reached. The ssse3 version
      of the function has always crashed when attempting to handle the
      skip_block condition.
      
      Add assert() and comments regarding the usage of skip_block.
      
      Removing the parameter is a fairly involved process so leave it be for
      the moment.
      
      Change-Id: Ib299f6fc6589d7ee102262cc74a7aeb60110bc5a
      13eed991
  23. 17 Aug, 2017 1 commit
    • Johann's avatar
      quantize: normalize intermediate types · 7f602d61
      Johann authored
      Despite abs_coeff being a positive value, all the other implementations
      treat it as signed which simplifies restoring the sign.
      
      HBD builds cast qcoeff to avoid a visual studio warning. Match
      vp9_quantize.c style of casting the entire expression.
      
      Change-Id: I62b539b8df05364df3d7644311e325288da7c5b5
      7f602d61
  24. 16 Aug, 2017 2 commits
    • paulwilkins's avatar
      Prevent parameters that can cause invalid ARF groups. · b814e2d8
      paulwilkins authored
      Having a very low "lag_in_frames" value could cause the encoder to create
      incorrect / corrupt ARF groups including displayed frames that update the
      ARF buffer and false overlay frames that are coded at low rate but are not
      actually overlays of a real ARF frame.
      
      This is linked to a reported unit test "slow down" where the chosen parameters
      (lag of 3 frames) gave rise to such "broken" ARF group(s).
      
      See also BUG=webm:1454
      
      Change-Id: If52d0236243ed5552537d1ea9ed3fed8c867232c
      b814e2d8
    • paulwilkins's avatar
      Fix for encoder slowdown (for speeds >= 3) · e15be302
      paulwilkins authored
      Some clips in nightly unit test exhibiting significant encoder slowdown which
      appears to bisect to Change-Id: I692311a709ccdb6003e705103de9d05b59bf840a.
      
      The above change allowed for emergency iterations of the recode loop and
      adjustment of the Q range if there is a large rate miss.
      
      This patch disables the above adaptation for cases of cpu_speed >= 3 or more
      specifically where cpi->sf.recode_loop >= ALLOW_RECODE_KFARFGF.
      
      For speeds >= 3 the code does not currently run a dummy bit pack operation
      inside the recode loop. Without this dummy pack operation there is no up to
      date estimate of the current frame's size to use as a basis for assessing the
      requirement for a recode. In practice it was using the previous frames size (or 0
      for the first frame) which could cause odd behavior.
      
      If we require the emergency rate correction added in  Change-Id: I6923.. for
      the higher speed settings it will be necessary to enable the dummy pack
      which will in turn hurt encode speed.
      
      BUG=webm:1454
      
      Change-Id: I4fb3c6062ca9508325a6f31582f8e80f1a9b126f
      e15be302
  25. 15 Aug, 2017 2 commits
    • Jerome Jiang's avatar
      Clean up writing YUV files for debug purpose. · a153080b
      Jerome Jiang authored
      Change legacy vp8/9_write_yuv_frame to vpx_write_yuv_files.
      Delete some flags that can be enabled during build.
      
      To enable writing denoised YUV, use the following command line:
      CFLAGS='-DOUTPUT_YUV_DENOISED' ./configure
      --enable-vp9-temporal-denoising
      
      For skinmap, use CFLAGS='-DOUTPUT_YUV_SKINMAP'
      
      Change-Id: I236974ac8b3cf279d20c4dc7f6162d8b480b6528
      a153080b
    • Marco's avatar
      vp9: Denoiser fix: use correct bsize for skin detection. · e9ccc6fe
      Marco authored
      Change-Id: I9d201fa3a4b00ebd147b57ed519fab8d59b0a802
      e9ccc6fe