1. 09 Dec, 2015 1 commit
    • Frank Barchard's avatar
      BlendPlane any width. · a2ea9056
      Frank Barchard authored
      Benchmark
      out\release\libyuv_unittest --libyuv_width=1279 --libyuv_height=719 --libyuv_repeat=999 --libyuv_flags=-1 --gtest_filter=*Blend* | sortms
      
      Was
      I420Blend_Any (2321 ms)
      I420Blend_Unaligned (1684 ms)
      I420Blend_Opt (1675 ms)
      I420Blend_Invert (1653 ms)
      BlendPlane_Invert (1556 ms)
      BlendPlane_Any (1552 ms)
      BlendPlane_Unaligned (1548 ms)
      BlendPlane_Opt (1535 ms)
      ARGBBlend_Unaligned (659 ms)
      ARGBBlend_Any (596 ms)
      ARGBBlend_Invert (591 ms)
      ARGBBlend_Opt (508 ms)
      BlendPlaneRow_Unaligned (186 ms)
      BlendPlaneRow_Opt (171 ms)
      
      Now
      ARGBBlend_Any (621 ms)
      ARGBBlend_Unaligned (585 ms)
      ARGBBlend_Invert (564 ms)
      ARGBBlend_Opt (512 ms)
      I420Blend_Unaligned (347 ms)
      I420Blend_Invert (345 ms)
      I420Blend_Any (337 ms)
      I420Blend_Opt (327 ms)
      BlendPlane_Unaligned (187 ms)
      BlendPlaneRow_Unaligned (187 ms)
      BlendPlane_Invert (186 ms)
      BlendPlane_Any (186 ms)
      BlendPlaneRow_Opt (173 ms)
      BlendPlane_Opt (171 ms)
      
      which is comparable to aligned case
      out\release\libyuv_unittest --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --gtest_filter=*Blend* | sortms
      ARGBBlend_Any (625 ms)
      ARGBBlend_Unaligned (602 ms)
      ARGBBlend_Invert (508 ms)
      ARGBBlend_Opt (506 ms)
      I420Blend_Any (353 ms)
      I420Blend_Unaligned (322 ms)
      I420Blend_Invert (304 ms)
      I420Blend_Opt (301 ms)
      BlendPlaneRow_Unaligned (188 ms)
      BlendPlane_Unaligned (186 ms)
      BlendPlane_Invert (185 ms)
      BlendPlane_Any (184 ms)
      BlendPlaneRow_Opt (173 ms)
      BlendPlane_Opt (169 ms)
      
      R=dhrosa@google.com, harryjin@google.com
      BUG=libyuv:527
      
      Review URL: https://codereview.chromium.org/1513443002 .
      a2ea9056
  2. 19 Nov, 2015 1 commit
  3. 10 Nov, 2015 1 commit
  4. 04 Nov, 2015 1 commit
  5. 03 Nov, 2015 1 commit
  6. 02 Nov, 2015 1 commit
  7. 30 Oct, 2015 1 commit
  8. 27 Oct, 2015 2 commits
    • Frank Barchard's avatar
      refactor I420AlphaToABGR to use I420AlphaToARGB internally · b86dbf24
      Frank Barchard authored
      swap U and V and transpose conversion matrix, so I420AlphaToARGB and
      I420AlphaToABGR share low level code.
      
      Having less code with same performance allows more focused
      optimization for future ARM versions.
      
      R=harryjin@google.com
      TBR=harryjin@chromium.org
      BUG=libyuv:473,libyuv:516
      
      Review URL: https://codereview.chromium.org/1422263002 .
      b86dbf24
    • Frank Barchard's avatar
      implement I444ToABGR by swapping uv and transpose matrix · cf160cdb
      Frank Barchard authored
      U contributes to B and G.  V contributes to R and G.
      By swapping U and V, they contribute to the opposite channels.  Adjust the matrix so the U contribution is in the matrix location such that it till contribute to the
      new B channel and vice versa.
      This allows ABGR versions of YUV conversion to use the same low level code as ARGB, just using a different matrix and swapping U and V pointers.
      
      As a result the existing I444ToABGRRow functions are no longer needed and are removed.
      
      Previously this function was only Intel AVX2 optimized for Windwos.  Now it is also optimized for Arm and GCC.
      
      ARMv7 Neon
      Was LibYUVConvertTest.I444ToABGR_Opt (75971 ms)
      Now LibYUVConvertTest.I444ToABGR_Opt (3672 ms)
      20.6 times faster.
      
      R=xhwang@chromium.org
      BUG=libyuv:515
      
      Review URL: https://codereview.chromium.org/1414133006 .
      cf160cdb
  9. 22 Oct, 2015 2 commits
    • Frank Barchard's avatar
      odd width 444 fix · 430bb0a0
      Frank Barchard authored
      TBR=harryjin@google.com
      BUG=libyuv:510
      
      Review URL: https://codereview.chromium.org/1415583003 .
      430bb0a0
    • Frank Barchard's avatar
      bug fix for odd width 16/24 bit to i420 · 90335f60
      Frank Barchard authored
      A bug was introduced on arm when the code for 'any' width switch to
      a temporary stack buffer and simd.
      The C version handles odd width by doing 1 pixel, instead of averaging 2.
      But the SIMD any version is supposed to replicate the last pixel, then
      the subsampling in Neon will average the pixel with itself, producing
      the same result.
      The previous version did this, but only for ARGB 32 bit, which was to
      avoid introducing issues with subsampled YUY2 source.  This CL adds
      replication for RGB 16 bit values.
      
      TBR=harryjin@google.com
      BUG=libyuv:510
      
      Review URL: https://codereview.chromium.org/1418983003 .
      90335f60
  10. 21 Oct, 2015 2 commits
  11. 15 Oct, 2015 1 commit
  12. 08 Oct, 2015 1 commit
    • Frank Barchard's avatar
      fix jpeg and bt.709 yuvconstants for neon64. · 76a599ec
      Frank Barchard authored
      yuv constants for bt.601 were previously ported to neon64, as well
      as the code to respect other color spaces.  But the jpeg and bt.709
      colour conversion constants were still in armv7 form.  This changes
      the constants for aarch64 builds to be compatible with the code.
      
      yuv constants are now passed as const *
      
      Remove Yvu constants which were used for older version on nv21 but not new code.
      
      TBR=harryjin@google.com
      BUG=none
      
      Review URL: https://codereview.chromium.org/1398623002 .
      76a599ec
  13. 07 Oct, 2015 1 commit
    • Frank Barchard's avatar
      Reimplement NV21ToARGB to allow different color matrix. · 914a9856
      Frank Barchard authored
      Low level for NV21ToARGB written to accept yuv matrix used by
      other YUV to ARGB functions.
      Previously NV21 was implemented for Windows using NV12 with a different
      matrix that swapped U and V.  But the Arm version of the low level does
      not allow the matrix U and V contributions to be swapped.
      Using a new low level function that reads NV21 and uses the same
      yuvconstants as other YUV conversion functions allows an Arm port of
      this function.
      
      TBR=harryjin@google.com
      BUG=libyuv:500
      
      Review URL: https://codereview.chromium.org/1388273002 .
      914a9856
  14. 30 Sep, 2015 1 commit
  15. 25 Sep, 2015 2 commits
    • Frank Barchard's avatar
      AVX2 1 step I422AlphaToARGB for gcc and win. · 9a0e12f5
      Frank Barchard authored
      C     I420AlphaToARGB_Opt (5169 ms)
      SSSE3 I420AlphaToARGB_Opt (432 ms)
      AVX2  I420AlphaToARGB_Opt (358 ms)
      
      and with premultiplication as 2 step process:
      I420AlphaToARGB_Premult (7029 ms)
      I420AlphaToARGB_Premult (757 ms)
      I420AlphaToARGB_Premult (508 ms)
      
      R=harryjin@google.com
      BUG=libyuv:496,libyuv:473
      
      Review URL: https://codereview.chromium.org/1372653003 .
      9a0e12f5
    • Frank Barchard's avatar
      I420Alpha row function in 1 pass. · e365cdde
      Frank Barchard authored
      API change - I420AlphaToARGB takes flag indicating if RGB should be
      premultiplied by alpha.
      
      This version implements an efficient SSSE3 version for Windows.
      C version done in 2 steps.
      
      Was
      libyuvTest.I420AlphaToARGB_Any (1136 ms)
      libyuvTest.I420AlphaToARGB_Unaligned (1210 ms)
      libyuvTest.I420AlphaToARGB_Invert (966 ms)
      libyuvTest.I420AlphaToARGB_Opt (1031 ms)
      libyuvTest.I420AlphaToABGR_Any (1020 ms)
      libyuvTest.I420AlphaToABGR_Unaligned (1359 ms)
      libyuvTest.I420AlphaToABGR_Invert (1082 ms)
      libyuvTest.I420AlphaToABGR_Opt (986 ms)
      
      R=harryjin@google.com
      BUG=libyuv:496
      
      Review URL: https://codereview.chromium.org/1367093002 .
      e365cdde
  16. 22 Sep, 2015 1 commit
  17. 18 Sep, 2015 1 commit
  18. 17 Sep, 2015 3 commits
  19. 15 Sep, 2015 1 commit
  20. 06 Sep, 2015 1 commit
  21. 03 Sep, 2015 2 commits
  22. 18 Aug, 2015 1 commit
    • Frank Barchard's avatar
      xmmword cast for clang · cda9d38a
      Frank Barchard authored
      clangcl use compare_win for 32 bit, allowing fallback and enabling avx2 code for clang.
      move defines/protos to compare_row.h
      fix issue with odd width ARGBCopyAlpha functions by copying destination to temp buffer, then doing alpha copy, then copy back to destination.
      
      R=harryjin@google.com
      TBR=harryjin@google.com
      BUG=libyuv:484
      
      Review URL: https://webrtc-codereview.appspot.com/59379004.
      cda9d38a
  23. 13 Aug, 2015 1 commit
  24. 28 Jul, 2015 1 commit
  25. 07 Jul, 2015 1 commit
  26. 04 Jul, 2015 1 commit
  27. 02 Jul, 2015 1 commit
  28. 24 Jun, 2015 2 commits
  29. 23 Jun, 2015 2 commits
  30. 22 Jun, 2015 1 commit
  31. 20 Jun, 2015 1 commit