| 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 894a6710d0ddfc8e7b91351f7d98b5984d877e0b..3e0afcdba6a8b2ac69a60f310efc3b5b71110257 100644
|
| --- a/content/browser/renderer_host/media/video_capture_buffer_pool.cc
|
| +++ b/content/browser/renderer_host/media/video_capture_buffer_pool.cc
|
| @@ -41,7 +41,8 @@ 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_; }
|
| @@ -50,10 +51,18 @@ class SimpleBufferHandle final : public VideoCaptureBufferPool::BufferHandle {
|
| return gfx::SHARED_MEMORY_BUFFER;
|
| }
|
| ClientBuffer AsClientBuffer() override { return nullptr; }
|
| + base::PlatformFile AsPlatformHandle() override {
|
| +#if defined(OS_POSIX)
|
| + return handle_.fd;
|
| +#else
|
| + return handle_;
|
| +#endif
|
| + }
|
|
|
| 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
|
| @@ -79,6 +88,13 @@ class GpuMemoryBufferBufferHandle
|
| return gmb_->GetHandle().type;
|
| }
|
| ClientBuffer AsClientBuffer() override { return gmb_->AsClientBuffer(); }
|
| + base::PlatformFile AsPlatformHandle() override {
|
| +#if defined(OS_POSIX)
|
| + return gmb_->GetHandle().handle.fd;
|
| +#else
|
| + return gmb_->GetHandle().handle;
|
| +#endif
|
| + }
|
|
|
| private:
|
| gfx::GpuMemoryBuffer* const gmb_;
|
| @@ -95,8 +111,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,
|
|
|