| 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 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ | 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ |
| 6 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ | 6 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 | 48 |
| 49 // One-time (per client/per-buffer) initialization to share a particular | 49 // One-time (per client/per-buffer) initialization to share a particular |
| 50 // buffer to a process. The size of the allocation is returned as | 50 // buffer to a process. The size of the allocation is returned as |
| 51 // |memory_size|. | 51 // |memory_size|. |
| 52 base::SharedMemoryHandle ShareToProcess(int buffer_id, | 52 base::SharedMemoryHandle ShareToProcess(int buffer_id, |
| 53 base::ProcessHandle process_handle, | 53 base::ProcessHandle process_handle, |
| 54 size_t* memory_size); | 54 size_t* memory_size); |
| 55 | 55 |
| 56 // Query the memory parameters of |buffer_id|. Fills in parameters in the | 56 // Query the memory parameters of |buffer_id|. Fills in parameters in the |
| 57 // pointer arguments, and returns true iff the buffer exists. | 57 // pointer arguments, and returns true iff the buffer exists. |
| 58 bool GetBufferInfo(int buffer_id, void** storage, size_t* size); | 58 bool GetBufferInfo(int buffer_id, |
| 59 void** storage, |
| 60 size_t* size, |
| 61 base::SharedMemoryHandle* handle); |
| 59 | 62 |
| 60 // Reserve or allocate a buffer to support a packed frame of |dimensions| of | 63 // Reserve or allocate a buffer to support a packed frame of |dimensions| of |
| 61 // pixel |format| and return its id. This will fail (returning kInvalidId) if | 64 // pixel |format| and return its id. This will fail (returning kInvalidId) if |
| 62 // the pool already is at its |count| limit of the number of allocations, and | 65 // the pool already is at its |count| limit of the number of allocations, and |
| 63 // all allocated buffers are in use by the producer and/or consumers. | 66 // all allocated buffers are in use by the producer and/or consumers. |
| 64 // | 67 // |
| 65 // If successful, the reserved buffer remains reserved (and writable by the | 68 // If successful, the reserved buffer remains reserved (and writable by the |
| 66 // producer) until ownership is transferred either to the consumer via | 69 // producer) until ownership is transferred either to the consumer via |
| 67 // HoldForConsumers(), or back to the pool with | 70 // HoldForConsumers(), or back to the pool with |
| 68 // RelinquishProducerReservation(). | 71 // RelinquishProducerReservation(). |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 void set_consumer_hold_count(int value) { consumer_hold_count_ = value; } | 110 void set_consumer_hold_count(int value) { consumer_hold_count_ = value; } |
| 108 | 111 |
| 109 // Returns a void* to the underlying storage, be that a memory block for | 112 // Returns a void* to the underlying storage, be that a memory block for |
| 110 // Shared Memory, or a GpuMemoryBuffer. | 113 // Shared Memory, or a GpuMemoryBuffer. |
| 111 virtual void* storage() = 0; | 114 virtual void* storage() = 0; |
| 112 // Amount of bytes requested when first created. Can be zero if it does not | 115 // Amount of bytes requested when first created. Can be zero if it does not |
| 113 // need RAM, e.g. is allocated in GPU memory. | 116 // need RAM, e.g. is allocated in GPU memory. |
| 114 virtual size_t requested_size() = 0; | 117 virtual size_t requested_size() = 0; |
| 115 // The actual size of the underlying backing resource. | 118 // The actual size of the underlying backing resource. |
| 116 virtual size_t mapped_size() = 0; | 119 virtual size_t mapped_size() = 0; |
| 120 virtual base::SharedMemoryHandle handle() = 0; |
| 117 | 121 |
| 118 virtual bool ShareToProcess(base::ProcessHandle process_handle, | 122 virtual bool ShareToProcess(base::ProcessHandle process_handle, |
| 119 base::SharedMemoryHandle* new_handle) = 0; | 123 base::SharedMemoryHandle* new_handle) = 0; |
| 120 | 124 |
| 121 private: | 125 private: |
| 122 // Indicates whether this Tracker is currently referenced by the producer. | 126 // Indicates whether this Tracker is currently referenced by the producer. |
| 123 bool held_by_producer_; | 127 bool held_by_producer_; |
| 124 // Number of consumer processes which hold this Tracker. | 128 // Number of consumer processes which hold this Tracker. |
| 125 int consumer_hold_count_; | 129 int consumer_hold_count_; |
| 126 }; | 130 }; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 146 // The buffers, indexed by the first parameter, a buffer id. | 150 // The buffers, indexed by the first parameter, a buffer id. |
| 147 using TrackerMap = std::map<int, Tracker*>; | 151 using TrackerMap = std::map<int, Tracker*>; |
| 148 TrackerMap trackers_; | 152 TrackerMap trackers_; |
| 149 | 153 |
| 150 DISALLOW_IMPLICIT_CONSTRUCTORS(VideoCaptureBufferPool); | 154 DISALLOW_IMPLICIT_CONSTRUCTORS(VideoCaptureBufferPool); |
| 151 }; | 155 }; |
| 152 | 156 |
| 153 } // namespace content | 157 } // namespace content |
| 154 | 158 |
| 155 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ | 159 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_BUFFER_POOL_H_ |
| OLD | NEW |