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

Issue 15906019: Hook up EncodedVideoSource on the browser side (Closed)

Created:
7 years, 6 months ago by sheu
Modified:
7 years, 4 months ago
CC:
chromium-reviews, joi+watch-content_chromium.org, darin-cc_chromium.org, jam, sail+watch_chromium.org, feature-media-reviews_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@screencast_cl_6
Visibility:
Public.

Description

Hook up EncodedVideoSource on the browser side. This change hooks up the browser side of the EncodedVideoSource interface. * Add headers for EncodedVideoSource class and IPC messages * Add headers and implementation fo EncodedBitstreamBuffer (for EVS) * Implement renderer <-> browser EncodedVideoSource IPC receiving, and VideoCaptureHost/VideoCaptureController/VideoCaptureManager plumbing. * Update unittests to cover encoded output functionality of VideoCaptureController. BUG=chromium:221441 TEST=local build on desktop Linux, unittests

Patch Set 1 : 0595004b Unittested. #

Patch Set 2 : bbd3b746f Rebase. #

Total comments: 9

Patch Set 3 : 9a6cfea4 Update due to hshi@ #

Total comments: 4

Patch Set 4 : 516738a8 IPC/struct changes, courtesy hshi@ #

Total comments: 44
Unified diffs Side-by-side diffs Delta from patch set Stats (+1417 lines, -284 lines) Patch
M content/browser/renderer_host/media/screen_capture_device.h View 1 2 3 1 chunk +3 lines, -0 lines 1 comment Download
M content/browser/renderer_host/media/screen_capture_device.cc View 1 2 3 1 chunk +9 lines, -0 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_controller.h View 6 chunks +36 lines, -4 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_controller.cc View 18 chunks +240 lines, -66 lines 4 comments Download
M content/browser/renderer_host/media/video_capture_controller_event_handler.h View 2 chunks +22 lines, -11 lines 1 comment Download
M content/browser/renderer_host/media/video_capture_controller_unittest.cc View 11 chunks +129 lines, -25 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_host.h View 1 2 3 6 chunks +75 lines, -16 lines 2 comments Download
M content/browser/renderer_host/media/video_capture_host.cc View 1 2 3 6 chunks +221 lines, -56 lines 6 comments Download
M content/browser/renderer_host/media/video_capture_manager.h View 1 2 3 4 chunks +29 lines, -4 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_manager.cc View 1 2 3 10 chunks +60 lines, -6 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_manager_unittest.cc View 1 2 chunks +14 lines, -1 line 0 comments Download
M content/browser/renderer_host/media/web_contents_video_capture_device.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M content/browser/renderer_host/media/web_contents_video_capture_device.cc View 1 2 3 2 chunks +10 lines, -1 line 0 comments Download
M content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc View 1 4 chunks +21 lines, -1 line 2 comments Download
M content/common/content_message_generator.h View 1 2 1 chunk +1 line, -0 lines 1 comment Download
A content/common/media/encoded_video_capture_messages.h View 1 2 3 1 chunk +126 lines, -0 lines 5 comments Download
M content/content_common.gypi View 1 2 1 chunk +1 line, -0 lines 1 comment Download
M content/public/common/media_stream_request.h View 1 chunk +3 lines, -0 lines 0 comments Download
M content/public/common/media_stream_request.cc View 1 chunk +2 lines, -1 line 0 comments Download
M ipc/ipc_message_start.h View 1 2 1 chunk +1 line, -0 lines 1 comment Download
A media/base/encoded_bitstream_buffer.h View 1 chunk +52 lines, -0 lines 1 comment Download
A media/base/encoded_bitstream_buffer.cc View 1 chunk +50 lines, -0 lines 1 comment Download
M media/media.gyp View 1 2 2 chunks +3 lines, -0 lines 3 comments Download
M media/video/capture/android/video_capture_device_android.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/android/video_capture_device_android.cc View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
M media/video/capture/fake_video_capture_device.h View 1 2 3 2 chunks +10 lines, -3 lines 6 comments Download
M media/video/capture/fake_video_capture_device.cc View 1 2 3 6 chunks +141 lines, -83 lines 4 comments Download
M media/video/capture/linux/video_capture_device_linux.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/linux/video_capture_device_linux.cc View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
M media/video/capture/mac/video_capture_device_mac.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/mac/video_capture_device_mac.mm View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
M media/video/capture/video_capture_device.h View 1 2 3 6 chunks +37 lines, -5 lines 4 comments Download
M media/video/capture/video_capture_device_dummy.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/video_capture_device_dummy.cc View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
M media/video/capture/video_capture_device_unittest.cc View 1 chunk +1 line, -1 line 0 comments Download
M media/video/capture/win/video_capture_device_mf_win.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/win/video_capture_device_mf_win.cc View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
M media/video/capture/win/video_capture_device_win.h View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
M media/video/capture/win/video_capture_device_win.cc View 1 2 3 1 chunk +8 lines, -0 lines 0 comments Download
A media/video/video_encode_types.h View 1 2 3 1 chunk +51 lines, -0 lines 1 comment Download

