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
  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
    • Linfeng Zhang's avatar
      Remove the unnecessary cast of (int16_t)cospi_{1...31}_64 · d586cdb4
      Linfeng Zhang authored
      Change-Id: If59743aafe99226e0ec67ab5d20678ce25f53ab8
    • 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.
      Failed test C/TransHT.AccuracyCheck/26.
      Change-Id: Id001f57aad811803ef7d367d2b2bc008d8499991
  4. 19 Sep, 2017 4 commits
    • Linfeng Zhang's avatar
      cosmetics: NEON scaling code · 7c052972
      Linfeng Zhang authored
      Change-Id: Ib91054622c1f09c4ca523bc6837d7d8ab9f03618
    • 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
    • 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
    • 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
  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
    • 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
      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.
      Change-Id: I02080b169cbbef4ab2e08c0df4697ce894aad83c
  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.
      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.)
      Change-Id: Ibb9242a629ddb03e1ff93b859bece738255e698c
  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
  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.
      Change-Id: Iec2098eafcef99b94047de525e5da47bcab519c1
  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
    • 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
  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
  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
    • 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
      Change-Id: I8da67c1f3fcb4abed8751990c1afe00bc841f4b2
  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
    • 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
      Change-Id: I7f52b53f959b4654b3d4517ebda31a678f4d0fde
  22. 21 Aug, 2017 3 commits
    • Johann's avatar
      quantize fp: ignore skip_block in arm · b527b473
      Johann authored
      Change-Id: Ie8ac00efa826eead2a227726a1add816e04ff147
    • Johann's avatar
      quantize fp: ignore skip_block in x86 · 7b13d99b
      Johann authored
      Change-Id: I1272917c49cf6e6710e52c36535b2fc8c8dced78
    • 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
  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
  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
    • 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.
      Change-Id: I4fb3c6062ca9508325a6f31582f8e80f1a9b126f
  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
      For skinmap, use CFLAGS='-DOUTPUT_YUV_SKINMAP'
      Change-Id: I236974ac8b3cf279d20c4dc7f6162d8b480b6528
    • Marco's avatar
      vp9: Denoiser fix: use correct bsize for skin detection. · e9ccc6fe
      Marco authored
      Change-Id: I9d201fa3a4b00ebd147b57ed519fab8d59b0a802