1. 14 Dec, 2017 1 commit
  2. 12 Dec, 2017 4 commits
    • Frank Barchard's avatar
      Add I420ToAR30 10 bit RGB · bb3180ae
      Frank Barchard authored
      For more complete support of AR30 format, add I420ToAR30 allowing
      the new RGB 10 bit format to be used from standard 8 bit I420 format.
      
      Bug: libyuv:751
      Test: I420ToAR30 unittest added
      Change-Id: Ia8b0857447408bd6adab485158ce5f38d6dc2faa
      Reviewed-on: https://chromium-review.googlesource.com/823243Reviewed-by: 's avatarWeiyong Yao <braveyao@chromium.org>
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      bb3180ae
    • Frank Barchard's avatar
      ARGBToAR30 SSSE3 use pmulhuw to replicate fields · c3677514
      Frank Barchard authored
      AR30 is optimized with 3 techniques
      1. pmulhuw is used to replicate 8 bits to 10 bits.
      2. Two channels are processed at a time.  R and B, and A and G.
      3. pshufb is used to shift and mask 2 channels of R and B
      
      Bug: libyuv:751
      Test: ARGBToAR30_Opt
      Change-Id: I4e62d6caa4df7d0ae80395fa911d3c922b6b897b
      Reviewed-on: https://chromium-review.googlesource.com/822520Reviewed-by: 's avatarrichard winterton <rrwinterton@gmail.com>
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      c3677514
    • Mirko Bonadei's avatar
      Using all_dependent_configs to pass libyuv_config around. · d94a4867
      Mirko Bonadei authored
      Using public_configs, client projects must rely on public_deps to
      propagate configurations up in the build graph. This is bad because
      public_deps allows the exposition of headers that live in another
      target. This can lead to a really unhealthy build.
      
      On the other side, all_dependent_configs is automatically propagated
      up in the build graph but if a target includes a libyuv header it is
      forced by GN to declare the dependency (and this will propagate
      libyuv_config).
      
      Bug: webrtc:8605, webrtc:8603
      Change-Id: I4d71bb5de0b5b62a4ec110349223614f0b98e655
      No-Try: True
      Reviewed-on: https://chromium-review.googlesource.com/822112
      Commit-Queue: Mirko Bonadei <mbonadei@chromium.org>
      Reviewed-by: 's avatarPatrik Höglund <phoglund@chromium.org>
      d94a4867
    • Frank Barchard's avatar
      ARGBToAR30 use vpmulhuw to replicate fields · 11dd1b95
      Frank Barchard authored
      AR30 is optimized with 3 techniques
      1. vpmulhuw is used to replicate 8 bits to 10 bits.
      2. Two channels are processed at a time.  R and B, and A and G.
      3. vpshufb is used to shift and mask 2 channels of R and B
      
      Red Blue
      With the 8 bit value in the upper bits, vpmulhuw by (1024+4) will produce a 10
      bit value in the low 10 bits of each 16 bit value. This is whats wanted for the
      blue channel. The red needs to be shifted 4 left, so multiply by (1024+4)*16 for
      red.
      
      Alpha Green
      Alpha and Green are already in the high bits so vpand can zero out the other
      bits, keeping just 2 upper bits of alpha and 8 bit green. The same multiplier
      could be used for Green - (1024+4) putting the 10 bit green in the lsb.  Alpha
      would be a simple multiplier to shift it into position.  It wants a gap of 10
      above the green.  Green is 10 bits, so there are 6 bits in the low short.  4
      more are needed, so a multiplier of 4 gets the 2 bits into the upper 16 bits,
      and then a shift of 4 is a multiply of 16, so (4*16) = 64.  Then shift the
      result left 10 to position the A and G channels.
      
      Bug: libyuv:751
      Test: ARGBToAR30_Opt
      Change-Id: Ie4f20dce18203bae7b75acb1fd5232db8a8a4f11
      Reviewed-on: https://chromium-review.googlesource.com/820046
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarCheng Wang <wangcheng@google.com>
      11dd1b95
  3. 09 Dec, 2017 1 commit
  4. 08 Dec, 2017 1 commit
  5. 07 Dec, 2017 1 commit
  6. 05 Dec, 2017 1 commit
  7. 30 Nov, 2017 1 commit
  8. 28 Nov, 2017 1 commit
    • Frank Barchard's avatar
      Convert16To8Row_SSSE3 port from AVX2 · 324fa327
      Frank Barchard authored
      H010ToAR30 uses Convert16To8Row_SSSE3 to convert 10 bit YUV to 8 bit.
      Then standard YUV conversion can be used.  This improves performance
      on low end CPUs.
      Future CL will by pass this conversion allowing for 10 bit YUV source,
      but the function will be useful as a utility for YUV conversions.
      
      Bug: libyuv:559, libyuv:751
      Test: out/Release/libyuv_unittest --gtest_filter=*H010ToAR30* --libyuv_width=1280 --libyuv_height=720 --libyuv_repeat=999 --libyuv_flags=-1 --libyuv_cpu_info=-1
      Change-Id: I9b3ef22d88a5fd861de4cf1900b4c6e8fd24d0af
      Reviewed-on: https://chromium-review.googlesource.com/792334
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarFrank Barchard <fbarchard@chromium.org>
      324fa327
  9. 27 Nov, 2017 1 commit
  10. 22 Nov, 2017 1 commit
  11. 21 Nov, 2017 1 commit
  12. 20 Nov, 2017 3 commits
  13. 17 Nov, 2017 1 commit
  14. 16 Nov, 2017 1 commit
  15. 15 Nov, 2017 1 commit
  16. 10 Nov, 2017 3 commits
  17. 09 Nov, 2017 2 commits
  18. 08 Nov, 2017 3 commits
  19. 07 Nov, 2017 3 commits
  20. 03 Nov, 2017 1 commit
  21. 02 Nov, 2017 1 commit
  22. 01 Nov, 2017 1 commit
  23. 31 Oct, 2017 2 commits
  24. 23 Oct, 2017 1 commit
  25. 19 Oct, 2017 2 commits
  26. 18 Oct, 2017 1 commit