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

Unified Diff: content/browser/renderer_host/media/video_capture_manager.cc

Issue 15906019: Hook up EncodedVideoSource on the browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@screencast_cl_6
Patch Set: 516738a8 IPC/struct changes, courtesy hshi@ Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698