зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1556696
- Only fail the VideoFrameConverter out-of-buffers assert if we dropped 100 frames in a row. r=dminor
Five buffers is evidently not enough to ensure we don't run out. What we really want the assert for is that we are not leaking buffers so that they never recycle, while also keeping memory usage down. This achieves that by allowing for 100 frames to drop before failing the out-of-buffers assert. Differential Revision: https://phabricator.services.mozilla.com/D35324 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
8361aefc97
Коммит
755d2fbfa4
|
@ -309,14 +309,16 @@ class VideoFrameConverter {
|
||||||
rtc::scoped_refptr<webrtc::I420Buffer> buffer =
|
rtc::scoped_refptr<webrtc::I420Buffer> buffer =
|
||||||
mBufferPool.CreateBuffer(aSize.width, aSize.height);
|
mBufferPool.CreateBuffer(aSize.width, aSize.height);
|
||||||
if (!buffer) {
|
if (!buffer) {
|
||||||
MOZ_DIAGNOSTIC_ASSERT(false,
|
MOZ_DIAGNOSTIC_ASSERT(++mFramesDropped <= 100, "Buffers must be leaking");
|
||||||
"Buffers not leaving scope except for "
|
|
||||||
"reconfig, should never leak");
|
|
||||||
MOZ_LOG(gVideoFrameConverterLog, LogLevel::Warning,
|
MOZ_LOG(gVideoFrameConverterLog, LogLevel::Warning,
|
||||||
("Creating a buffer failed"));
|
("Creating a buffer failed"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
|
||||||
|
mFramesDropped = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
nsresult rv =
|
nsresult rv =
|
||||||
ConvertToI420(aImage, buffer->MutableDataY(), buffer->StrideY(),
|
ConvertToI420(aImage, buffer->MutableDataY(), buffer->StrideY(),
|
||||||
buffer->MutableDataU(), buffer->StrideU(),
|
buffer->MutableDataU(), buffer->StrideU(),
|
||||||
|
@ -349,6 +351,9 @@ class VideoFrameConverter {
|
||||||
TimeStamp mLastFrameQueuedForProcessing;
|
TimeStamp mLastFrameQueuedForProcessing;
|
||||||
UniquePtr<webrtc::VideoFrame> mLastFrameConverted;
|
UniquePtr<webrtc::VideoFrame> mLastFrameConverted;
|
||||||
bool mEnabled;
|
bool mEnabled;
|
||||||
|
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
|
||||||
|
size_t mFramesDropped = 0;
|
||||||
|
#endif
|
||||||
nsTArray<RefPtr<VideoConverterListener>> mListeners;
|
nsTArray<RefPtr<VideoConverterListener>> mListeners;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче