DescriptionRTCVideoDecoder: Fixes for high resolutions and high pressure cases.
RTCVideoDecoder allocates SHM buffers up to kMaxNumSharedMemorySegments,
using the currently requested size. However, if, after allocating
kMaxNumSharedMemorySegments, an input buffer arrives with a size larger
than the previously allocated, we will never allocate any more buffers
to fit the new size, and will not decode anymore, waiting forever for
new SHM buffers
Separately, we allow 300 input buffers to be pended and expect to be able
to catch up later on. However, if we are already 300 buffers behind, it is
very unlikely that we ever would. Moreover, it's better for user
experience to just catch up as fast as possible, dropping pending buffers.
This modifies SHM buffer allocation to always allocate a fixed number of
buffers, based on the currently requested size. If larger buffers are
needed later on, we wait for all SHM buffers to be returned and reallocate
with the new size.
Also, allow only 8 pending buffers. This, together with 16 decode buffers,
should be a deep enough pipeline.
BUG=496349
TEST=apprtc, large Hangouts
Committed: https://crrev.com/4a4514009cf31d4e7ae304d4c0dadda52d3d1516
Cr-Commit-Position: refs/heads/master@{#339787}
Patch Set 1 #
Total comments: 2
Messages
Total messages: 16 (5 generated)
|