1. 10 Jul, 2017 1 commit
    • Johann's avatar
      remove vp9_full_sad_search · 109faffe
      Johann authored
      This code is unused in vp9. Only vp8 still contains references to
      vpx_sad_NxMx[3|8] and only for sizes 16x16, 16x8, 8x16, 8x8 and 4x4.
      
      Remove the remaining sizes and all the highbitdepth versions.
      
      BUG=webm:1425
      
      Change-Id: If6a253977c8e0c04599e25cbeb45f71a94f563e8
      109faffe
  2. 06 Jun, 2017 1 commit
  3. 05 Jun, 2017 1 commit
  4. 03 Jun, 2017 1 commit
  5. 21 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      Make allow_exhaustive_searches feature no longer adaptive · bca45646
      Yunqing Wang authored
      A previous patch turned on allow_exhaustive_searches feature only for
      FC_GRAPHICS_ANIMATION content. This patch further modified the feature
      by removing the exhaustive search limit, and made it no longer adaptive.
      As a result, the 2 counts that recorded the number of motion searches
      were removed, which helped achieve the determinism in the row based
      multi-threading encoding. Tests showed that this patch didn't cause
      the encoder much slower.
      
      Used exhaustive_searches_thresh for this speed feature, and removed
      allow_exhaustive_searches. Also, refactored the speed feature code
      to follow the general speed feature setting style.
      
      Change-Id: Ib96b182c4c8dfff4c1ab91d2497cc42bb9e5a4aa
      bca45646
  6. 11 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      Fix an integer overflow in vp9_mcomp.c · f22b828d
      Yunqing Wang authored
      The MV unit test revealed an integer overflow issue in vp9_mcomp.c.
      This was caused if the MV was very large. In mv_err_cost(), when
      mv->row = 8184, mv->col = 8184 and ref_mv is 0, mv_cost = 34363
      and error_per_bit = 132412, causing the overflow.
      
      BUG=webm:1406
      
      Change-Id: I35f8299f22f9bee39cd9153d7b00d0993838845e
      f22b828d
  7. 06 Apr, 2017 1 commit
    • Yunqing Wang's avatar
      VP9 motion vector unit test · 1aa46abb
      Yunqing Wang authored
      To prevent the motion vector out of range bug, added a motion vector unit
      test in VP9. 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.
      
      The tests showed that this unit test could reveal the issue we saw before.
      
      Change-Id: I0a880bd847dad8a13f7fd2012faf6868b02fa3b4
      1aa46abb
  8. 03 Apr, 2017 1 commit
  9. 15 Feb, 2017 1 commit
    • Ranjit Kumar Tulabandu's avatar
      Row based multi-threading of encoding stage · 71061e93
      Ranjit Kumar Tulabandu authored
      (Yunqing Wang)
      This patch implements the row-based multi-threading within tiles in
      the encoding pass, and substantially speeds up the multi-threaded
      encoder in VP9.
      
      Speed tests at speed 1 on STDHD(using 4 tiles) set show that the
      average speedups of the encoding pass(second pass in the 2-pass
      encoding) is 7% while using 2 threads, 16% while using 4 threads,
      85% while using 8 threads, and 116% while using 16 threads.
      
      Change-Id: I12e41dbc171951958af9e6d098efd6e2c82827de
      71061e93
  10. 14 Feb, 2017 1 commit
  11. 07 Feb, 2017 1 commit
  12. 01 Feb, 2017 2 commits
    • Ranjit Kumar Tulabandu's avatar
      Changes to facilitate row based multi-threading of ARNR filtering · 359a6796
      Ranjit Kumar Tulabandu authored
      Change-Id: I2fd72af00afbbeb903e4fe364611abcc148f2fbb
      359a6796
    • Jingning Han's avatar
      Fix real-time compression regression in hbd mode · 969957f9
      Jingning Han authored
      This commit resolves the compression performance regression in
      real-time encoding setting when high bit-depth mode is enabled.
      
      The current solution temporarily disables the SIMD implementations
      of vpx_satd, hadamard8x8, and hadamard16x16 in high bit-depth mode.
      
      The commit makes the coding results bit-wise identical between
      regular coding pipeline and high bit-depth at profile 0.
      
      BUG=webm:1365
      
      Change-Id: Icfb900821733749685370460a1a5a7e07f76f4bf
      969957f9
  13. 24 Jan, 2017 1 commit
    • Yunqing Wang's avatar
      Remove marco MVC in mcomp.c · b987bc36
      Yunqing Wang authored
      Removed MVC so that mv_err_cost() is always called while calculating
      the mv cost.
      
      Change-Id: I28123e05fbfc2352128e266c985d2ab093940071
      b987bc36
  14. 03 Jan, 2017 1 commit
  15. 27 Dec, 2016 1 commit
  16. 15 Sep, 2016 1 commit
  17. 08 Aug, 2016 1 commit
  18. 02 Aug, 2016 1 commit
  19. 25 Jun, 2016 1 commit
    • James Zern's avatar
      s/UINT32_MAX/UINT_MAX/ · ca88d22f
      James Zern authored
      provides better toolchain compatibility
      
      Change-Id: I8561a6de668a68ff54fe3886a4ee6300f0ae9c04
      ca88d22f
  20. 24 Jun, 2016 1 commit
  21. 21 Jun, 2016 1 commit
  22. 11 May, 2016 2 commits
  23. 15 Mar, 2016 1 commit
  24. 09 Feb, 2016 1 commit
    • Alex Converse's avatar
      Restore previous motion search bit-error scale. · fac947df
      Alex Converse authored
      The bit to error transformation got doubled as a result of going from
      8-bit to 9-bit costs (change d13385ce).
      
      Use defines to derive the scale numbers and comment some of the fields.
      
      derf: -0.023 BDRATE
      hevcmr: +0.067 BDRATE
      stdhd: +0.098 BDRATE
      (These are substantially smaller than than the original gains from 8 to
      9 bit costing.)
      
      Change-Id: I6a2b3b029b2f1415e4f90a05709b2333ec0eea9b
      fac947df
  25. 03 Feb, 2016 1 commit
  26. 01 Feb, 2016 1 commit
  27. 20 Jan, 2016 1 commit
  28. 13 Jan, 2016 1 commit
  29. 14 Dec, 2015 1 commit
  30. 13 Nov, 2015 1 commit
    • paulwilkins's avatar
      Changes to exhaustive motion search. · 0149fb3d
      paulwilkins authored
      This change 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 clips though the quality gain and speed impact are small.
      
      Change-Id: Id22967a840e996e1db273f6ac4ff03f4f52d49aa
      0149fb3d
  31. 11 Nov, 2015 1 commit
    • Geza Lore's avatar
      Add AVX vectorized vp9_diamond_search_sad · 5eefd3eb
      Geza Lore authored
      This function now has an AVX intrinsics version which is about 80%
      faster compared to the C implementation. This provides a 2-4% total
      speed-up for encode, depending on encoding parameters. The function
      utilizes 3 properties of the cost function lookup table, constructed
      in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'.
      For the joint cost:
        - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3]
      For the component costs:
        - For all i: mvsadcost[0][i] == mvsadcost[1][i]
              (equal per component cost)
        - For all i: mvsadcost[0][i] == mvsadcost[0][-i]
              (Cost function is even)
      These must hold, otherwise the AVX version of the function cannot be used.
      
      Change-Id: I6c2791d43022822a9e6ab43cd124a773946d0bdc
      5eefd3eb
  32. 06 Nov, 2015 1 commit
    • James Zern's avatar
      Revert "Add AVX vectorized vp9_diamond_search_sad" · 30466f26
      James Zern authored
      This reverts commit f1342a7b.
      
      This breaks 32-bit builds:
       runtime error: load of misaligned address 0xf72fdd48 for type 'const
      __m128i' (vector of 2 'long long' values), which requires 16 byte
      alignment
      
      + _mm_set1_epi64x is incompatible with some versions of visual studio
      
      Change-Id: I6f6fc3c11403344cef78d1c432cdc9147e5c1673
      30466f26
  33. 05 Nov, 2015 1 commit
    • Geza Lore's avatar
      Add AVX vectorized vp9_diamond_search_sad · f1342a7b
      Geza Lore authored
      This function now has an AVX intrinsics version which is about 80%
      faster compared to the C implementation. This provides a 2-4% total
      speed-up for encode, depending on encoding parameters. The function
      utilizes 3 properties of the cost function lookup table, constructed
      in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'.
      For the joint cost:
        - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3]
      For the component costs:
        - For all i: mvsadcost[0][i] == mvsadcost[1][i]
              (equal per component cost)
        - For all i: mvsadcost[0][i] == mvsadcost[0][-i]
              (Cost function is even)
      These must hold, otherwise the AVX version of the function cannot be used.
      
      Change-Id: I184055b864c5a2dc37b2d8c5c9012eb801e9daf6
      f1342a7b
  34. 28 Oct, 2015 1 commit
  35. 31 Aug, 2015 1 commit
  36. 29 Aug, 2015 1 commit
  37. 27 Aug, 2015 1 commit
  38. 06 Aug, 2015 1 commit
    • Yunqing Wang's avatar
      Improve the second-level sub-pixel motion search · 7418b176
      Yunqing Wang authored
      Re-investigated the second-level sub-pixel motion search. Improved the
      way of choosing search points. Rewrote the second-level search code.
      
      At speed 0, the borg tests showed:
      1. for stdhd set, Avg PSNR gain: 0.216%; Overall PSNR gain: 0.196%;
         SSIM gain: 0.206%. Only 1 out of 15 clips showed PSNR loss.
      2. for derf set, Avg PSNR gain: 0.171%; Overall PSNR gain: 0.192%;
         SSIM gain: 0.207%. Only 3 out of 30 clips showed PSNR losses.
      Added the condition for third-point checking, namely, less points
      were checked. Speed tests showed no speed loss(Avg 0.3% speedup at
      speed 0).
      
      Change-Id: I6284ebb3fa7ba63be8528184c49e06757211a7f1
      7418b176