1098 Commits

Author SHA1 Message Date
Frank Barchard
242cb2554c nv12 odd width support using SIMD for remainder
BUG=libyuv:448
TESTED=NV21ToRGB565_Any etc
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/53689004.
2015-06-12 16:07:20 -07:00
Frank Barchard
cae07fb0e0 bump subsampling up
BUG=455
TESTED=libyuvTest.ARGBToYUY2_Random
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/58419004.
2015-06-12 15:25:03 -07:00
Frank Barchard
03da5420bc use SIMD for I420ToARGB odd widths in a temporary buffer instead of using C for remainder.
Enter a description of the change.

use SIMD for I420ToARGB odd widths in a temporary buffer instead of using C for remainder.  Currently the C code does not exactly match the SIMD code, so an odd width produces different pixels than an even width, causing a subtle artifact.  By using SIMD consistently, there is no difference in even and odd widths.  Also the SIMD performance is faster, so even with overhead of memcpy, performance improves.

BUG=447
TESTED=out\release\libyuv_unittest.exe --gtest_filter=*I420ToARGB*
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/55579004.
2015-06-11 16:38:52 -07:00
Frank Barchard
ee351bc2d5 check height is non-zero
BUG=none
TESTED=libyuv unittest with even width
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/51219004.
2015-06-11 16:35:20 -07:00
fbarchard@google.com
2e9f3e5cf5 rename source files from row_posix.cc etc to row_gcc.cc to avoid gyp build filtering out source files from build when on windows with clang. The source code contained in row_gcc.cc is gcc syntax inline assembly available for any platform that supports gcc or clang for intel cpus.
BUG=440
TESTED=try bots
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/56579004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1430 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-06-09 17:27:52 +00:00
fbarchard@google.com
05416e2d9a Box filter for YUV use rows with accumulation buffer for better memory behavior. The old code would do columns accumulated into registers, and then store the result once. This was slow from a memory point of view. The new code does a row of source at a time, updating an accumulation buffer every row. The accumulation buffer is small, and should fit cache. Before each accumulation of N rows, the buffer needs to be reset to zero. If the memset is a bottleneck, it would be faster to do the first row without an add, storing to the accumulation buffer, and then add for the remaining rows.
BUG=425
TESTED=out\release\libyuv_unittest --gtest_filter=*ScaleTo1x1*
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/52659004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1428 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-06-09 01:05:18 +00:00
fbarchard@google.com
b07de879b6 enable intrinsics for clangcl if -mssse3 is enabled.
BUG=451
TESTED=untested
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/52699004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1427 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-06-08 22:48:18 +00:00
fbarchard@google.com
bd2d903e1b odd width support for ARGBSobel functions. Improves performance for images that are not a multiple of 8 pixels.
BUG=444
TESTED=libyuvTest.ARGBSobel_Opt
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/54589004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1415 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-28 22:22:28 +00:00
fbarchard@google.com
cfce47efc8 Change Sobel to use JPeg Luma calculation instead of extracting G channel. Using luma produces a better sobel that respects all 3 channels of RGB. Historically the G channel was used to improve performance, and because the luma of I420 is a constrained range, hurting quality. Using the JPeg variation of YUV, the luma is more accurate, including cross platform, better optimized for AVX2 and odd widths, and full range.
BUG=444
TESTED=ARGBSobelXY_Opt
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/57479004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1414 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-27 22:32:26 +00:00
fbarchard@google.com
7c09264ffc odd width support for scale by even scale factor and box scale down by 4. scale down by 4 uses scale down by 2 internally.
BUG=431
TESTED=libyuvTest.ARGBScaleDownBy4_Bilinear

Review URL: https://webrtc-codereview.appspot.com/57399004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1412 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-26 17:56:51 +00:00
fbarchard@google.com
c38aeec322 scale down by 2 on argb images support odd widths using _any function.
BUG=431
TESTED=libyuvTest.ARGBScaleDownBy2_Bilinear

