1. 12 Jun, 2018 1 commit
  2. 01 Jun, 2018 1 commit
  3. 11 May, 2018 1 commit
  4. 19 Apr, 2018 1 commit
    • Robert Bares's avatar
      Allow negative height when ConvertToI420/ARGB is called with NV12/NV21 · a8aa921c
      Robert Bares authored
      ConvertToI420 and ConvertToARGB support the use of a negative height
      parameter to flip the image vertically. When converting from NV12 or
      NV21 this parameter was misinterpreted, resulting in invalid output.
      This CL introduces the use of abs_src_height to correctly calculate
      the location of the source UV plane.
      
      The sign of crop_height is not used, to reduce confusion ConvertToI420
      and ConvertToARGB no longer accept negative crop height.
      
      Unit tests for Android420ToI420 are updated to fix miscalculation of
      src_stride_uv, fix incorrect pixel strides, and to test inversion.
      New unit tests are included to test inversion for ConvertToARGB,
      ConvertToI420, Android420ToARGB, and Android420ToABGR.
      For consistency the test NV12Crop is renamed ConvertToI420_NV12_Crop.
      
      Bug: libyuv:446
      Test: out/Release/libyuv_unittest --gtest_filter=*.ConvertTo*:*.Android420To*
      Change-Id: Idc98e62671cb30272cfa7e24fafbc8b73712f7c6
      Reviewed-on: https://chromium-review.googlesource.com/994074
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarFrank Barchard <fbarchard@chromium.org>
      a8aa921c
  5. 13 Apr, 2018 3 commits
    • Johann's avatar
      add const to casts · b8696fde
      Johann authored
      When casting a const value, ensure the cast is const as well.
      
      BUG=webm:1509
      
      Change-Id: I5b597fdcc148d111e9824bc7cf918fc5f24e970f
      Reviewed-on: https://chromium-review.googlesource.com/996553Reviewed-by: 's avatarFrank Barchard <fbarchard@chromium.org>
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      b8696fde
    • Frank Barchard's avatar
      use attribute to alias for punning float to int · 7e5e1275
      Frank Barchard authored
      Bug: libyuv:791
      Test: g++ -Iinclude -I../libvpx/third_party/libwebm -I../libvpx/vp8 -I../libvpx/vp8 -I../libvpx/vp9 -I../libvpx/vp9 -Iinclude -m64 -DNDEBUG -O3 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wdisabled-optimization -Wfloat-conversion -Wpointer-arith -Wtype-limits -Wcast-qual -Wvla -Wuninitialized -Wunused -Wextra -I. -I"../libvpx" -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -Wno-unused-parameter -c -o third_party/libyuv/source/row_common.cc.o source/row_common.cc
      Change-Id: Ia006cb9212b671ae668cab5ec0b29759024a2c8a
      Reviewed-on: https://chromium-review.googlesource.com/1012462Reviewed-by: 's avatarJohann Koenig <johannkoenig@google.com>
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      7e5e1275
    • Johann's avatar
      row_common.cc: add const to cast · 190fb79c
      Johann authored
      When casting input for loads, include modifiers such as 'const'
      
      Clears build warnings:
      
      warning: cast from type 'const uint8_t* {aka const unsigned char*}' to
      type 'uint32_t* {aka unsigned int*}' casts away qualifiers [-Wcast-qual]
      
      Bug: webm:1509, libyuv:791
      Test: g++ -Iinclude -I../libvpx/third_party/libwebm -I../libvpx/vp8 -I../libvpx/vp8 -I../libvpx/vp9 -I../libvpx/vp9 -Iinclude -m64 -DNDEBUG -O3 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wdisabled-optimization -Wfloat-conversion -Wpointer-arith -Wtype-limits -Wcast-qual -Wvla -Wuninitialized -Wunused -Wextra -I. -I"../libvpx" -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -Wno-unused-parameter -c -o third_party/libyuv/source/row_common.cc.o source/row_common.cc
      
      
      
      
      Change-Id: I1e3b2fe2a4ae9dd466c3db9cde0560aceb9d1398
      Reviewed-on: https://chromium-review.googlesource.com/996393Reviewed-by: 's avatarFrank Barchard <fbarchard@chromium.org>
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      190fb79c
  6. 03 Apr, 2018 1 commit
    • Frank Barchard's avatar
      Disable AVX512 for iOS simulator xcode 9 builds. · a9626b9d
      Frank Barchard authored
      iOS simulator has the option to build with xcode instead of clang.
      GN use_xcode_clang=true enables the xcode build.
      As of version Xcode 9.2, the clang version used does not support
      AVX512.  The version reported is version 9, but for normal clang,
      version 7 is sufficient to AVX512.
      When a version of XCode does support AVX512, the version check can
      be updated to allow AVX512 for newer versions of XCode.
      with XCode 9.2 the following macro is set.
      __APPLE_CC__ 6000
      
      Bug: libyuv:789
      Test: gn gen out/Release "--args=is_debug=false target_os=\"ios\" ios_enable_code_signing=false target_cpu=\"x86\" use_xcode_clang=true"
      Change-Id: I5a9a0b4a2760c7d09a4bcb464b3668979113b07e
      Reviewed-on: https://chromium-review.googlesource.com/991595Reviewed-by: 's avatarrichard winterton <rrwinterton@gmail.com>
      a9626b9d
  7. 30 Mar, 2018 1 commit
  8. 28 Mar, 2018 2 commits
  9. 26 Mar, 2018 1 commit
  10. 20 Mar, 2018 1 commit
  11. 10 Mar, 2018 2 commits
  12. 08 Mar, 2018 1 commit
  13. 07 Mar, 2018 1 commit
  14. 27 Feb, 2018 1 commit
  15. 24 Feb, 2018 1 commit
  16. 22 Feb, 2018 1 commit
  17. 21 Feb, 2018 4 commits
  18. 16 Feb, 2018 1 commit
  19. 15 Feb, 2018 2 commits
  20. 12 Feb, 2018 1 commit
    • Frank Barchard's avatar
      Tidy applied with all safe checks on all arm, mips and intel, 32 and 64 bit · 8a00c2bb
      Frank Barchard authored
      Using clang-tidy 7.
      warnings=-*,mpi-*,objc-*,llvm-*,hicpp-*,-hicpp-use-noexcept,llvm-*,-hicpp-deprecated-headers,-hicpp-use-auto,bugprone-*,cert-*,google-*,-google-readability-casting,misc-*,,-misc-unused-parameters,-misc-macro-parentheses,cppcoreguidelines-*,-cppcoreguidelines-pro-type-member-init,readability-*,-readability-non-const-parameter,-readability-implicit-bool-conversion,fuchsia-*,-fuchsia-multiple-inheritance,-android-cloexec-*
      
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D__ARM_NEON__ -D__arm__   -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D__mips_msa               -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D__aarch64__              -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D_MSC_VER=1600 -D_M_IX86  -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D_MSC_VER=1600 -D_M_X64   -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D__i386__                 -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      ~/bin/clang-tidy -fix-errors -format-style=file -checks=$warnings $* -- -Iinclude -D__x86_64__               -D__clang__ -D__clang_major__=6 -DHAVE_JPEG
      
      Bug: libyuv:750
      Test: builds and runs and passes more tidy tests
      Change-Id: Ieb0f026c5b5a1d2daf8aca18b9290927fdaaa55c
      Reviewed-on: https://chromium-review.googlesource.com/907853Reviewed-by: 's avatarWeiyong Yao <braveyao@chromium.org>
      8a00c2bb
  21. 09 Feb, 2018 1 commit
  22. 08 Feb, 2018 1 commit
  23. 07 Feb, 2018 2 commits
  24. 02 Feb, 2018 2 commits
    • Frank Barchard's avatar
      I422ToUYVYRow_AVX2 use vpmovzxbd instead of vpermq · 5790a765
      Frank Barchard authored
      I422ToUYVYRow_AVX2 optimized from 7 cycles per 32 pixels to 4.6 cycles.
      Instead of 2 vpermq and vpunpcklbw:
      vmovdqu    (%1),%%xmm2
      vmovdqu    0x00(%1,%2,1),%%xmm3
      vpermq     $0xd8,%%ymm2,%%ymm2
      vpermq     $0xd8,%%ymm3,%%ymm3
      vpunpcklbw %%ymm3,%%ymm2,%%ymm2
      
      ..use vpmovzxbd to expand the bytes to shorts, then vpslld and vpor
      vpmovzxbd  (%1),%%ymm2
      vpmovzxbd  0x00(%1,%2,1),%%ymm3
      vpslld     $0x10,%%ymm3,%%ymm3
      vpor       %%ymm3,%%ymm2,%%ymm2
      which reduces the port 5 bottleneck by 1 cycle.
      
      Bug: libyuv:556
      Test: out/Release/libyuv_unittest --gtest_filter=*I42?To*UY*Opt
      
      Change-Id: I53799e53cc6b090a1a695c839094c193be3eecaf
      Reviewed-on: https://chromium-review.googlesource.com/899873
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarrichard winterton <rrwinterton@gmail.com>
      Reviewed-by: 's avatarCheng Wang <wangcheng@google.com>
      5790a765
    • Frank Barchard's avatar
      I422ToYUY2Row_AVX2 use vpmovzxbd instead of vpermq · 7ff53f32
      Frank Barchard authored
      I422ToYUY2Row_AVX2 optimized from 7 cycles per 32 pixels to 6 cycles.
      Instead of 2 vpermq and vpunpcklbw:
      vmovdqu    (%1),%%xmm2
      vmovdqu    0x00(%1,%2,1),%%xmm3
      lea        0x10(%1),%1
      vpermq     $0xd8,%%ymm2,%%ymm2
      vpermq     $0xd8,%%ymm3,%%ymm3
      vpunpcklbw %%ymm3,%%ymm2,%%ymm2
      
      ..use vpmovzxbd to expand the bytes to shorts, then vpslld and vpor
      vpmovzxbd  (%1),%%ymm2
      vpmovzxbd  0x00(%1,%2,1),%%ymm3
      vpslld     $0x10,%%ymm3,%%ymm3
      vpor       %%ymm3,%%ymm2,%%ymm2
      which reduces the port 5 bottleneck by 1 cycle.
      
      Bug: libyuv:556
      Test: out/Release/libyuv_unittest --gtest_filter=*I42?To*UY*Opt
      
      I422ToYUY2Row_AVX2 optimization
      
      Improve performance of AVX2 code by avoiding vpermq
      
      Bug: libyuv:556
      Test: /usr/local/google/home/fbarchard/iaca-lin64/bin/iaca.sh -reduceout -arch BDW out/Release/obj/libyuv_internal/row_gcc.o
      Change-Id: Ie36732da23ecea1ffcc6b297bacc962780b59ef1
      Reviewed-on: https://chromium-review.googlesource.com/898067
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarrichard winterton <rrwinterton@gmail.com>
      7ff53f32
  25. 01 Feb, 2018 1 commit
    • Frank Barchard's avatar
      I420ToYUY2_AVX2 port · 664c7356
      Frank Barchard authored
      I420 and I422 To YUY2 and UYVY ported from SSE2 to AVX2.
      
      Was SSE2
      I420ToYUY2_Opt (135 ms)
      I420ToUYVY_Opt (148 ms)
      I422ToYUY2_Opt (145 ms)
      I422ToUYVY_Opt (142 ms)
      
      Now AVX2
      I420ToYUY2_Opt (133 ms)
      I420ToUYVY_Opt (130 ms)
      I422ToYUY2_Opt (127 ms)
      I422ToUYVY_Opt (137 ms)
      
      Bug: libyuv:556
      Test: out/Release/libyuv_unittest --sandbox_unittests --gtest_filter=*I42?To*UY*Opt
      Change-Id: Ic35f97cee02dc009fd98785589ba17c7cf50bb35
      Reviewed-on: https://chromium-review.googlesource.com/892493
      Commit-Queue: Frank Barchard <fbarchard@chromium.org>
      Reviewed-by: 's avatarrichard winterton <rrwinterton@gmail.com>
      664c7356
  26. 29 Jan, 2018 2 commits
  27. 27 Jan, 2018 1 commit
  28. 26 Jan, 2018 1 commit
  29. 25 Jan, 2018 1 commit