| Index: content/browser/renderer_host/media/video_capture_manager.cc
|
| diff --git a/content/browser/renderer_host/media/video_capture_manager.cc b/content/browser/renderer_host/media/video_capture_manager.cc
|
| index 52741fdd494120d7d69ed0314098fbdf19648810..4cf279b0503521d6ebfcb9da561b04fe28a513e0 100644
|
| --- a/content/browser/renderer_host/media/video_capture_manager.cc
|
| +++ b/content/browser/renderer_host/media/video_capture_manager.cc
|
| @@ -115,7 +115,7 @@ void VideoCaptureManager::Start(
|
|
|
| void VideoCaptureManager::Stop(
|
| const media::VideoCaptureSessionId& capture_session_id,
|
| - base::Closure stopped_cb) {
|
| + const base::Closure& stopped_cb) {
|
| DVLOG(1) << "VideoCaptureManager::Stop, id " << capture_session_id;
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| device_loop_->PostTask(
|
| @@ -124,6 +124,18 @@ void VideoCaptureManager::Stop(
|
| stopped_cb));
|
| }
|
|
|
| +void VideoCaptureManager::TryConfigureEncodedBitstream(
|
| + const media::VideoCaptureSessionId& session_id,
|
| + const media::RuntimeVideoEncodingParameters& params) {
|
| + device_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &VideoCaptureManager::OnTryConfigureEncodedBitstream,
|
| + this,
|
| + session_id,
|
| + params));
|
| +}
|
| +
|
| void VideoCaptureManager::UseFakeDevice() {
|
| use_fake_device_ = true;
|
| }
|
| @@ -168,8 +180,10 @@ void VideoCaptureManager::OnOpen(int capture_session_id,
|
| vc_device_name.unique_id = device.device.id;
|
|
|
| if (use_fake_device_) {
|
| + const bool encoded_capture =
|
| + (device.device.type == MEDIA_SCREEN_ENCODED_VIDEO_CAPTURE);
|
| video_capture_device =
|
| - media::FakeVideoCaptureDevice::Create(vc_device_name);
|
| + media::FakeVideoCaptureDevice::Create(vc_device_name, encoded_capture);
|
| } else {
|
| switch (device.device.type) {
|
| case MEDIA_DEVICE_VIDEO_CAPTURE: {
|
| @@ -277,7 +291,7 @@ void VideoCaptureManager::OnStart(
|
|
|
| void VideoCaptureManager::OnStop(
|
| const media::VideoCaptureSessionId capture_session_id,
|
| - base::Closure stopped_cb) {
|
| + const base::Closure& stopped_cb) {
|
| DCHECK(IsOnDeviceThread());
|
| DVLOG(1) << "VideoCaptureManager::OnStop, id " << capture_session_id;
|
|
|
| @@ -307,6 +321,17 @@ void VideoCaptureManager::OnStop(
|
| }
|
| }
|
|
|
| +void VideoCaptureManager::OnTryConfigureEncodedBitstream(
|
| + const media::VideoCaptureSessionId& session_id,
|
| + const media::RuntimeVideoEncodingParameters& params) {
|
| + DCHECK(IsOnDeviceThread());
|
| + media::VideoCaptureDevice* video_capture_device =
|
| + GetDeviceInternal(session_id);
|
| + if (!video_capture_device)
|
| + return;
|
| + video_capture_device->TryConfigureEncodedBitstream(params);
|
| +}
|
| +
|
| void VideoCaptureManager::OnOpened(MediaStreamType stream_type,
|
| int capture_session_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| @@ -404,7 +429,7 @@ void VideoCaptureManager::GetAvailableDevices(
|
| if (!use_fake_device_) {
|
| media::VideoCaptureDevice::GetDeviceNames(device_names);
|
| } else {
|
| - media::FakeVideoCaptureDevice::GetDeviceNames(device_names);
|
| + media::FakeVideoCaptureDevice::GetDeviceNames(device_names, false);
|
| }
|
| break;
|
|
|
| @@ -412,6 +437,10 @@ void VideoCaptureManager::GetAvailableDevices(
|
| device_names->clear();
|
| break;
|
|
|
| + case MEDIA_SCREEN_ENCODED_VIDEO_CAPTURE:
|
| + device_names->clear();
|
| + break;
|
| +
|
| default:
|
| NOTREACHED();
|
| break;
|
| @@ -464,7 +493,7 @@ bool VideoCaptureManager::DeviceInUse(
|
| void VideoCaptureManager::AddController(
|
| const media::VideoCaptureParams& capture_params,
|
| VideoCaptureControllerEventHandler* handler,
|
| - base::Callback<void(VideoCaptureController*)> added_cb) {
|
| + const base::Callback<void(VideoCaptureController*)>& added_cb) {
|
| DCHECK(handler);
|
| device_loop_->PostTask(
|
| FROM_HERE,
|
| @@ -475,7 +504,7 @@ void VideoCaptureManager::AddController(
|
| void VideoCaptureManager::DoAddControllerOnDeviceThread(
|
| const media::VideoCaptureParams capture_params,
|
| VideoCaptureControllerEventHandler* handler,
|
| - base::Callback<void(VideoCaptureController*)> added_cb) {
|
| + const base::Callback<void(VideoCaptureController*)>& added_cb) {
|
| DCHECK(IsOnDeviceThread());
|
|
|
| media::VideoCaptureDevice* video_capture_device =
|
| @@ -530,6 +559,31 @@ void VideoCaptureManager::DoRemoveControllerOnDeviceThread(
|
| }
|
| }
|
|
|
| +void VideoCaptureManager::RequestEncodingCapabilities(
|
| + const media::VideoCaptureSessionId& session_id,
|
| + const base::Callback<void(
|
| + const media::VideoEncodingCapabilities&)>& caps_cb) {
|
| + device_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &VideoCaptureManager::DoRequestEncodingCapabilitiesOnDeviceThread,
|
| + this,
|
| + session_id,
|
| + caps_cb));
|
| +}
|
| +
|
| +void VideoCaptureManager::DoRequestEncodingCapabilitiesOnDeviceThread(
|
| + const media::VideoCaptureSessionId& session_id,
|
| + const base::Callback<void(
|
| + const media::VideoEncodingCapabilities&)>& caps_cb) {
|
| + DCHECK(IsOnDeviceThread());
|
| + media::VideoCaptureDevice* video_capture_device =
|
| + GetDeviceInternal(session_id);
|
| + if (!video_capture_device)
|
| + return;
|
| + caps_cb.Run(video_capture_device->GetEncodingCapabilities());
|
| +}
|
| +
|
| media::VideoCaptureDevice* VideoCaptureManager::GetDeviceInternal(
|
| int capture_session_id) {
|
| DCHECK(IsOnDeviceThread());
|
|
|