Review URL: https://webrtc-codereview.appspot.com/52569004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1410 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-22 21:39:21 +00:00
fbarchard@google.com
632c50f29c include posix source for 64 bit clang builds.
BUG=440
TESTED=ninja -C out\Release_x64
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/46259004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1407 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-14 21:40:05 +00:00
fbarchard@google.com
3666015261 add nacl macros for arm to YUV422TORGB_SETUP_REG.
BUG=415
TESTED=ncval.exe newlib/Release/nacltest_arm.nexe
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/46229005

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1406 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-12 21:33:32 +00:00
fbarchard@google.com
b33dc47b54 sobel use LL for constants to be passed in as int64
BUG=437
TESTED=local ios build

Review URL: https://webrtc-codereview.appspot.com/47129004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1404 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-06 02:34:16 +00:00
fbarchard@google.com
d3f51b58f0 work arounds for ios 64 bit compiler where int passed into assembly needs to be explicitely cast to 'w' register.
BUG=437
TESTED=local ios build
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/49289004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1402 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-05 22:46:16 +00:00
fbarchard@google.com
b0f8352245 row_neon64 additional fixes for warning on ios where int doesnt match %2 size which is 64 bit by default. change size to explicitely 32 bit with %w2.
BUG=437
TESTED=try bots

Review URL: https://webrtc-codereview.appspot.com/43349004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1401 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-05 17:26:57 +00:00
fbarchard@google.com
a20e2c6213 row_neon64 fix for warning on ios where int width doesnt match %2 size which is 64 bit by default. change size to explicitely 32 bit with %w2.
BUG=437
TESTED=try bots
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/47119004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1399 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-04 22:53:53 +00:00
fbarchard@google.com
6d5554661f scale 64 bit fix for warning on ios where int width doesnt match %2 size which is 64 bit by default. change size to explicitely 32 bit with %w2.
BUG=437
TESTED=try bots
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/43339004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1398 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-04 22:03:53 +00:00
fbarchard@google.com
e8c90c31ee fix for warning on ios 64 bit that int width doesnt match %2 size which is 64 bit by default. change size to explicitely 32 bit with %w2.
BUG=437
TESTED=try bots
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/49279004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1397 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-04 21:16:03 +00:00
fbarchard@google.com
54e78d12e0 make windows code built with clangcl include the _posix source code.
depot_tools excludes these source files now, so they need to be manually
included.
BUG=435
TESTED=clangcl local build on windows
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/52419004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1396 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-02 01:00:01 +00:00
fbarchard@google.com
2c44965e8d make row_win windows code built with clangcl include the _posix source code.
depot_tools excludes these source files now, so they need to be manually
included.
BUG=435
TESTED=clangcl local build on windows
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/49879004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1395 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-02 00:39:29 +00:00
fbarchard@google.com
484e5d2d23 make windows code built with clangcl include the _posix source code. depot_tools excludes these source files now, so they need to be manually included.
BUG=435
TESTED=clangcl local build on windows
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/46199004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1394 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-05-02 00:15:05 +00:00
fbarchard@google.com
ab6b224675 fix for arm builds where tmp for assembly produces an error if its uninitialized.
BUG=libyuv:432
TESTED=try bots
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/49249004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1392 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-30 18:21:19 +00:00
fbarchard@google.com
31806d76d9 scale to 3/4 bug fix for odd widths. multiply to index into source by scale factor should be 4 / 3 not 3 / 4.
BUG=433
TESTED=set LIBYUV_WIDTH=1276 out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*.Scale*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/49219004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1391 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-30 17:18:13 +00:00
fbarchard@google.com
9f4636e298 AVX2 port of ScaleDownBy4.
BUG=314
TESTED=out\release\libyuv_unittest --gtest_filter=*.ScaleDownBy4*

