Limit queue size to 10 frames

Workaround for ZLA, which seems to decode and queue twice as many frames as it displays.
This commit is contained in:
ameerj 2020-11-26 14:04:06 -05:00
parent c9e3abe206
commit 979b602738

View File

@ -104,6 +104,10 @@ void Codec::Decode() {
AVFramePtr frame = AVFramePtr{av_frame_alloc(), AVFrameDeleter}; AVFramePtr frame = AVFramePtr{av_frame_alloc(), AVFrameDeleter};
avcodec_receive_frame(av_codec_ctx, frame.get()); avcodec_receive_frame(av_codec_ctx, frame.get());
av_frames.push(std::move(frame)); av_frames.push(std::move(frame));
// Limit queue to 10 frames. Workaround for ZLA decode and queue spam
if (av_frames.size() > 10) {
av_frames.pop();
}
} }
} }