Fix IDR frame dropping race condition which seems to occur frequently with GFE 3.17

This commit is contained in:
Cameron Gutman 2019-01-18 01:50:39 -08:00
parent 9360adb39a
commit a653f4d3e0

View File

@ -582,8 +582,17 @@ void processRtpPayload(PNV_VIDEO_PACKET videoPacket, int length, unsigned long l
// depacketizer will next try to process a non-SOF packet,
// and cause it to assert.
if (dropStatePending) {
dropFrameState();
return;
if (nalChainHead && nalChainHead->bufferType != BUFFER_TYPE_PICDATA) {
// Don't drop the frame state if this frame is an IDR frame itself,
// otherwise we'll lose this IDR frame without another in flight
// and have to wait until we hit our consecutive drop limit to
// request a new one (potentially several seconds).
dropStatePending = 0;
}
else {
dropFrameState();
return;
}
}
reassembleFrame(frameIndex);