Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(398)

Issue 2371293002: Add low level support for 12 bit 420, 422 and 444 YUV video frame conversion. (Closed)

Created:
4 years, 2 months ago by fbarchard1
Modified:
4 years, 2 months ago
Reviewers:
wangcheng, hubbe
Target Ref:
refs/heads/master
Project:
libyuv
Visibility:
Public.

Description

Add low level support for 12 bit 420, 422 and 444 YUV video frame conversion. BUG=libyuv:560, chromium:445071 TEST=untested R=hubbe@chromium.org Committed: https://chromium.googlesource.com/libyuv/libyuv/+/7fc932ddd306c11493a27b65fdd042ae15be79bf

Patch Set 1 #

Total comments: 6

Patch Set 2 : unittest for halffloatplane #

Total comments: 6

Patch Set 3 : remove sign bit #

Patch Set 4 : adjust bias method #

Patch Set 5 : ported to gcc #

Patch Set 6 : win use avx2 version of functions #

Total comments: 2

Patch Set 7 : HalfFloat_Any_AVX2 #

Patch Set 8 : uint16 for destination floats #

Patch Set 9 : cast to uint16 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+185 lines, -14 lines) Patch
M include/libyuv/planar_functions.h View 2 3 4 5 6 7 1 chunk +8 lines, -0 lines 0 comments Download
M include/libyuv/row.h View 1 2 3 4 5 6 7 3 chunks +5 lines, -3 lines 0 comments Download
M source/planar_functions.cc View 1 2 3 4 5 6 7 2 chunks +46 lines, -0 lines 0 comments Download
M source/row_any.cc View 1 2 3 4 5 6 7 1 chunk +22 lines, -0 lines 0 comments Download
M source/row_common.cc View 1 2 3 4 5 6 7 8 1 chunk +19 lines, -0 lines 0 comments Download
M source/row_gcc.cc View 1 2 3 4 5 6 7 1 chunk +33 lines, -0 lines 0 comments Download
M source/row_win.cc View 1 2 3 4 5 6 7 2 chunks +12 lines, -11 lines 0 comments Download
M unit_test/planar_test.cc View 1 2 3 4 5 6 7 1 chunk +40 lines, -0 lines 0 comments Download

Messages

Total messages: 19 (2 generated)
fbarchard1
4 years, 2 months ago (2016-09-27 22:51:25 UTC) #1
hubbe
https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc#newcode2337 source/row_common.cc:2337: // e.g. 9 bit scale is 1.0f / 512.0f ...
4 years, 2 months ago (2016-09-27 23:25:57 UTC) #2
fbarchard1
https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc#newcode2337 source/row_common.cc:2337: // e.g. 9 bit scale is 1.0f / 512.0f ...
4 years, 2 months ago (2016-09-28 00:01:31 UTC) #3
fbarchard1
Passes on emulator: c:\intelsde\sde -mix -omix mix.txt -ast -oast ast.txt -skx -- out\release\libyuv_unittest.exe --gtest_cat ch_exceptions=0 ...
4 years, 2 months ago (2016-09-28 00:10:56 UTC) #4
fbarchard1
On clang for linux 64 the C version is vectorized and 4x faster: [ RUN ...
4 years, 2 months ago (2016-09-28 00:37:37 UTC) #5
hubbe
https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc#newcode2343 source/row_common.cc:2343: uint32 f = *(uint32*)&value; On 2016/09/28 00:01:31, fbarchard1 wrote: ...
4 years, 2 months ago (2016-09-28 00:41:18 UTC) #6
fbarchard1
https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/1/source/row_common.cc#newcode2343 source/row_common.cc:2343: uint32 f = *(uint32*)&value; On 2016/09/28 00:41:18, hubbe wrote: ...
4 years, 2 months ago (2016-09-28 00:53:40 UTC) #7
fbarchard1
Using multiply to adjust exponent to be in low 5 bits for C version. TestHalfFloatPlane ...
4 years, 2 months ago (2016-09-28 01:00:38 UTC) #8
fbarchard1
On 2016/09/28 01:00:38, fbarchard1 wrote: > Using multiply to adjust exponent to be in low ...
4 years, 2 months ago (2016-09-28 01:04:57 UTC) #9
hubbe
On 2016/09/28 01:04:57, fbarchard1 wrote: > On 2016/09/28 01:00:38, fbarchard1 wrote: > > Using multiply ...
4 years, 2 months ago (2016-09-28 04:53:01 UTC) #10
fbarchard1
> That's cool, how does that compare to the AVX speed, or a table lookup? ...
4 years, 2 months ago (2016-09-28 17:37:01 UTC) #11
fbarchard1
Performance on Z440 haswell 353 ms for AVX2 406 ms for C
4 years, 2 months ago (2016-09-29 18:40:31 UTC) #12
wangcheng
https://codereview.chromium.org/2371293002/diff/100001/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/100001/source/row_common.cc#newcode2345 source/row_common.cc:2345: maybe uint16* for dst
4 years, 2 months ago (2016-09-29 19:12:15 UTC) #14
fbarchard1
https://codereview.chromium.org/2371293002/diff/100001/source/row_common.cc File source/row_common.cc (right): https://codereview.chromium.org/2371293002/diff/100001/source/row_common.cc#newcode2345 source/row_common.cc:2345: On 2016/09/29 19:12:14, wangcheng wrote: > maybe uint16* for ...
4 years, 2 months ago (2016-09-29 21:56:02 UTC) #15
hubbe
lgtm
4 years, 2 months ago (2016-09-29 21:57:35 UTC) #16
fbarchard1
On 2016/09/29 21:57:35, hubbe wrote: > lgtm Note the unrolling only is a small win ...
4 years, 2 months ago (2016-09-29 22:05:41 UTC) #17
fbarchard1
4 years, 2 months ago (2016-09-29 22:06:36 UTC) #19
Message was sent while issue was closed.
Committed patchset #9 (id:160001) manually as
7fc932ddd306c11493a27b65fdd042ae15be79bf (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698