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

Issue 8686010: <video> decode in hardware! (Closed)

Created:
9 years ago by Ami GONE FROM CHROMIUM
Modified:
9 years ago
CC:
chromium-reviews, hclam+watch_chromium.org, ddorwin+watch_chromium.org, fischman+watch_chromium.org, jam, acolwell+watch_chromium.org, annacc+watch_chromium.org, apatrick_chromium, dpranke-watch+content_chromium.org, joi+watch-content_chromium.org, darin-cc_chromium.org, yzshen+watch_chromium.org, Paweł Hajdan Jr., vrk (LEFT CHROMIUM), piman+watch_chromium.org, scherkus (not reviewing), ihf+watch_chromium.org
Visibility:
Public.

Description

LANDED AS 114183 FROM http://codereview.chromium.org/8922010 <video> decode in hardware! This uses the GpuVideoDecodeAccelerator machinery (already written to enable ppapi to take advantage of OpenMAX HW where available) to decode <video> data. This increases idle CPU from 20% to 45% on one particularly large (internal) test video (red0.mp4), on an ARM crosbook. HW decode is done on a best-effort basis; if the GPU code doesn't know how to deal with a codec/profile we still fall back to ffmpeg for decode. Because the vast majority of chrome installs will be on HW with no video decode support (yet) we only attempt HW video decode on platforms we know have a shot at it. BUG=104579 TEST=manual testing w/ video test matrix, trybots.

Patch Set 1 #

Total comments: 4

Patch Set 2 : . #

Total comments: 9

Patch Set 3 : fixed content_unittests compilation #

Patch Set 4 : fix media_unittests (FFmpegVideoDecoderTest.I*) and shared build #

Patch Set 5 : add missing OVERRIDEs #

Total comments: 55

Patch Set 6 : piman CR responses. #

Patch Set 7 : scherkus CR responses. #

Patch Set 8 : rebased, no other changes #

Patch Set 9 : fix out-of-line errors for SHMBuffer and BufferPair. #

Total comments: 24

Patch Set 10 : scherkus CR#2 responses. #

Total comments: 5

Patch Set 11 : rebase + remove unused variable (which breaks the gcc 4.6 compilation) #

Patch Set 12 : scherkus cr#3 response. #