Review URL: https://webrtc-codereview.appspot.com/46159004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1390 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-30 01:58:32 +00:00
fbarchard@google.com
5abb6d4556 disable stucture padded warnings on win64 builds.
BUG=432
TESTED=local win64 build
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/48289004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1389 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-28 23:18:07 +00:00
fbarchard@google.com
e23274cad2 remove unused function SumBox.
BUG=432
TESTED=untested
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/48279004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1388 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-28 22:13:44 +00:00
fbarchard@google.com
428fce642d remove unused function ScalePlaneBoxRow_* which was for slow box filter that is no longer used.
BUG=432
TESTED=try bots
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/51779004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1387 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-28 21:00:16 +00:00
fbarchard@google.com
35aa92a1ea fixed unused variables/code warnings in scale box function
BUG=libyuv:432
TESTED=local windows build with chromium_code =1
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/49849004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1385 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-28 18:41:04 +00:00
fbarchard@google.com
f995021f35 Work around casting warnings in scale_neon64.cc for ios 64 bit.
BUG=430
TESTED=untested
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/49799004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1382 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-28 00:02:46 +00:00
fbarchard@google.com
a81da96c90 Work around for ios 64 bit build warning - use explicit word register for int.
BUG=430
TESTED=local ios 64 bit build
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/47039004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1381 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-27 23:53:11 +00:00
fbarchard@google.com
4e78b8dc2e scale to 3/4 or 3/8 with odd width destinations efficiently. previously if width was not multiple of what the simd loop would do (24), scaling would fall back on slower C code. This change allows SIMD to be used for most of the scaling and C for the remainder, improving efficiency.
BUG=314
TESTED=set LIBYUV_WIDTH=1896 & ScaleDownBy3by4_*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/48249004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1380 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-27 21:56:08 +00:00
fbarchard@google.com
1ffb04b43e Allow ScaleRowDown any functions to accept non-power of 2 for destination SIMD multiple.
BUG=none
TESTED=local unittests pass
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/45129004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1379 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-24 22:32:12 +00:00
fbarchard@google.com
2b7f6b7dee ScaleAddRows_Any_SSE2 functions for handling odd widths.
BUG=425
TESTED=out\release\libyuv_unittest_old --gtest_filter=*.ScaleDownBy3_*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/45219004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1377 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-22 00:51:56 +00:00
fbarchard@google.com
01db3d1d1d Remove declspec(align(32)) from AVX2 functions.
BUG=422
TESTED=untested
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/43229004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1374 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-20 22:57:04 +00:00
fbarchard@google.com
812f59ed40 box and point sampling use scaledownby4 but linear and bilinear do not.
BUG=427
TESTED=out\release\libyuv_unittest --gtest_filter=*.ScaleDownBy4_*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/51689004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1373 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-17 18:04:09 +00:00
fbarchard@google.com
e52b9c3405 make box filter upsampler consider a pixel width of less than 1 to be 1. This makes it behave as a point sampler.
BUG=428
TESTED=set LIBYUV_WIDTH=1900 && out\release\libyuv_unittest.exe
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/49709004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1372 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-16 21:02:16 +00:00
fbarchard@google.com
c9986313ac lsl by 2 requires a number sign for xcode on ios 64 bit build. add the # sign for ios compatibility. remove legacy x86 asm files that are unused. the unused files cause complications in build systems that build all files.
BUG=libyuv:423
TESTED=try bots
R=noahric@google.com

Review URL: https://webrtc-codereview.appspot.com/45119004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1369 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-14 19:57:33 +00:00
fbarchard@google.com
32ad6e0e12 Remove unused variable 'I422ToRGB565Row' that breaks osx builds.
BUG=426
TESTED=untested