Messages

Total messages: 22 (0 generated)
sheu
Hook up EncodedVideoSource on the browser side. This change hooks up the browser side of ...
7 years, 6 months ago (2013-06-11 23:50:34 UTC) #1
sheu
Ready. fischman@, hshi@: PTAL We are aware that the IPC definitions and some others don't ...
7 years, 6 months ago (2013-06-12 08:04:21 UTC) #2
sheu
https://chromiumcodereview.appspot.com/15906019/diff/16001/content/browser/renderer_host/media/video_capture_controller.h File content/browser/renderer_host/media/video_capture_controller.h (right): https://chromiumcodereview.appspot.com/15906019/diff/16001/content/browser/renderer_host/media/video_capture_controller.h#newcode176 content/browser/renderer_host/media/video_capture_controller.h:176: media::VideoEncodingParameters encoded_frame_info_; (see below) https://chromiumcodereview.appspot.com/15906019/diff/16001/content/browser/renderer_host/media/video_capture_controller.h#newcode185 content/browser/renderer_host/media/video_capture_controller.h:185: bool encoded_frame_info_available_; This ...
7 years, 6 months ago (2013-06-12 08:06:21 UTC) #3
hshi1
https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h File content/common/media/encoded_video_source_messages.h (right): https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h#newcode100 content/common/media/encoded_video_source_messages.h:100: size_t /* buffer_size */) What does |buffer_size| represent? I ...
7 years, 6 months ago (2013-06-12 18:30:45 UTC) #4
hshi1
https://codereview.chromium.org/15906019/diff/16001/media/video/encoded_video_source.h File media/video/encoded_video_source.h (right): https://codereview.chromium.org/15906019/diff/16001/media/video/encoded_video_source.h#newcode6 media/video/encoded_video_source.h:6: #define MEDIA_VIDEO_ENCODED_VIDEO_SOURCE_H_ I believe you don't really need this ...
7 years, 6 months ago (2013-06-12 18:34:47 UTC) #5
sheu
https://chromiumcodereview.appspot.com/15906019/diff/16001/content/common/media/encoded_video_source_messages.h File content/common/media/encoded_video_source_messages.h (right): https://chromiumcodereview.appspot.com/15906019/diff/16001/content/common/media/encoded_video_source_messages.h#newcode100 content/common/media/encoded_video_source_messages.h:100: size_t /* buffer_size */) On 2013/06/12 18:30:45, hshi1 wrote: ...
7 years, 6 months ago (2013-06-12 19:51:18 UTC) #6
hshi1
https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h File content/common/media/encoded_video_source_messages.h (right): https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h#newcode87 content/common/media/encoded_video_source_messages.h:87: media::VideoCaptureSessionId /* session_id */, You're using session_id instead of ...
7 years, 6 months ago (2013-06-12 20:16:32 UTC) #7
sheu
https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h File content/common/media/encoded_video_source_messages.h (right): https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h#newcode87 content/common/media/encoded_video_source_messages.h:87: media::VideoCaptureSessionId /* session_id */, On 2013/06/12 20:16:32, hshi1 wrote: ...
7 years, 6 months ago (2013-06-12 20:58:07 UTC) #8
hshi1
On 2013/06/12 20:58:07, sheu wrote: > https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h > File content/common/media/encoded_video_source_messages.h (right): > > https://codereview.chromium.org/15906019/diff/16001/content/common/media/encoded_video_source_messages.h#newcode87 > ...
7 years, 6 months ago (2013-06-12 20:59:00 UTC) #9
sheu
9a6cfea4 Update due to hshi@
7 years, 6 months ago (2013-06-12 23:00:25 UTC) #10
sheu
9a6cfea4 Update due to hshi@
7 years, 6 months ago (2013-06-12 23:00:58 UTC) #11
sheu
Sorry for the spam; I hit the dreaded "Base files missing" bug. Updated; PTAL. For ...
7 years, 6 months ago (2013-06-12 23:20:02 UTC) #12
hshi1
https://codereview.chromium.org/15906019/diff/33002/content/common/media/encoded_video_capture_messages.h File content/common/media/encoded_video_capture_messages.h (right): https://codereview.chromium.org/15906019/diff/33002/content/common/media/encoded_video_capture_messages.h#newcode33 content/common/media/encoded_video_capture_messages.h:33: IPC_STRUCT_TRAITS_MEMBER(frames_per_second) Please move frames_per_second to the runtime_params (result of ...
7 years, 6 months ago (2013-06-13 00:28:34 UTC) #13
sheu
Updated to match your struct and IPC changes. PTAL https://chromiumcodereview.appspot.com/15906019/diff/33002/content/common/media/encoded_video_capture_messages.h File content/common/media/encoded_video_capture_messages.h (right): https://chromiumcodereview.appspot.com/15906019/diff/33002/content/common/media/encoded_video_capture_messages.h#newcode33 content/common/media/encoded_video_capture_messages.h:33: ...
7 years, 6 months ago (2013-06-13 06:08:18 UTC) #14
hshi1
https://codereview.chromium.org/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h File content/common/media/encoded_video_capture_messages.h (right): https://codereview.chromium.org/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h#newcode100 content/common/media/encoded_video_capture_messages.h:100: size_t /* buffer_size */) Can you make this a ...
7 years, 6 months ago (2013-06-13 18:35:24 UTC) #15
sheu
https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h File content/common/media/encoded_video_capture_messages.h (right): https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h#newcode100 content/common/media/encoded_video_capture_messages.h:100: size_t /* buffer_size */) On 2013/06/13 18:35:24, hshi1 wrote: ...
7 years, 6 months ago (2013-06-13 22:34:48 UTC) #16
Ami GONE FROM CHROMIUM
You probably want ncarter@ to sanity-check the browser-side capturer changes. Not cc'ing him yet b/c ...
7 years, 6 months ago (2013-06-18 18:35:55 UTC) #17
piman
https://codereview.chromium.org/15906019/diff/85001/content/browser/renderer_host/media/video_capture_host.cc File content/browser/renderer_host/media/video_capture_host.cc (right): https://codereview.chromium.org/15906019/diff/85001/content/browser/renderer_host/media/video_capture_host.cc#newcode321 content/browser/renderer_host/media/video_capture_host.cc:321: // Not used. On 2013/06/18 18:35:55, Ami Fischman wrote: ...
7 years, 6 months ago (2013-06-19 18:33:51 UTC) #18
hshi1
https://chromiumcodereview.appspot.com/15906019/diff/85001/media/media.gyp File media/media.gyp (right): https://chromiumcodereview.appspot.com/15906019/diff/85001/media/media.gyp#newcode258 media/media.gyp:258: 'baise/encoded_bitstream_buffer.h', typo: "baise" -> "base"
7 years, 6 months ago (2013-06-20 22:39:16 UTC) #19
hshi1
https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/renderer_host/media/video_capture_host.cc File content/browser/renderer_host/media/video_capture_host.cc (right): https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/renderer_host/media/video_capture_host.cc#newcode158 content/browser/renderer_host/media/video_capture_host.cc:158: controller_id.device_id)); How can browser send EncodedVideoCaptureHostMsg to renderer? I ...
7 years, 6 months ago (2013-06-20 22:51:02 UTC) #20
hshi1
https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h File content/common/media/encoded_video_capture_messages.h (right): https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/media/encoded_video_capture_messages.h#newcode56 content/common/media/encoded_video_capture_messages.h:56: IPC_MESSAGE_CONTROL3(EncodedVideoCaptureHostMsg_CreateBitstream, Please make a pass to replace "create" to ...
7 years, 6 months ago (2013-06-20 23:23:26 UTC) #21
sheu
7 years, 4 months ago (2013-08-22 22:40:31 UTC) #22
Posting comments, just to clear out the "draft" queue.  I will be abandoning
this CL shortly.

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
File content/browser/renderer_host/media/video_capture_host.cc (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
content/browser/renderer_host/media/video_capture_host.cc:158:
controller_id.device_id));
On 2013/06/20 22:51:02, hshi1 wrote:
> How can browser send EncodedVideoCaptureHostMsg to renderer?
> 
> I believe in this case you need to send
EncodedVideoCaptureMsg_BitstreamClosed.

