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

Issue 311853005: Implement software fallback for PPB_VideoDecoder. (Closed)

Created:
6 years, 6 months ago by bbudge
Modified:
6 years, 6 months ago
CC:
chromium-reviews, darin-cc_chromium.org, jam
Visibility:
Public.

Description

Implement software fallback for PPB_VideoDecoder. This modifies the proxy to implement software fallback mode. The main change is to the host, which now can work with media::VideoDecoders. media::VideoDecoder works differently from media::VideoDecodeAccelerator so an adapter object, content::VideoDecoderShim is defined. It lives on the main thread and drives the actual decoder on the media thread via a child DecoderImpl class, which sends back frames of video. VideoDecoderShim receives those and converts frames to GL textures. gpu::Mailboxes are used so the host can create textures that are aliased to the plugin's textures. The test plugin has been changed to include bitstream data for VP8 in order to test the software decoder. The data is in ppapi/examples/video_decode/testdata.h alongside the H264 data. The file diff is too large for this site but is structured something like this: const unsigned char kData[] = { #if defined USE_VP8_TESTDATA_INSTEAD_OF_H264 ... lots of VP8 data #else // !USE_VP8_TESTDATA_INSTEAD_OF_H264 ... lots of H264 data #endif // USE_VP8_TESTDATA_INSTEAD_OF_H264 }; There is a TODO to convert the example to load a file. I'm not sure how to go about that but am willing to do the work if someone can point the way. BUG=281689 R=dmichael@chromium.org, fischman@chromium.org, sievers@chromium.org, tsepez@chromium.org Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=277012

Patch Set 1 : #

Total comments: 14

Patch Set 2 : Move SoftwareDecoder to its own file, split into Proxy/Delegate classes, State enum. #

Total comments: 1

Patch Set 3 : Use WeakPtr to tie VideoDecoderProxy and Delegate. #

Total comments: 109

Patch Set 4 : fischman's and dmichael's review comments. #

Total comments: 52

Patch Set 5 : VideoDecoderShim implements media::VDA, file rename coming. #

Patch Set 6 : Rename files, fix Destroy(). #

Total comments: 1

Patch Set 7 : Rebase, fix Windows compile, restore test. #

Total comments: 14

Patch Set 8 : Ami's comments. #

Patch Set 9 : Initialize GL to fix Windows tests. #

Total comments: 4

Patch Set 10 : Try to make win_chromium_rel happy. #

Patch Set 11 : Fix gpu gyp, try again to make Windows bot happy. #

Patch Set 12 : Fix bug in VideoDecoderResource, add a ref to graphics context. #

Patch Set 13 : Experiment to fix tests. #

Patch Set 14 : Update to new media::VideoDecoder API. Test creates Graphics3D earlier. #

Patch Set 15 : Don't fail Initialize test if Graphics3D isn't available. #

Patch Set 16 : Fix compile issue, refine gpu build fix.x #

Patch Set 17 : Fix include order. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1011 lines, -76 lines) Patch
M chrome/test/ppapi/ppapi_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -0 lines 0 comments Download
M content/content_renderer.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +4 lines, -2 lines 0 comments Download
M content/renderer/pepper/pepper_video_decoder_host.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 chunks +16 lines, -5 lines 0 comments Download
M content/renderer/pepper/pepper_video_decoder_host.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 9 chunks +71 lines, -45 lines 0 comments Download
A content/renderer/pepper/video_decoder_shim.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +129 lines, -0 lines 0 comments Download
A content/renderer/pepper/video_decoder_shim.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +576 lines, -0 lines 0 comments Download
M content/test/ppapi/ppapi_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/common/cmd_buffer_common.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +2 lines, -0 lines 0 comments Download
M gpu/gpu.gyp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +23 lines, -0 lines 0 comments Download
M ppapi/examples/video_decode/video_decode.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11 chunks +63 lines, -18 lines 0 comments Download
M ppapi/ppapi_sources.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -0 lines 0 comments Download
M ppapi/proxy/ppapi_messages.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +3 lines, -2 lines 0 comments Download
M ppapi/proxy/video_decoder_resource.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +3 lines, -1 line 0 comments Download
M ppapi/proxy/video_decoder_resource.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 chunks +9 lines, -2 lines 0 comments Download
M ppapi/proxy/video_decoder_resource_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +4 lines, -1 line 0 comments Download
A ppapi/tests/test_video_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +32 lines, -0 lines 0 comments Download
A ppapi/tests/test_video_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +70 lines, -0 lines 0 comments Download