Review URL: https://webrtc-codereview.appspot.com/48079004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1368 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-14 02:50:35 +00:00
fbarchard@google.com
013e812275 Port box filter to AVX2.
BUG=libyuv:425
TESTED=c:\intelsde\sde -ast -hsw -- out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*libyuvTest.ScaleTo640x360_Box
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/43149004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1367 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-14 00:21:15 +00:00
fbarchard@google.com
b5ea79d845 add rows handle height of 1 using a more general while-style loop.
BUG=none
TESTED=try bots

Review URL: https://webrtc-codereview.appspot.com/45999004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1366 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-13 18:56:08 +00:00
fbarchard@google.com
c7161d1c36 Remove code alignment declspec from Visual C versions for vs2014 compatibility.
BUG=422
TESTED=local vs2013 build still passes.

Review URL: https://webrtc-codereview.appspot.com/45959004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1365 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-12 23:54:26 +00:00
fbarchard@google.com
1eb51bcf01 Fix bug in YUV to RGB for gcc/clang and enable affected functions.
BUG=393
TESTED=sde -ast -hsw -- out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*I422ToARGB*

Review URL: https://webrtc-codereview.appspot.com/48019004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1364 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-08 02:32:33 +00:00
fbarchard@google.com
bb5a009d11 ARGB4444ToARGB and ARGB1555ToARGB ported to AVX2.
BUG=421
TESTED=out\release\libyuv_unittest --gtest_filter=*ARGB4444ToARGB*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/48009004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1363 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-07 23:52:57 +00:00
fbarchard@google.com
8b9f908134 RGB565ToARGB AVX2 vzeroupper before the ret, not after.
BUG=421
TESTED=out\release\libyuv_unittest --gtest_filter=*RGB565ToARGB*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/51549004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1362 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-07 22:53:12 +00:00
yang.zhang@arm.com
5f609856de Add ScaleARGBFilterCols_NEON for ARM32/64
ARM32/64 NEON versions of ScaleARGBFilterCols_NEON are implemented.

BUG=319
TESTED=libyuvTest.* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: Ifea62bc25d846bf16cb51d13b408de7bf58dccd4

Review URL: https://webrtc-codereview.appspot.com/46699004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1361 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-07 03:45:29 +00:00
fbarchard@google.com
3d1176a3f8 ARGBToYJRow_AVX2 hooked up for ARGBToJ422
BUG=none
TESTED=ARGBToJ422 unittest

Review URL: https://webrtc-codereview.appspot.com/44079004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1360 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-07 00:39:25 +00:00
fbarchard@google.com
8f0b32773c ARGBToUV AVX2 functions hooked up.
BUG=none
TESTED=RGB565ToI420
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/46829004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1359 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-07 00:10:52 +00:00
fbarchard@google.com
9afabe29b8 Add ARGBToY AVX calls.
BUG=none
TESTED=libyuv unittests all pass with AVX2
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/44999004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1358 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-06 23:11:05 +00:00
fbarchard@google.com
2827277496 port RGB565ToARGB to AVX2.
BUG=421
TESTED=out\release\libyuv_unittest --gtest_filter=*RGB565ToARGB*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/49609004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1357 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-06 19:24:23 +00:00
fbarchard@google.com
e2ea106068 shift for arm wants a # sign for nacl and ios.
BUG=420
TESTED=d:/src/nacl_sdk/pepper_canary/toolchain/win_arm_newlib/bin/arm-nacl-g++ -o newlib/Release/source/scale_neon_arm.o -c source/scale_neon.cc -g -O2 -pthread -MMD -DNDEBUG  -Id:/src/nacl_sdk/pepper_canary/include -Id:/src/nacl_sdk/pepper_canary/include/newlib  -I./include
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/47949004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1356 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-03 23:28:44 +00:00
fbarchard@google.com
44b6ba91e4 Scale down by 4 for odd number of destination pixels using 'any' that handles SIMD for multiple of 8 pixels, and C for the remainder.
BUG=314
TESTED=local test with width odd

