| Index: media/capture/video/video_capture_device_client.cc
|
| diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc
|
| index c7a92be1266eadf4e43246ebc05e6883a4a165ec..3321633b610852d5e5be905e54e489b912f4b6fc 100644
|
| --- a/media/capture/video/video_capture_device_client.cc
|
| +++ b/media/capture/video/video_capture_device_client.cc
|
| @@ -21,7 +21,6 @@
|
| #include "media/capture/video/video_capture_jpeg_decoder.h"
|
| #include "media/capture/video/video_frame_receiver.h"
|
| #include "media/capture/video_capture_types.h"
|
| -#include "mojo/public/cpp/system/platform_handle.h"
|
| #include "third_party/libyuv/include/libyuv.h"
|
|
|
| using media::VideoCaptureFormat;
|
| @@ -296,46 +295,32 @@
|
| const VideoCaptureFormat& format,
|
| base::TimeTicks reference_time,
|
| base::TimeDelta timestamp) {
|
| - OnIncomingCapturedBufferExt(std::move(buffer), format, reference_time,
|
| - timestamp, gfx::Rect(format.frame_size),
|
| - VideoFrameMetadata());
|
| -}
|
| -
|
| -void VideoCaptureDeviceClient::OnIncomingCapturedBufferExt(
|
| - std::unique_ptr<Buffer> buffer,
|
| - const VideoCaptureFormat& format,
|
| - base::TimeTicks reference_time,
|
| - base::TimeDelta timestamp,
|
| - gfx::Rect visible_rect,
|
| - const VideoFrameMetadata& additional_metadata) {
|
| - const int buffer_id = buffer->id();
|
| -
|
| - auto buffer_mojo_handle = buffer_pool_->GetHandleForTransit(buffer_id);
|
| - base::SharedMemoryHandle memory_handle;
|
| - size_t memory_size = 0;
|
| - bool read_only_flag = false;
|
| - const MojoResult unwrap_result_code = mojo::UnwrapSharedMemoryHandle(
|
| - std::move(buffer_mojo_handle), &memory_handle, &memory_size,
|
| - &read_only_flag);
|
| - DCHECK_EQ(MOJO_RESULT_OK, unwrap_result_code);
|
| -
|
| - scoped_refptr<media::VideoFrame> frame =
|
| - media::VideoFrame::WrapExternalSharedMemory(
|
| - format.pixel_format, // format
|
| - format.frame_size, // coded_size
|
| - visible_rect, // visible_rect
|
| - format.frame_size, // natural_size
|
| - static_cast<uint8_t*>(buffer->data()), // data
|
| - buffer->mapped_size(), // data_size
|
| - memory_handle, // handle
|
| - 0, // shared_memory_offset
|
| - timestamp); // timestamp
|
| - frame->metadata()->MergeMetadataFrom(&additional_metadata);
|
| + DCHECK(IsFormatSupported(format.pixel_format));
|
| + DCHECK_EQ(media::PIXEL_STORAGE_CPU, format.pixel_storage);
|
| +
|
| + scoped_refptr<VideoFrame> frame;
|
| + if (buffer->IsBackedByVideoFrame()) {
|
| + frame = buffer->GetVideoFrame();
|
| + frame->set_timestamp(timestamp);
|
| + } else {
|
| + frame = VideoFrame::WrapExternalSharedMemory(
|
| + format.pixel_format, format.frame_size, gfx::Rect(format.frame_size),
|
| + format.frame_size, reinterpret_cast<uint8_t*>(buffer->data()),
|
| + VideoFrame::AllocationSize(format.pixel_format, format.frame_size),
|
| + base::SharedMemory::NULLHandle(), 0u, timestamp);
|
| + }
|
| + if (!frame)
|
| + return;
|
| frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE,
|
| format.frame_rate);
|
| frame->metadata()->SetTimeTicks(media::VideoFrameMetadata::REFERENCE_TIME,
|
| reference_time);
|
| -
|
| + OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame));
|
| +}
|
| +
|
| +void VideoCaptureDeviceClient::OnIncomingCapturedVideoFrame(
|
| + std::unique_ptr<Buffer> buffer,
|
| + scoped_refptr<VideoFrame> frame) {
|
| receiver_->OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame));
|
| }
|
|
|
|
|