| Index: content/browser/renderer_host/media/desktop_capture_device.cc
|
| diff --git a/content/browser/renderer_host/media/desktop_capture_device.cc b/content/browser/renderer_host/media/desktop_capture_device.cc
|
| index 7f3e779c1e737d178becf9d6d7fd421a0485f108..fe9e9bb0cd2603f1068b6dac77e6c7aba5dcf8d7 100644
|
| --- a/content/browser/renderer_host/media/desktop_capture_device.cc
|
| +++ b/content/browser/renderer_host/media/desktop_capture_device.cc
|
| @@ -53,7 +53,7 @@ class DesktopCaptureDevice::Core
|
| scoped_ptr<webrtc::DesktopCapturer> capturer);
|
|
|
| // Implementation of VideoCaptureDevice methods.
|
| - void AllocateAndStart(const media::VideoCaptureCapability& capture_format,
|
| + void AllocateAndStart(const media::VideoCaptureParams& params,
|
| scoped_ptr<Client> client);
|
| void StopAndDeAllocate();
|
|
|
| @@ -67,7 +67,7 @@ class DesktopCaptureDevice::Core
|
|
|
| // Helper methods that run on the |task_runner_|. Posted from the
|
| // corresponding public methods.
|
| - void DoAllocateAndStart(const media::VideoCaptureCapability& capture_format,
|
| + void DoAllocateAndStart(const media::VideoCaptureParams& params,
|
| scoped_ptr<Client> client);
|
| void DoStopAndDeAllocate();
|
|
|
| @@ -97,10 +97,10 @@ class DesktopCaptureDevice::Core
|
| scoped_ptr<Client> client_;
|
|
|
| // Requested video capture format (width, height, frame rate, etc).
|
| - media::VideoCaptureCapability requested_format_;
|
| + media::VideoCaptureParams requested_params_;
|
|
|
| // Actual video capture format being generated.
|
| - media::VideoCaptureCapability capture_format_;
|
| + media::VideoCaptureFormat capture_format_;
|
|
|
| // Size of frame most recently captured from the source.
|
| webrtc::DesktopSize previous_frame_size_;
|
| @@ -136,18 +136,15 @@ DesktopCaptureDevice::Core::~Core() {
|
| }
|
|
|
| void DesktopCaptureDevice::Core::AllocateAndStart(
|
| - const media::VideoCaptureCapability& capture_format,
|
| + const media::VideoCaptureParams& params,
|
| scoped_ptr<Client> client) {
|
| - DCHECK_GT(capture_format.width, 0);
|
| - DCHECK_GT(capture_format.height, 0);
|
| - DCHECK_GT(capture_format.frame_rate, 0);
|
| + DCHECK_GT(params.requested_format.frame_size.GetArea(), 0);
|
| + DCHECK_GT(params.requested_format.frame_rate, 0);
|
|
|
| task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&Core::DoAllocateAndStart,
|
| - this,
|
| - capture_format,
|
| - base::Passed(&client)));
|
| + base::Bind(
|
| + &Core::DoAllocateAndStart, this, params, base::Passed(&client)));
|
| }
|
|
|
| void DesktopCaptureDevice::Core::StopAndDeAllocate() {
|
| @@ -181,8 +178,8 @@ void DesktopCaptureDevice::Core::OnCaptureCompleted(
|
| // Handle initial frame size and size changes.
|
| RefreshCaptureFormat(frame->size());
|
|
|
| - webrtc::DesktopSize output_size(capture_format_.width,
|
| - capture_format_.height);
|
| + webrtc::DesktopSize output_size(capture_format_.frame_size.width(),
|
| + capture_format_.frame_size.height());
|
| size_t output_bytes = output_size.width() * output_size.height() *
|
| webrtc::DesktopFrame::kBytesPerPixel;
|
| const uint8_t* output_data = NULL;
|
| @@ -228,7 +225,7 @@ void DesktopCaptureDevice::Core::OnCaptureCompleted(
|
| }
|
|
|
| void DesktopCaptureDevice::Core::DoAllocateAndStart(
|
| - const media::VideoCaptureCapability& capture_format,
|
| + const media::VideoCaptureParams& params,
|
| scoped_ptr<Client> client) {
|
| DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(desktop_capturer_);
|
| @@ -236,19 +233,12 @@ void DesktopCaptureDevice::Core::DoAllocateAndStart(
|
| DCHECK(!client_.get());
|
|
|
| client_ = client.Pass();
|
| - requested_format_ = capture_format;
|
| + requested_params_ = params;
|
|
|
| - capture_format_.frame_rate = requested_format_.frame_rate;
|
| -
|
| - // Support dynamic changes in resolution only if requester also does.
|
| - if (requested_format_.frame_size_type ==
|
| - media::VariableResolutionVideoCaptureDevice) {
|
| - capture_format_.frame_size_type =
|
| - media::VariableResolutionVideoCaptureDevice;
|
| - }
|
| + capture_format_ = requested_params_.requested_format;
|
|
|
| // This capturer always outputs ARGB, non-interlaced.
|
| - capture_format_.color = media::PIXEL_FORMAT_ARGB;
|
| + capture_format_.pixel_format = media::PIXEL_FORMAT_ARGB;
|
|
|
| desktop_capturer_->Start(this);
|
|
|
| @@ -273,28 +263,31 @@ void DesktopCaptureDevice::Core::RefreshCaptureFormat(
|
| output_frame_.reset();
|
|
|
| if (previous_frame_size_.is_empty() ||
|
| - requested_format_.frame_size_type ==
|
| - media::VariableResolutionVideoCaptureDevice) {
|
| + requested_params_.allow_resolution_change) {
|
| // If this is the first frame, or the receiver supports variable resolution
|
| // then determine the output size by treating the requested width & height
|
| // as maxima.
|
| - if (frame_size.width() > requested_format_.width ||
|
| - frame_size.height() > requested_format_.height) {
|
| + if (frame_size.width() >
|
| + requested_params_.requested_format.frame_size.width() ||
|
| + frame_size.height() >
|
| + requested_params_.requested_format.frame_size.height()) {
|
| output_rect_ = ComputeLetterboxRect(
|
| - webrtc::DesktopSize(requested_format_.width,
|
| - requested_format_.height),
|
| + webrtc::DesktopSize(
|
| + requested_params_.requested_format.frame_size.width(),
|
| + requested_params_.requested_format.frame_size.height()),
|
| frame_size);
|
| output_rect_.Translate(-output_rect_.left(), -output_rect_.top());
|
| } else {
|
| output_rect_ = webrtc::DesktopRect::MakeSize(frame_size);
|
| }
|
| - capture_format_.width = output_rect_.width();
|
| - capture_format_.height = output_rect_.height();
|
| + capture_format_.frame_size.SetSize(output_rect_.width(),
|
| + output_rect_.height());
|
| } else {
|
| // Otherwise the output frame size cannot change, so just scale and
|
| // letterbox.
|
| output_rect_ = ComputeLetterboxRect(
|
| - webrtc::DesktopSize(capture_format_.width, capture_format_.height),
|
| + webrtc::DesktopSize(capture_format_.frame_size.width(),
|
| + capture_format_.frame_size.height()),
|
| frame_size);
|
| }
|
|
|
| @@ -411,9 +404,9 @@ DesktopCaptureDevice::~DesktopCaptureDevice() {
|
| }
|
|
|
| void DesktopCaptureDevice::AllocateAndStart(
|
| - const media::VideoCaptureCapability& capture_format,
|
| + const media::VideoCaptureParams& params,
|
| scoped_ptr<Client> client) {
|
| - core_->AllocateAndStart(capture_format, client.Pass());
|
| + core_->AllocateAndStart(params, client.Pass());
|
| }
|
|
|
| void DesktopCaptureDevice::StopAndDeAllocate() {
|
|
|