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

Unified Diff: media/capture/video/video_capture_device_client.cc

Issue 2378943002: Let clients interact with VideoCaptureDeviceClient instead of VideoCaptureDevice (Closed)
Patch Set: Remove method AsClientBuffer() Created 4 years, 2 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
« no previous file with comments | « media/capture/video/video_capture_device.h ('k') | services/video_capture/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6a3ac6ac6b86559a94ab923de58e499e288fc323..d9874a78814cbb6d8c36d5f2a82822436908e9f4 100644
--- a/media/capture/video/video_capture_device_client.cc
+++ b/media/capture/video/video_capture_device_client.cc
@@ -44,14 +44,17 @@ class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer {
gfx::Size dimensions() const override { return buffer_handle_->dimensions(); }
size_t mapped_size() const override { return buffer_handle_->mapped_size(); }
void* data(int plane) override { return buffer_handle_->data(plane); }
- ClientBuffer AsClientBuffer(int plane) override {
- return buffer_handle_->AsClientBuffer(plane);
- }
#if defined(OS_POSIX) && !defined(OS_MACOSX)
base::FileDescriptor AsPlatformFile() override {
return buffer_handle_->AsPlatformFile();
}
#endif
+ bool IsBackedByVideoFrame() const override {
+ return buffer_handle_->IsBackedByVideoFrame();
+ }
+ scoped_refptr<VideoFrame> GetVideoFrame() override {
+ return buffer_handle_->GetVideoFrame();
+ }
private:
~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); }
@@ -279,13 +282,19 @@ void VideoCaptureDeviceClient::OnIncomingCapturedBuffer(
DCHECK_EQ(media::PIXEL_FORMAT_I420, frame_format.pixel_format);
DCHECK_EQ(media::PIXEL_STORAGE_CPU, frame_format.pixel_storage);
- scoped_refptr<VideoFrame> frame = VideoFrame::WrapExternalSharedMemory(
- media::PIXEL_FORMAT_I420, frame_format.frame_size,
- gfx::Rect(frame_format.frame_size), frame_format.frame_size,
- reinterpret_cast<uint8_t*>(buffer->data()),
- VideoFrame::AllocationSize(media::PIXEL_FORMAT_I420,
- frame_format.frame_size),
- base::SharedMemory::NULLHandle(), 0u, timestamp);
+ scoped_refptr<VideoFrame> frame;
+ if (buffer->IsBackedByVideoFrame()) {
+ frame = buffer->GetVideoFrame();
+ frame->set_timestamp(timestamp);
+ } else {
+ frame = VideoFrame::WrapExternalSharedMemory(
+ media::PIXEL_FORMAT_I420, frame_format.frame_size,
+ gfx::Rect(frame_format.frame_size), frame_format.frame_size,
+ reinterpret_cast<uint8_t*>(buffer->data()),
+ VideoFrame::AllocationSize(media::PIXEL_FORMAT_I420,
+ frame_format.frame_size),
+ base::SharedMemory::NULLHandle(), 0u, timestamp);
+ }
if (!frame)
return;
frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE,
« no previous file with comments | « media/capture/video/video_capture_device.h ('k') | services/video_capture/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698