Messages

Total messages: 39 (0 generated)
bbudge
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.h File content/renderer/pepper/pepper_video_decoder_host.h (left): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.h#oldcode92 content/renderer/pepper/pepper_video_decoder_host.h:92: scoped_refptr<PPB_Graphics3D_Impl> graphics3d_; This isn't necessary, since the resource keeps ...
6 years, 6 months ago (2014-06-03 20:16:07 UTC) #1
Tom Sepez
We probably talked about this before, but it looks like the vector of GPU mailboxes ...
6 years, 6 months ago (2014-06-03 20:26:07 UTC) #2
igorc
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode483 content/renderer/pepper/pepper_video_decoder_host.cc:483: case media::VideoDecoder::kNotEnoughData: This is not an error in H264 ...
6 years, 6 months ago (2014-06-03 20:26:32 UTC) #3
Tom Sepez
On 2014/06/03 20:26:07, Tom Sepez wrote: > We probably talked about this before, but it ...
6 years, 6 months ago (2014-06-03 20:27:09 UTC) #4
bbudge
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode483 content/renderer/pepper/pepper_video_decoder_host.cc:483: case media::VideoDecoder::kNotEnoughData: On 2014/06/03 20:26:32, igorc wrote: > This ...
6 years, 6 months ago (2014-06-03 20:59:20 UTC) #5
dmichael (off chromium)
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode165 content/renderer/pepper/pepper_video_decoder_host.cc:165: bool resetting_; suggestion: Might be clearer to use a ...
6 years, 6 months ago (2014-06-03 22:27:47 UTC) #6
bbudge
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode165 content/renderer/pepper/pepper_video_decoder_host.cc:165: bool resetting_; On 2014/06/03 22:27:47, dmichael wrote: > suggestion: ...
6 years, 6 months ago (2014-06-04 14:10:12 UTC) #7
bbudge
https://codereview.chromium.org/311853005/diff/30001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/30001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode7 content/renderer/pepper/pepper_video_decoder_host.cc:7: #include <GLES2/gl2extchromium.h> unnecessary.
6 years, 6 months ago (2014-06-04 14:31:40 UTC) #8
dmichael (off chromium)
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode173 content/renderer/pepper/pepper_video_decoder_host.cc:173: PendingDecodeQueue pending_decodes_; On 2014/06/04 14:10:12, bbudge wrote: > On ...
6 years, 6 months ago (2014-06-04 15:47:29 UTC) #9
bbudge
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode173 content/renderer/pepper/pepper_video_decoder_host.cc:173: PendingDecodeQueue pending_decodes_; Delegate now references VideoDecoderProxy (formerly SoftwareDecoder) via ...
6 years, 6 months ago (2014-06-04 20:52:46 UTC) #10
dmichael (off chromium)
https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/20001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode173 content/renderer/pepper/pepper_video_decoder_host.cc:173: PendingDecodeQueue pending_decodes_; On 2014/06/04 20:52:46, bbudge wrote: > Delegate ...
6 years, 6 months ago (2014-06-04 21:03:07 UTC) #11
bbudge
+sievers for gpu/ This is needed to fix a link error for the nacl_ipc_64 target. ...
6 years, 6 months ago (2014-06-04 22:00:30 UTC) #12
bbudge
+sievers for real
6 years, 6 months ago (2014-06-04 22:01:06 UTC) #13
no sievers
On 2014/06/04 22:01:06, bbudge wrote: > +sievers for real +piman It feels a bit weird ...
6 years, 6 months ago (2014-06-04 22:48:01 UTC) #14
bbudge
On 2014/06/04 22:48:01, sievers wrote: > On 2014/06/04 22:01:06, bbudge wrote: > > +sievers for ...
6 years, 6 months ago (2014-06-04 22:59:53 UTC) #15
no sievers
On 2014/06/04 22:59:53, bbudge wrote: > On 2014/06/04 22:48:01, sievers wrote: > > On 2014/06/04 ...
6 years, 6 months ago (2014-06-05 00:01:05 UTC) #16
Ami GONE FROM CHROMIUM
https://codereview.chromium.org/311853005/diff/50001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/50001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode396 content/renderer/pepper/pepper_video_decoder_host.cc:396: void PepperVideoDecoderHost::RequestTextures( single call-site and single-statement impl; why not ...
6 years, 6 months ago (2014-06-05 00:06:23 UTC) #17
dmichael (off chromium)
This is looking good overall to me, but I'll defer to Ami for the video ...
6 years, 6 months ago (2014-06-05 23:00:44 UTC) #18
bbudge
https://codereview.chromium.org/311853005/diff/50001/content/renderer/pepper/pepper_video_decoder_host.cc File content/renderer/pepper/pepper_video_decoder_host.cc (right): https://codereview.chromium.org/311853005/diff/50001/content/renderer/pepper/pepper_video_decoder_host.cc#newcode396 content/renderer/pepper/pepper_video_decoder_host.cc:396: void PepperVideoDecoderHost::RequestTextures( On 2014/06/05 00:06:24, Ami leaving Chromium June ...
6 years, 6 months ago (2014-06-06 02:03:46 UTC) #19
Ami GONE FROM CHROMIUM
https://codereview.chromium.org/311853005/diff/60001/content/renderer/pepper/video_decoder_adapter.cc File content/renderer/pepper/video_decoder_adapter.cc (right): https://codereview.chromium.org/311853005/diff/60001/content/renderer/pepper/video_decoder_adapter.cc#newcode52 content/renderer/pepper/video_decoder_adapter.cc:52: std::vector<uint8_t> argb_pixels; On 2014/06/06 02:03:43, bbudge wrote: > On ...
6 years, 6 months ago (2014-06-06 17:14:34 UTC) #20
dmichael (off chromium)
https://codereview.chromium.org/311853005/diff/50001/gpu/gpu_ipc.gypi File gpu/gpu_ipc.gypi (right): https://codereview.chromium.org/311853005/diff/50001/gpu/gpu_ipc.gypi#newcode24 gpu/gpu_ipc.gypi:24: 'command_buffer/common/mailbox.h', On 2014/06/06 02:03:46, bbudge wrote: > On 2014/06/05 ...
6 years, 6 months ago (2014-06-06 17:24:01 UTC) #21
bbudge
Renamed VideoDecoderAdapter to VideoDecoderShim. VideoDecoderShim implements media::VDA. Renamed Delegate to DecoderImpl. Reworked how the shim ...
6 years, 6 months ago (2014-06-07 00:31:10 UTC) #22
bbudge
https://codereview.chromium.org/311853005/diff/60001/content/renderer/pepper/video_decoder_adapter.cc File content/renderer/pepper/video_decoder_adapter.cc (right): https://codereview.chromium.org/311853005/diff/60001/content/renderer/pepper/video_decoder_adapter.cc#newcode325 content/renderer/pepper/video_decoder_adapter.cc:325: base::Owned(delegate_.release()))); On 2014/06/07 00:31:09, bbudge wrote: > On 2014/06/06 ...
6 years, 6 months ago (2014-06-07 01:01:24 UTC) #23
igorc
https://codereview.chromium.org/311853005/diff/80001/content/renderer/pepper/video_decoder_shim.cc File content/renderer/pepper/video_decoder_shim.cc (right): https://codereview.chromium.org/311853005/diff/80001/content/renderer/pepper/video_decoder_shim.cc#newcode124 content/renderer/pepper/video_decoder_shim.cc:124: new media::FFmpegVideoDecoder(base::MessageLoopProxy::current())); Please call set_decode_nalus(true) to allow processing of ...
6 years, 6 months ago (2014-06-07 05:34:34 UTC) #24
Ami GONE FROM CHROMIUM
@igorc: please see q to you in my comments below. https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/pepper_video_decoder_host.h File content/renderer/pepper/pepper_video_decoder_host.h (right): https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/pepper_video_decoder_host.h#newcode89 ...
6 years, 6 months ago (2014-06-07 18:26:40 UTC) #25
bbudge
https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/pepper_video_decoder_host.h File content/renderer/pepper/pepper_video_decoder_host.h (right): https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/pepper_video_decoder_host.h#newcode89 content/renderer/pepper/pepper_video_decoder_host.h:89: // These methods are needed by VideoDecodeAdapter, to look ...
6 years, 6 months ago (2014-06-07 21:28:34 UTC) #26
Ami GONE FROM CHROMIUM
LGTM I'll let you duke out the low_delay vs. set_nalus(true) business with igorc/sergeyu. https://codereview.chromium.org/311853005/diff/100001/content/renderer/pepper/video_decoder_shim.cc File ...
6 years, 6 months ago (2014-06-08 17:30:38 UTC) #27
piman
On 2014/06/04 22:48:01, sievers wrote: > On 2014/06/04 22:01:06, bbudge wrote: > > +sievers for ...
6 years, 6 months ago (2014-06-09 14:47:36 UTC) #28
dmichael (off chromium)
lgtm
6 years, 6 months ago (2014-06-09 17:00:03 UTC) #29
bbudge
On 2014/06/09 at 14:47:36, piman wrote: > On 2014/06/04 22:48:01, sievers wrote: > > On ...
6 years, 6 months ago (2014-06-09 23:32:36 UTC) #30
bbudge
https://codereview.chromium.org/311853005/diff/100001/content/renderer/pepper/video_decoder_shim.cc File content/renderer/pepper/video_decoder_shim.cc (right): https://codereview.chromium.org/311853005/diff/100001/content/renderer/pepper/video_decoder_shim.cc#newcode125 content/renderer/pepper/video_decoder_shim.cc:125: ffmpeg_video_decoder->set_decode_nalus(true); On 2014/06/08 17:30:38, Ami leaving Chromium June 6th ...
6 years, 6 months ago (2014-06-09 23:33:01 UTC) #31
bbudge
The browser_tests and content_browsertests failures are due to a bug in VideoDecoderResource. I wasn't taking ...
6 years, 6 months ago (2014-06-10 20:32:04 UTC) #32
igorc
https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc File content/renderer/pepper/video_decoder_shim.cc (right): https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc#newcode131 content/renderer/pepper/video_decoder_shim.cc:131: true /* low_delay */, On 2014/06/07 18:26:40, Ami GONE ...
6 years, 6 months ago (2014-06-11 20:13:18 UTC) #33
DaleCurtis
https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc File content/renderer/pepper/video_decoder_shim.cc (right): https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc#newcode131 content/renderer/pepper/video_decoder_shim.cc:131: true /* low_delay */, On 2014/06/11 20:13:18, igorc wrote: ...
6 years, 6 months ago (2014-06-11 21:08:08 UTC) #34
igorc
https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc File content/renderer/pepper/video_decoder_shim.cc (right): https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc#newcode131 content/renderer/pepper/video_decoder_shim.cc:131: true /* low_delay */, On 2014/06/11 21:08:08, DaleCurtis wrote: ...
6 years, 6 months ago (2014-06-11 22:30:09 UTC) #35
bbudge
On 2014/06/11 22:30:09, igorc wrote: > https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc > File content/renderer/pepper/video_decoder_shim.cc (right): > > https://codereview.chromium.org/311853005/diff/70002/content/renderer/pepper/video_decoder_shim.cc#newcode131 > ...
6 years, 6 months ago (2014-06-12 15:44:06 UTC) #36
bbudge
Committed patchset #17 manually as r277012 (presubmit successful).
6 years, 6 months ago (2014-06-13 13:45:04 UTC) #37
binjin
A revert of this CL has been created in https://codereview.chromium.org/336783002/ by binjin@chromium.org. The reason for ...
6 years, 6 months ago (2014-06-13 13:52:55 UTC) #38
Stephen Chennney
6 years, 6 months ago (2014-06-13 14:33:40 UTC) #39
Message was sent while issue was closed.
A revert of this CL has been created in
https://codereview.chromium.org/337683002/ by schenney@chromium.org.

The reason for reverting is: Broke blink Linux tests
compile.http://build.chromium.org/p/chromium.webkit/builders/Linux%20Tests/builds/37259.

Powered by Google App Engine
This is Rietveld 408576698