Index: content/browser/renderer_host/media/video_capture_buffer_pool.cc |
diff --git a/content/browser/renderer_host/media/video_capture_buffer_pool.cc b/content/browser/renderer_host/media/video_capture_buffer_pool.cc |
index c5298c1d6cae8dd8cf9315fbf3ad164124281505..9883ff55b725f6b4420e54bc66abfa2239bdc1dc 100644 |
--- a/content/browser/renderer_host/media/video_capture_buffer_pool.cc |
+++ b/content/browser/renderer_host/media/video_capture_buffer_pool.cc |
@@ -41,16 +41,19 @@ VideoFrame::Format VideoPixelFormatToVideoFrameFormat( |
// A simple holder of a memory-backed buffer and accesors to it. |
class SimpleBufferHandle final : public VideoCaptureBufferPool::BufferHandle { |
public: |
- SimpleBufferHandle(void* data, size_t size) : data_(data), size_(size) {} |
+ SimpleBufferHandle(void* data, size_t size, base::SharedMemoryHandle handle) |
+ : data_(data), size_(size), handle_(handle) {} |
~SimpleBufferHandle() override {} |
size_t size() const override { return size_; } |
void* data() override { return data_; } |
ClientBuffer AsClientBuffer() override { return nullptr; } |
+ base::SharedMemoryHandle AsPlatformHandle() override { return handle_; } |
private: |
void* const data_; |
const size_t size_; |
+ base::SharedMemoryHandle handle_; |
}; |
// A holder of a GpuMemoryBuffer-backed buffer, Map()ed on ctor and Unmap()ed on |
@@ -73,6 +76,9 @@ class GpuMemoryBufferBufferHandle |
size_t size() const override { return size_; } |
void* data() override { return data_[0]; } |
ClientBuffer AsClientBuffer() override { return gmb_->AsClientBuffer(); } |
+ base::SharedMemoryHandle AsPlatformHandle() override { |
+ return gmb_->GetHandle().handle; |
+ } |
private: |
gfx::GpuMemoryBuffer* const gmb_; |
@@ -89,8 +95,8 @@ class VideoCaptureBufferPool::SharedMemTracker final : public Tracker { |
size_t mapped_size() const override { return shared_memory_.mapped_size(); } |
scoped_ptr<BufferHandle> GetBufferHandle() override { |
- return make_scoped_ptr( |
- new SimpleBufferHandle(shared_memory_.memory(), mapped_size())); |
+ return make_scoped_ptr(new SimpleBufferHandle( |
+ shared_memory_.memory(), mapped_size(), shared_memory_.handle())); |
} |
bool ShareToProcess(base::ProcessHandle process_handle, |