Frank Barchard a2ea905679 BlendPlane any width.
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 .
2015-12-08 18:59:48 -08:00
..
basic_types.h Declare parameters that are unused, since C does not let you give a type without name. 2014-01-07 05:42:27 +00:00
compare_row.h xmmword cast for clang 2015-08-18 11:13:12 -07:00
compare.h Detect Endian of ARGB image. 2014-11-05 18:46:06 +00:00
convert_argb.h Add J444ToARGB conversion function. 2015-10-06 18:46:53 -07:00
convert_from_argb.h 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. 2015-05-27 22:32:26 +00:00
convert_from.h Dither from I420 to RGB565 in 2 steps - I420ToARGB then ARGBToRGB565. 2015-03-10 01:45:04 +00:00
convert.h 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. 2015-03-17 00:01:18 +00:00
cpu_id.h remove mips dsp detect 2015-11-03 16:57:40 -08:00
mjpeg_decoder.h fixes for blank line lint warnings 2014-08-14 19:42:48 +00:00
planar_functions.h AVX2 YUV alpha blender and improved unittests 2015-12-05 22:23:29 -08:00
rotate_argb.h C header compatible 2013-03-22 08:40:40 +00:00
rotate_row.h clang use scalewin 2015-08-18 14:50:27 -07:00
rotate.h use LIBYUV_BOOL instead of bool 2014-01-07 03:59:31 +00:00
row.h AVX2 YUV alpha blender and improved unittests 2015-12-05 22:23:29 -08:00
scale_argb.h scale with conversion using 2 steps with unittest 2015-11-13 11:25:56 -08:00
scale_row.h Reimplement NV21ToARGB to allow different color matrix. 2015-10-06 20:34:44 -07:00
scale.h scale16 api use LIBYUV_API 2014-09-15 22:01:43 +00:00
version.h BlendPlane any width. 2015-12-08 18:59:48 -08:00
video_common.h H420 functionality 2015-09-06 11:01:40 -07:00