Review URL: https://webrtc-codereview.appspot.com/49599004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1355 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-03 22:12:53 +00:00
fbarchard@google.com
62a9fe303c code style cleanup of scale functions. no functional change.
BUG=none
TESTED=lint
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/48839004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1354 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-02 21:23:52 +00:00
yang.zhang@arm.com
c00796c4e4 Fix the issue of q4 register not in clobber list for ARMv7
On ARMv7 platform, q4 is used, but it isn't declared in clobber list.
It results that q4 isn't preserved automatically by compiler. So that the value of q4 is destroyed.

BUG=418
TESTED=libyuvTest.* on ARM32 with Android
R=fbarchard@google.com

Change-Id: Ib9b5eff8231c5057f4d58f1c4029f5452222af55

Review URL: https://webrtc-codereview.appspot.com/47899004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1353 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-04-02 02:33:23 +00:00
fbarchard@google.com
c70c7c02ff scale to half size optimization for avx2 - use pmaddubsw instruction to horizontally add bytes, then pavgw to round and divide by 2.
BUG=314
TESTED=libyuvTest.ScaleDownBy2*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/45909004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1352 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-31 23:59:27 +00:00
yang.zhang@arm.com
f23d6222ac Add ScaleARGBCols_NEON for ARM32/64
ARM32/64 NEON versions of ScaleARGBCols_NEON are implemented.

BUG=319
TESTED=libyuvTest.* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: Id9ad97f7aa5d8a34cd55ace9e648cb6ff028efd9

Review URL: https://webrtc-codereview.appspot.com/47689004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1351 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-31 03:03:05 +00:00
fbarchard@google.com
72673ac873 linear and point sample scale to half size for AVX2.
BUG=314
TESTED=out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*.ScaleDownBy2*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/44959004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1349 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-30 21:46:08 +00:00
fbarchard@google.com
9ef8999ff3 scale to half size use pmadd/pavgw to horizontal averaging.
BUG=314
TESTED=out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*.ScaleDownBy2*
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/50529004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1348 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-27 18:20:21 +00:00
fbarchard@google.com
e6ca9cc2a2 Scale down by 2 AVX2 port. Processes twice as many pixels as SSE2 and takes advantage of 3 argument instructions to reduce register usage and number of instructions.
BUG=314
TESTED=libyuvTest.ScaleDownBy2_Box
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/42959004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1347 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-26 23:21:08 +00:00
fbarchard@google.com
d41fbf40dd Handle scale down by factor of 2 efficiently by calling SIMD for multiple of 16 destination pixels, and C for remainder.
BUG=314
TESTED=out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*.ScaleDownBy2*
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/48689004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1344 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-24 23:25:30 +00:00
yang.zhang@arm.com
0d3bfab6db Add nacl macros to ScaleFilterCols_NEON on ARM32/64 platform
Add the nacl macros to ARM functions. If not, a bunch of code is failing
to validate.

BUG=319
TESTED=libyuvTest.* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: I7a36434f18e0de8b8f8a9fe01167bfe50cff8962

Review URL: https://webrtc-codereview.appspot.com/47739004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1343 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-24 08:02:30 +00:00
fbarchard@google.com
d28cd77f99 Enable assembly for clangcl build on Windows. Previously assembly was disabled so clangcl would work, but only with C code. As clangcl mimics both Visual C and GCC, ifdefs need to pick one or the other or often you'll end up with both. In this CL we disable most Visual C code and use the GCC versions which allow assembly for both 32 and 64 bit intel.
BUG=412
TESTED=clang=1 build on windows
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/51389004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1341 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-19 20:36:31 +00:00
yang.zhang@arm.com
d6d7de5742 Add ScaleFilterCols_NEON for ARM32/64
ARM32/64 NEON versions of ScaleFilterCols_NEON are implemented.

BUG=319
TESTED=libyuvTest.* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: I5b0838769ffb0182155d7cd6bcc520eb81eb5c4e