Patch Set 13 : Drop INTRA/CONSTRAINED in profile, add missing 'virtual', add MEDIA_EXPORT, fix RemoveFilter loop #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+1124 lines, -174 lines) Patch
M content/common/gpu/media/gpu_video_decode_accelerator.cc View 1 2 3 4 5 6 7 1 chunk +2 lines, -2 lines 0 comments Download
M content/common/gpu/media/omx_video_decode_accelerator.cc View 3 chunks +15 lines, -13 lines 0 comments Download
M content/common/gpu/media/omx_video_decode_accelerator_unittest.cc View 5 chunks +8 lines, -11 lines 0 comments Download
M content/content_renderer.gypi View 1 2 3 4 5 6 7 8 9 1 chunk +2 lines, -0 lines 0 comments Download
M content/renderer/gpu/gpu_video_decode_accelerator_host.cc View 1 2 3 4 5 1 chunk +1 line, -1 line 0 comments Download
M content/renderer/media/audio_renderer_impl.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +0 lines, -3 lines 0 comments Download
M content/renderer/media/capture_video_decoder.h View 3 chunks +3 lines, -2 lines 0 comments Download
M content/renderer/media/capture_video_decoder.cc View 3 chunks +3 lines, -3 lines 0 comments Download
M content/renderer/media/capture_video_decoder_unittest.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M content/renderer/media/rtc_video_decoder.h View 1 2 1 chunk +1 line, -1 line 0 comments Download
M content/renderer/media/rtc_video_decoder.cc View 1 2 3 4 5 6 7 2 chunks +2 lines, -2 lines 0 comments Download
M content/renderer/media/rtc_video_decoder_unittest.cc View 1 2 3 4 5 6 7 2 chunks +3 lines, -2 lines 0 comments Download
M content/renderer/render_view_impl.cc View 1 2 3 4 5 6 7 8 9 10 4 chunks +21 lines, -1 line 0 comments Download
A content/renderer/renderer_gpu_video_decoder_factories.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +50 lines, -0 lines 0 comments Download
A content/renderer/renderer_gpu_video_decoder_factories.cc View 1 2 3 4 5 6 7 8 9 1 chunk +63 lines, -0 lines 0 comments Download
media/base/composite_filter.h View 1 2 3 4 5 6 1 chunk +3 lines, -0 lines 0 comments Download
M media/base/composite_filter.cc View 1 2 3 4 5 6 7 8 9 10 11 12 4 chunks +18 lines, -2 lines 0 comments Download
M media/base/composite_filter_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +14 lines, -3 lines 0 comments Download
M media/base/filter_collection.h View 1 chunk +1 line, -0 lines 0 comments Download
M media/base/filters.h View 3 chunks +8 lines, -5 lines 0 comments Download
M media/base/filters.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M media/base/mock_filters.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +1 line, -1 line 0 comments Download
M media/base/pipeline_impl.h View 1 2 3 4 5 6 7 8 9 2 chunks +5 lines, -4 lines 0 comments Download
M media/base/pipeline_impl.cc View 1 2 3 4 5 6 7 8 9 7 chunks +21 lines, -11 lines 0 comments Download
M media/base/pipeline_impl_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +8 lines, -1 line 0 comments Download
M media/base/video_decoder_config.h View 1 2 3 6 chunks +31 lines, -1 line 0 comments Download
media/base/video_decoder_config.cc View 1 2 3 4 5 6 7 6 chunks +32 lines, -2 lines 0 comments Download
M media/base/video_frame.h View 7 chunks +28 lines, -5 lines 0 comments Download
M media/base/video_frame.cc View 1 2 3 4 5 6 5 chunks +42 lines, -6 lines 0 comments Download
M media/ffmpeg/ffmpeg_common.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +48 lines, -0 lines 0 comments Download
M media/filters/ffmpeg_video_decoder.h View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M media/filters/ffmpeg_video_decoder.cc View 1 2 3 4 5 6 7 5 chunks +7 lines, -26 lines 0 comments Download
M media/filters/ffmpeg_video_decoder_unittest.cc View 1 2 3 4 5 6 7 3 chunks +18 lines, -15 lines 0 comments Download
A media/filters/gpu_video_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +169 lines, -0 lines 1 comment Download
A media/filters/gpu_video_decoder.cc View 1 2 3 4 5 6 7 8 9 1 chunk +443 lines, -0 lines 0 comments Download
M media/filters/video_renderer_base.cc View 1 2 3 4 5 6 7 3 chunks +9 lines, -13 lines 0 comments Download
M media/media.gyp View 1 2 3 4 5 6 7 1 chunk +2 lines, -0 lines 0 comments Download
M media/video/video_decode_accelerator.h View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +4 lines, -20 lines 0 comments Download
ppapi/api/dev/pp_video_dev.idl View 3 chunks +5 lines, -3 lines 0 comments Download
M ppapi/c/dev/pp_video_dev.h View 4 chunks +6 lines, -4 lines 0 comments Download
M webkit/media/webmediaplayer_impl.cc View 1 2 3 4 5 6 7 1 chunk +2 lines, -0 lines 0 comments Download
M webkit/media/webvideoframe_impl.h View 1 2 3 4 5 6 1 chunk +7 lines, -6 lines 0 comments Download
M webkit/media/webvideoframe_impl.cc View 2 chunks +11 lines, -3 lines 0 comments Download

Messages

