Index: webrtc/common_video/i420_buffer_pool.cc |
diff --git a/webrtc/common_video/i420_buffer_pool.cc b/webrtc/common_video/i420_buffer_pool.cc |
index 630955aff9ddce7748077f3b52fd2d0769fff925..aa9c32ecd04d28a590f909bef3ac31f980260c14 100644 |
--- a/webrtc/common_video/i420_buffer_pool.cc |
+++ b/webrtc/common_video/i420_buffer_pool.cc |
@@ -14,10 +14,10 @@ |
namespace webrtc { |
-const size_t I420BufferPool::kMaxNumberOfFramesBeforeCrash = 300; |
- |
-I420BufferPool::I420BufferPool(bool zero_initialize) |
- : zero_initialize_(zero_initialize) {} |
+I420BufferPool::I420BufferPool(bool zero_initialize, |
+ size_t max_number_of_buffers) |
+ : zero_initialize_(zero_initialize), |
+ max_number_of_buffers_(max_number_of_buffers) {} |
void I420BufferPool::Release() { |
buffers_.clear(); |
@@ -26,8 +26,6 @@ void I420BufferPool::Release() { |
rtc::scoped_refptr<I420Buffer> I420BufferPool::CreateBuffer(int width, |
int height) { |
RTC_DCHECK_RUNS_SERIALIZED(&race_checker_); |
- RTC_CHECK_LT(buffers_.size(), kMaxNumberOfFramesBeforeCrash) |
- << "I420BufferPool too big."; |
// Release buffers with wrong resolution. |
for (auto it = buffers_.begin(); it != buffers_.end();) { |
if ((*it)->width() != width || (*it)->height() != height) |
@@ -44,6 +42,9 @@ rtc::scoped_refptr<I420Buffer> I420BufferPool::CreateBuffer(int width, |
if (buffer->HasOneRef()) |
return buffer; |
} |
+ |
+ if (buffers_.size() >= max_number_of_buffers_) |
+ return nullptr; |
// Allocate new buffer. |
rtc::scoped_refptr<PooledI420Buffer> buffer = |
new PooledI420Buffer(width, height); |