| 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 f636f3ac819e0b04c9eb4dc8f614983c6762aee5..50a1e122a294acc60290666fe28bf69ec723591a 100644
|
| --- a/content/browser/renderer_host/media/video_capture_buffer_pool.cc
|
| +++ b/content/browser/renderer_host/media/video_capture_buffer_pool.cc
|
| @@ -61,7 +61,8 @@ VideoFrame::StorageType VideoPixelFormatToVideoFrameStorageType(
|
| // 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_; }
|
| @@ -70,10 +71,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_;
|
| + const base::SharedMemoryHandle handle_;
|
| };
|
|
|
| // A holder of a GpuMemoryBuffer-backed buffer, Map()ed on ctor and Unmap()ed on
|
| @@ -99,6 +108,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_;
|
| @@ -117,8 +133,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,
|
|
|