Total messages: 18 (0 generated)
Ami GONE FROM CHROMIUM
piman: please OWNERS-review for content/renderer & ppapi/ scherkus: please review everything. This may seem like ...
9 years ago (2011-11-30 00:08:36 UTC) #1
piman
http://codereview.chromium.org/8686010/diff/4001/content/renderer/render_view_impl.cc File content/renderer/render_view_impl.cc (right): http://codereview.chromium.org/8686010/diff/4001/content/renderer/render_view_impl.cc#newcode1932 content/renderer/render_view_impl.cc:1932: gles2_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); GL_LINEAR for bili scaling? Same for ...
9 years ago (2011-11-30 00:48:17 UTC) #2
scherkus (not reviewing)
http://codereview.chromium.org/8686010/diff/12001/content/common/gpu/media/omx_video_decode_accelerator_unittest.cc File content/common/gpu/media/omx_video_decode_accelerator_unittest.cc (right): http://codereview.chromium.org/8686010/diff/12001/content/common/gpu/media/omx_video_decode_accelerator_unittest.cc#newcode1002 content/common/gpu/media/omx_video_decode_accelerator_unittest.cc:1002: // TODO(fischman, vrk): add more tests! In particular: !!!!!! ...
9 years ago (2011-12-06 00:27:44 UTC) #3
Ami GONE FROM CHROMIUM
Addressed only piman's comments in patchset 6. scherkus@'s comments are up next! http://codereview.chromium.org/8686010/diff/4001/content/renderer/render_view_impl.cc File content/renderer/render_view_impl.cc ...
9 years ago (2011-12-06 22:10:32 UTC) #4
Ami GONE FROM CHROMIUM
http://codereview.chromium.org/8686010/diff/4001/content/renderer/render_view_impl.cc File content/renderer/render_view_impl.cc (right): http://codereview.chromium.org/8686010/diff/4001/content/renderer/render_view_impl.cc#newcode1939 content/renderer/render_view_impl.cc:1939: return gles2_->GetError() == GL_NO_ERROR; On 2011/12/06 22:10:32, Ami Fischman ...
9 years ago (2011-12-06 22:14:53 UTC) #5
piman
OK, LGTM for that part. If you haven't already, I'd strongly suggest trying the context ...
9 years ago (2011-12-06 23:06:15 UTC) #6
Ami GONE FROM CHROMIUM
Responded to all of scherkus@'s CR comments (on patchset 5) in patchset 7. http://codereview.chromium.org/8686010/diff/12001/content/common/gpu/media/omx_video_decode_accelerator_unittest.cc File ...
9 years ago (2011-12-07 00:03:04 UTC) #7
Ami GONE FROM CHROMIUM
On 2011/12/06 23:06:15, piman wrote: > OK, LGTM for that part. If you haven't already, ...
9 years ago (2011-12-07 00:13:11 UTC) #8
scherkus (not reviewing)
http://codereview.chromium.org/8686010/diff/12001/media/filters/gpu_video_decoder.cc File media/filters/gpu_video_decoder.cc (right): http://codereview.chromium.org/8686010/diff/12001/media/filters/gpu_video_decoder.cc#newcode212 media/filters/gpu_video_decoder.cc:212: next_picture_buffer_id_++, size, texture_ids[i])); On 2011/12/07 00:03:04, Ami Fischman wrote: ...
9 years ago (2011-12-09 00:26:20 UTC) #9
Ami GONE FROM CHROMIUM
http://codereview.chromium.org/8686010/diff/32011/content/renderer/render_view_impl.cc File content/renderer/render_view_impl.cc (right): http://codereview.chromium.org/8686010/diff/32011/content/renderer/render_view_impl.cc#newcode1934 content/renderer/render_view_impl.cc:1934: class GpuVideoDecoderFactories : public media::GpuVideoDecoder::Factories { On 2011/12/09 00:26:20, ...
9 years ago (2011-12-09 22:55:50 UTC) #10
scherkus (not reviewing)
lgtm w/ pedantic nits http://codereview.chromium.org/8686010/diff/46002/content/renderer/renderer_gpu_video_decoder_factories.h File content/renderer/renderer_gpu_video_decoder_factories.h (right): http://codereview.chromium.org/8686010/diff/46002/content/renderer/renderer_gpu_video_decoder_factories.h#newcode22 content/renderer/renderer_gpu_video_decoder_factories.h:22: class RendererGpuVideoDecoderFactories : 9 of ...
9 years ago (2011-12-09 23:13:55 UTC) #11
Ami GONE FROM CHROMIUM
Thanks for the review! http://codereview.chromium.org/8686010/diff/46002/content/renderer/renderer_gpu_video_decoder_factories.h File content/renderer/renderer_gpu_video_decoder_factories.h (right): http://codereview.chromium.org/8686010/diff/46002/content/renderer/renderer_gpu_video_decoder_factories.h#newcode25 content/renderer/renderer_gpu_video_decoder_factories.h:25: virtual ~RendererGpuVideoDecoderFactories(); On 2011/12/09 23:13:55, ...
9 years ago (2011-12-10 00:03:14 UTC) #12
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/fischman@chromium.org/8686010/49089
9 years ago (2011-12-10 00:04:32 UTC) #13
commit-bot: I haz the power
Can't process patch for file media/base/composite_filter.h. File's status is None, patchset upload is incomplete.
9 years ago (2011-12-10 00:04:36 UTC) #14
Ami GONE FROM CHROMIUM
CQ was busted (b/c of rietveld missing file status for several files in the CL ...
9 years ago (2011-12-10 01:24:44 UTC) #15
Ami GONE FROM CHROMIUM
I think I pacified all the bots now (piecemeal; am now kicking off new tryjobs ...
9 years ago (2011-12-12 19:13:48 UTC) #16
Ami GONE FROM CHROMIUM
> piman: PTAL? (scherkus is teaching a class all day). Thanks! In fact in order ...
9 years ago (2011-12-12 19:21:28 UTC) #17
scherkus (not reviewing)
9 years ago (2011-12-13 00:36:47 UTC) #18
LGTM += 2

http://codereview.chromium.org/8686010/diff/64001/media/filters/gpu_video_dec...
File media/filters/gpu_video_decoder.h (right):

http://codereview.chromium.org/8686010/diff/64001/media/filters/gpu_video_dec...
media/filters/gpu_video_decoder.h:35: class MEDIA_EXPORT Factories {
craziness

Powered by Google App Engine
This is Rietveld 408576698