Review URL: https://webrtc-codereview.appspot.com/41349004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1340 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-19 03:55:05 +00:00
fbarchard@google.com
70e5c81860 copy width to int64 to pass to assembly to avoid warning on ios 64 bit for implicit: value size does not match register size specified by the constraint and modif
BUG=413
TESTED=local ios 64 bit build
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/45749004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1338 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 17:56:20 +00:00
fbarchard@google.com
0e4388aea3 I422ToRGB24 AVX2 and I422ToRAW
BUG=none
TESTED=I422ToRGB24 unittest
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/46619004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1337 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 17:25:27 +00:00
yang.zhang@arm.com
4d387fc619 Add ScaleARGBRowDown2Linear_NEON for ARM32/64
ARM32/64 NEON versions of ScaleARGBRowDown2Linear_NEON are implemented.

BUG=319
TESTED=libyuvTest.ARGBScale* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: Ife602c81b51aa36e0d56b9d628f278a24eed96f6

Review URL: https://webrtc-codereview.appspot.com/44689004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1336 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 02:23:59 +00:00
yang.zhang@arm.com
e246e6c18f Add ARGBToRGB565DitherRow_NEON for ARM32/64
ARM32/64 NEON versions of ARGBToRGB565DitherRow_NEON are implemented.

BUG=407
TESTED=libyuvTest.* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: Ia689170fb39db964392e5e1113801592ab0628bf

Review URL: https://webrtc-codereview.appspot.com/49409004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1335 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 02:22:25 +00:00
fbarchard@google.com
3b4f5eb7b8 Port J422 colorspace to GCC
BUG=414
TESTED=try bots
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/43809004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1334 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 00:54:50 +00:00
fbarchard@google.com
92f7f421fd rename I400 to J400 and I400 reference to I400. J400 is a simple replication of values to convert to RGB, which is what the old I400 was. I400 reference is the Y part of the YUV formula, so renaming that to I400.
BUG=none
TESTED=libyuvTest (5925 ms total)
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/50369005

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1333 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-17 00:01:18 +00:00
fbarchard@google.com
35f0add66d cpuid ifdefs fixed to remove some duplicate code cases.
BUG=none
TESTED=local windows build
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/47619004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1332 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-16 20:02:04 +00:00
fbarchard@google.com
f301777060 Fix YToARGB and tweaks to thresholds in YUV tests.
BUG=411
TESTED=libyuvTest.TestYToARGB
R=bcornell@google.com

Review URL: https://webrtc-codereview.appspot.com/44709004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1330 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-16 19:50:33 +00:00
fbarchard@google.com
f2fad0faa5 Optimized J422ToARGB.
BUG=414
TESTED=J422ToARGB unittest
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/42799004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1328 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-16 18:08:30 +00:00
fbarchard@google.com
e408a3759f Improve accuracy of J422 color space using higher precission fixed point and bias.
BUG=414
TESTED=TestFullYUVJ
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/44679004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1327 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-16 18:08:12 +00:00
yang.zhang@arm.com
ca5b1bd58b Add ScaleAddRows_NEON for ARM32/64
ARM32/64 NEON versions of ScaleAddRows_NEON are implemented.

BUG=319
TESTED=libyuvTest.Scale* on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: I45b88c2b5f576042ba5b3d8d6f8851257fdb7218

Review URL: https://webrtc-codereview.appspot.com/46379004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1326 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-16 02:57:46 +00:00
fbarchard@google.com
685b92b0a6 I400ToARGB_AVX2 port from SSE2 to AVX2.
BUG=403
TESTED=libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=*I400ToARGB*
R=brucedawson@google.com

