Index: webrtc/common_video/include/i420_buffer_pool.h |
diff --git a/webrtc/common_video/include/i420_buffer_pool.h b/webrtc/common_video/include/i420_buffer_pool.h |
index 5c9ab06a097f1afbd0013cc5c6439d7b62890552..834aa4f7c8cbe863f5af4cfdb8dd3ea6538cb975 100644 |
--- a/webrtc/common_video/include/i420_buffer_pool.h |
+++ b/webrtc/common_video/include/i420_buffer_pool.h |
@@ -30,14 +30,22 @@ class I420BufferPool { |
// Returns a buffer from the pool, or creates a new buffer if no suitable |
// buffer exists in the pool. |
- rtc::scoped_refptr<VideoFrameBuffer> CreateBuffer(int width, int height); |
+ rtc::scoped_refptr<I420Buffer> CreateBuffer(int width, int height); |
// Clears buffers_ and detaches the thread checker so that it can be reused |
// later from another thread. |
void Release(); |
private: |
+ class PooledI420Buffer : public webrtc::I420Buffer { |
+ public: |
+ PooledI420Buffer(int width, int height) : I420Buffer(width, height) {} |
+ |
+ // Underlying refcount access, used by the pool to check exclusive access. |
+ virtual bool HasOneRef() const = 0; |
+ }; |
+ |
rtc::ThreadChecker thread_checker_; |
- std::list<rtc::scoped_refptr<I420Buffer>> buffers_; |
+ std::list<rtc::scoped_refptr<PooledI420Buffer>> buffers_; |
// If true, newly allocated buffers are zero-initialized. Note that recycled |
// buffers are not zero'd before reuse. This is required of buffers used by |
// FFmpeg according to http://crbug.com/390941, which only requires it for the |