lavc/mediacodec: increase buffer dequeue timeout when the codec needs to be drained
Increase buffer dequeue timeout when the codec needs to be drained as it could happen that no input buffer is available when we receive a null packet for the first time (meaning we are unable to signal end of stream and mark the codec as draining). Fixes potential loss of last frames after sending a null packet.
This commit is contained in:
parent
b316ebf46d
commit
55816c9269
@ -446,9 +446,9 @@ int ff_mediacodec_dec_decode(AVCodecContext *avctx, MediaCodecDecContext *s,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->flushing) {
|
if (need_flushing || s->flushing) {
|
||||||
/* If the codec is flushing, block for a fair amount of time to
|
/* If the codec is flushing or need to be flushed, block for a fair
|
||||||
* ensure we got a frame */
|
* amount of time to ensure we got a frame */
|
||||||
output_dequeue_timeout_us = OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US;
|
output_dequeue_timeout_us = OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US;
|
||||||
} else if (s->dequeued_buffer_nb == 0) {
|
} else if (s->dequeued_buffer_nb == 0) {
|
||||||
/* If the codec hasn't produced any frames, do not block so we
|
/* If the codec hasn't produced any frames, do not block so we
|
||||||
|
Loading…
Reference in New Issue
Block a user