Review URL: https://webrtc-codereview.appspot.com/46569004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1322 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-11 18:12:17 +00:00
fbarchard@google.com
f5a7b2b48a I411ToARGB AVX2 version
BUG=403
TESTED=I411ToARGB unittest
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/42689004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1321 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-11 00:08:56 +00:00
fbarchard@google.com
1e4a14f410 scale avoid math overflow in fixed point for large images
BUG=410
TESTED=set LIBYUV_WIDTH=65536 out\release\libyuv_unittest.exe --gtest_catch_exceptions=0 --gtest_filter=libyuvTest.ScaleTo320x240_None
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/42319004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1320 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-10 22:30:47 +00:00
fbarchard@google.com
24152b2435 Dither from I420 to RGB565 in 2 steps - I420ToARGB then ARGBToRGB565.
BUG=407
TESTED=untested
R=brucedawson@google.com, tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/48429004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1315 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-10 01:45:04 +00:00
fbarchard@google.com
cdd80e04c9 Port I444ToARGB to AVX2.
BUG=403
TESTED=I444ToARGB unittests
R=tpsiaki@google.com

Review URL: https://webrtc-codereview.appspot.com/45589004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1314 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-09 21:56:48 +00:00
fbarchard@google.com
697c5aa831 disable nv12 avx2 for vs9/10 that dont support avx2 instructions.
BUG=409
TESTED=try bots
R=harryjin@google.com, johannkoenig@google.com

Review URL: https://webrtc-codereview.appspot.com/43629004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1311 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-06 19:12:21 +00:00
fbarchard@google.com
bdeb9ac584 switch from 8x8 to 4x4 matrix for dithering
BUG=407
TESTED=Dither unittests
R=brucedawson@google.com

Review URL: https://webrtc-codereview.appspot.com/46459004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1310 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-06 18:28:00 +00:00
fbarchard@google.com
0fe4abbc5c ARGBToRGB565 AVX2 with dithering
BUG=407
TESTED=ARGBToRGB565Dither unittest
R=brucedawson@google.com, harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/44519004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1309 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-04 22:31:43 +00:00
fbarchard@google.com
9245317e16 ARGBToRGB565 SSE2 port.
BUG=407
TESTED=ARGBToRGB565Dither unittest
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/41039004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1308 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-04 00:00:50 +00:00
yang.zhang@arm.com
274c9bce92 Add ScaleRowDown2Linear_NEON for ARM32/64
ARM32/64 NEON versions of ScaleRowDown2Linear_NEON are implemented.

BUG=319
TESTED=libyuvTest.ScaleDownBy2_Linear on ARM32/64 with Android
R=fbarchard@google.com

Change-Id: I2c7f43a0d56ed4dfded5bdbbb61765d87d65a2ba

Review URL: https://webrtc-codereview.appspot.com/43519005

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1307 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-03 02:17:16 +00:00
fbarchard@google.com
693e0217c8 ARGBToRGB565 C version use unsigned dither matrix pattern to bump pixels to next brighter value.
BUG=407
TESTED=unittest passes
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/43539004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1306 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-02 23:46:09 +00:00
fbarchard@google.com
6eaee58589 shift by 16 for neon expects a number sign
BUG=408
TESTED=nacl arm build
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/38329004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1305 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-02 18:48:17 +00:00
yang.zhang@arm.com
e4cf8950d8 Improve the accuracy YUV to RGB for ARM64 NEON
ARM64 NEON version of YUV422TORGB is updated based on C algorithm.
Except TestJ420 and TestYUV, all the other tests are passed.

BUG=324
TESTED=libyuvTest on ARM64 with Android
R=fbarchard@google.com

Change-Id: Ia2663cfdeccc4c8c1d46262c9c0cc67b71d45e70

Review URL: https://webrtc-codereview.appspot.com/35329004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1304 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-03-02 08:30:22 +00:00
fbarchard@google.com
933bd40c3c port ARGBToRGB565 and ARGB1555 to AVX2. Enable functions that use ARGBToRGB565 AVX2 code. Add ARGBToRGB565Dither function.
BUG=403
TESTED=local windows build
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/42109004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1302 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-27 21:15:28 +00:00
fbarchard@google.com
bffd326f74 AVX2 version of ARGBToARGB4444
BUG=403
TESTED=local build on windows
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/43429004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1297 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-25 17:26:28 +00:00
yang.zhang@arm.com
94e3d5a3be Improve the accuracy YUV to RGB for ARMv7 NEON
NEON version of YUV422TORGB is updated based on C algorithm. Accuracy YUV to RGB
of NEON is also updated according to test result. Macro LIBYUV_NEON is added to
identify accuracy YUV to RGB for ARM platform.
Except TestJ420 and TestYUV, all the other tests are passed.