Done.

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
content/browser/renderer_host/media/video_capture_host.cc:391:
DCHECK(entries_.find(controller_id) == entries_.end());
On 2013/06/19 18:33:51, piman wrote:
> This data comes from the untrusted renderer.
> This can't just be a DCHECK, but must be handled safely.

Done.  Fixed also for OnStartCapture.

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
File content/browser/renderer_host/media/video_capture_host.h (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
content/browser/renderer_host/media/video_capture_host.h:71: //
VideoCaptureControllerEventHandler implementation.
On 2013/06/18 18:35:55, Ami Fischman wrote:
> s/rE/r::E/

It's actually not a nested class.  <dramatic prairie dog />

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
File
content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc
(right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/browser/re...
content/browser/renderer_host/media/web_contents_video_capture_device_unittest.cc:403:
}
On 2013/06/18 18:35:55, Ami Fischman wrote:
> NOTREACHED?
> What about actually testing this codepath?

NOTREACHED() them.

Testing this codepath is unnecessary until encoded tab capture is implemented.

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/med...
File content/common/media/encoded_video_capture_messages.h (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/content/common/med...
content/common/media/encoded_video_capture_messages.h:56:
IPC_MESSAGE_CONTROL3(EncodedVideoCaptureHostMsg_CreateBitstream,
On 2013/06/20 23:23:26, hshi1 wrote:
> Please make a pass to replace "create" to "open" and "destroy" to "close" in
the
> message names, so as to match that in
>
https://codereview.chromium.org/16320005/diff/415002/content/common/media/enc...

Done, also for EncodedVideoCaptureMsg_BitstreamOpened.

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/media.gyp
File media/media.gyp (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/media.gyp#ne...
media/media.gyp:258: 'baise/encoded_bitstream_buffer.h',
On 2013/06/20 22:39:17, hshi1 wrote:
> typo: "baise" -> "base"

Done.

Not sure how this even built?

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
File media/video/capture/fake_video_capture_device.cc (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/fake_video_capture_device.cc:20: namespace {
On 2013/06/18 18:35:55, Ami Fischman wrote:
> not adding value

Fine :-P

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/fake_video_capture_device.cc:189: memset(fake_frame_.get(),
0, frame_size_);
On 2013/06/18 18:35:55, Ami Fischman wrote:
> only used in the not-encoding case

Also used for encoding.  Changed up a bit here.

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
File media/video/capture/fake_video_capture_device.h (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/fake_video_capture_device.h:22: bool encoded_capture);
On 2013/06/18 18:35:55, Ami Fischman wrote:
> indent is off here and elsewhere in the CL.  Please make a pass.

Not sure what you mean here?

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/fake_video_capture_device.h:28: static void
GetDeviceNames(Names* device_names, bool encoded_capture);
On 2013/06/18 18:35:55, Ami Fischman wrote:
> Why pass this in if not to inspect it in Create() (and thus not have to pass
it
> to Create)?

Not quite following here.  GetDeviceNames() constructs a different name if it's
encoding, and Create() creates an encoding fake device if it's encoding.

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/fake_video_capture_device.h:64:
scoped_refptr<media::EncodedBitstreamBuffer> fake_encoded_bitstream_buffer_;
On 2013/06/18 18:35:55, Ami Fischman wrote:
> unused

Done.

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
File media/video/capture/video_capture_device.h (right):

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/video_capture_device.h:67: // ReserveOutputVideoFrame().
On 2013/06/18 18:35:55, Ami Fischman wrote:
> TODO to drop this & point to EVS->VEA crbug? 

Done.

https://chromiumcodereview.appspot.com/15906019/diff/85001/media/video/captur...
media/video/capture/video_capture_device.h:144: const
media::RuntimeVideoEncodingParameters& params) = 0;
On 2013/06/18 18:35:55, Ami Fischman wrote:
> I think the majority of files & lines in this CL will evaporate if you give
> these methods default impls in v_c_d.cc.
> Default for TCEB() should probably NOTIMPLEMENTED not just silently no-op.

I thought we tried to keep interfaces pure virtual?

It would certainly simplify things.  I'll take your suggestion as
yes-we-can-do-this and blame you accordingly if it turns out not to plan :-)

Powered by Google App Engine
This is Rietveld 408576698