| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/media/video_capture_buffer_pool.h" | 5 #include "content/browser/renderer_host/media/video_capture_buffer_pool.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 | 10 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 | 36 |
| 37 // Tracker specifics for SharedMemory. | 37 // Tracker specifics for SharedMemory. |
| 38 class VideoCaptureBufferPool::SharedMemTracker final : public Tracker { | 38 class VideoCaptureBufferPool::SharedMemTracker final : public Tracker { |
| 39 public: | 39 public: |
| 40 SharedMemTracker(); | 40 SharedMemTracker(); |
| 41 | 41 |
| 42 bool Init(VideoFrame::Format format, const gfx::Size& dimensions) override; | 42 bool Init(VideoFrame::Format format, const gfx::Size& dimensions) override; |
| 43 void* storage() override { return shared_memory_.memory(); } | 43 void* storage() override { return shared_memory_.memory(); } |
| 44 size_t requested_size() override { return shared_memory_.requested_size(); } | 44 size_t requested_size() override { return shared_memory_.requested_size(); } |
| 45 size_t mapped_size() override { return shared_memory_.mapped_size(); } | 45 size_t mapped_size() override { return shared_memory_.mapped_size(); } |
| 46 base::SharedMemoryHandle handle() override { return shared_memory_.handle(); } |
| 46 | 47 |
| 47 bool ShareToProcess(base::ProcessHandle process_handle, | 48 bool ShareToProcess(base::ProcessHandle process_handle, |
| 48 base::SharedMemoryHandle* new_handle) override { | 49 base::SharedMemoryHandle* new_handle) override { |
| 49 return shared_memory_.ShareToProcess(process_handle, new_handle); | 50 return shared_memory_.ShareToProcess(process_handle, new_handle); |
| 50 } | 51 } |
| 51 | 52 |
| 52 private: | 53 private: |
| 53 // The memory created to be shared with renderer processes. | 54 // The memory created to be shared with renderer processes. |
| 54 base::SharedMemory shared_memory_; | 55 base::SharedMemory shared_memory_; |
| 55 }; | 56 }; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 if (tracker->ShareToProcess(process_handle, &remote_handle)) { | 101 if (tracker->ShareToProcess(process_handle, &remote_handle)) { |
| 101 *memory_size = tracker->mapped_size(); | 102 *memory_size = tracker->mapped_size(); |
| 102 return remote_handle; | 103 return remote_handle; |
| 103 } | 104 } |
| 104 DPLOG(ERROR) << "Error mapping Shared Memory."; | 105 DPLOG(ERROR) << "Error mapping Shared Memory."; |
| 105 return base::SharedMemoryHandle(); | 106 return base::SharedMemoryHandle(); |
| 106 } | 107 } |
| 107 | 108 |
| 108 bool VideoCaptureBufferPool::GetBufferInfo(int buffer_id, | 109 bool VideoCaptureBufferPool::GetBufferInfo(int buffer_id, |
| 109 void** storage, | 110 void** storage, |
| 110 size_t* size) { | 111 size_t* size, |
| 112 base::SharedMemoryHandle* handle) { |
| 111 base::AutoLock lock(lock_); | 113 base::AutoLock lock(lock_); |
| 112 | 114 |
| 113 Tracker* tracker = GetTracker(buffer_id); | 115 Tracker* tracker = GetTracker(buffer_id); |
| 114 if (!tracker) { | 116 if (!tracker) { |
| 115 NOTREACHED() << "Invalid buffer_id."; | 117 NOTREACHED() << "Invalid buffer_id."; |
| 116 return false; | 118 return false; |
| 117 } | 119 } |
| 118 | 120 |
| 119 DCHECK(tracker->held_by_producer()); | 121 DCHECK(tracker->held_by_producer()); |
| 120 *storage = tracker->storage(); | 122 *storage = tracker->storage(); |
| 121 *size = tracker->mapped_size(); | 123 *size = tracker->mapped_size(); |
| 124 *handle = tracker->handle(); |
| 122 return true; | 125 return true; |
| 123 } | 126 } |
| 124 | 127 |
| 125 int VideoCaptureBufferPool::ReserveForProducer(media::VideoPixelFormat format, | 128 int VideoCaptureBufferPool::ReserveForProducer(media::VideoPixelFormat format, |
| 126 const gfx::Size& dimensions, | 129 const gfx::Size& dimensions, |
| 127 int* buffer_id_to_drop) { | 130 int* buffer_id_to_drop) { |
| 128 base::AutoLock lock(lock_); | 131 base::AutoLock lock(lock_); |
| 129 return ReserveForProducerInternal(format, dimensions, buffer_id_to_drop); | 132 return ReserveForProducerInternal(format, dimensions, buffer_id_to_drop); |
| 130 } | 133 } |
| 131 | 134 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 return buffer_id; | 232 return buffer_id; |
| 230 } | 233 } |
| 231 | 234 |
| 232 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker( | 235 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker( |
| 233 int buffer_id) { | 236 int buffer_id) { |
| 234 TrackerMap::const_iterator it = trackers_.find(buffer_id); | 237 TrackerMap::const_iterator it = trackers_.find(buffer_id); |
| 235 return (it == trackers_.end()) ? NULL : it->second; | 238 return (it == trackers_.end()) ? NULL : it->second; |
| 236 } | 239 } |
| 237 | 240 |
| 238 } // namespace content | 241 } // namespace content |
| OLD | NEW |