BUG=324
TESTED=libyuvTest on ARMv7 with Android
R=fbarchard@google.com

Change-Id: I492ca628679940534f40341721dc5b6dc2d7a5b6

Review URL: https://webrtc-codereview.appspot.com/40609004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1296 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-25 06:51:29 +00:00
fbarchard@google.com
d96047761e AVX2 version of NV12ToARGB
BUG=403
TESTED=untested
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/40089004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1295 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-24 23:45:08 +00:00
fbarchard@google.com
3c11d4bf6e align avx2 buffers to 32 bytes
BUG=403
TESTED=untested
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/40929004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1294 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-24 23:31:28 +00:00
fbarchard@google.com
446fa95587 I422ToRGB565, ARGB4444 and ARGB1555 for AVX2
BUG=403
TESTED=avx2 emulator

Review URL: https://webrtc-codereview.appspot.com/34359004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1293 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-24 23:14:46 +00:00
fbarchard@google.com
e2f1a75474 move mask to last parameter of any functions for consistency.
BUG=none
TESTED=local libyuv unittest passes
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/43419004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1292 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-24 21:18:30 +00:00
fbarchard@google.com
239962fa00 YUY2 and UYVY to ARGB AVX2 versions via wrappers.
BUG=403
TESTED=UNTESTED
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/34339004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1291 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-24 18:58:51 +00:00
kjellander@google.com
28d1a582ba Revert "YUY2ToARGB and UYVYToARGB AVX with C wrapper to call lower level conversions."
This reverts r1288 due to breaking compilation on bots:
http://build.chromium.org/p/client.libyuv/builders/Mac64%20Debug/builds/365
http://build.chromium.org/p/client.libyuv/builders/Linux64%20Debug/builds/667

TBR=fbarchard@google.com
TESTED=Reverted locally and all built fine again.

Review URL: https://webrtc-codereview.appspot.com/40879004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1289 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-23 09:22:22 +00:00
fbarchard@google.com
b52606c024 YUY2ToARGB and UYVYToARGB AVX with C wrapper to call lower level conversions.
BUG=403
TESTED=convert unittest
R=brucedawson@google.com

Review URL: https://webrtc-codereview.appspot.com/40839004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1288 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-21 00:49:35 +00:00
fbarchard@google.com
cfd6f897c4 use named type for pointer
BUG=403
TESTED=try bot

Review URL: https://webrtc-codereview.appspot.com/38179004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1287 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-20 23:26:27 +00:00
fbarchard@google.com
6a192487fe Switch SSSE3 row wrappers from variable sized malloc to fixed size array with loop to process a portion of the row at a time. This helps performance in the case where the image has been coalesced into a single large row and the allocator, although only called once, is slow to clear the pages. Also the smaller temporary buffer fits cache, further improving performance.
BUG=403
TESTED=YUY2ToARGB unittest
R=harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/40849004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1286 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-20 22:46:15 +00:00
fbarchard@google.com
194f740d0e Scan from start of buffer to handle case where an invalid size was passed.
BUG=404
TESTED=libyuvTest.ValidateJpegLarge
R=brucedawson@google.com, harryjin@google.com

Review URL: https://webrtc-codereview.appspot.com/41989004

git-svn-id: http://libyuv.googlecode.com/svn/trunk@1285 16f28f9a-4ce2-e073-06de-1de4eb20be90
2015-02-18 01:57:31 +00:00