mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
avcodec/mediacodecdec: fix immediate EAGAIN with buffered packet
In cases where the mediacodec decoder consumed a partial packet, receive_frame() would start returning EAGAIN if the rest of the packet couldn't be flushed and no frames were immediately available. This fixes receive_frame() to perform its normal blocking wait for new frames before returning EAGAIN. Fixes an issue I could reproduce fairly often on a FireOS 6 device, and reported to be happening intermittently by two mpv users. Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
This commit is contained in:
parent
f56ee74033
commit
3172b31223
@ -452,7 +452,7 @@ static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
|
||||
|
||||
/* skip fetching new packet if we still have one buffered */
|
||||
if (s->buffered_pkt.size > 0)
|
||||
return AVERROR(EAGAIN);
|
||||
return mediacodec_send_receive(avctx, s, frame, true);
|
||||
|
||||
/* fetch new packet or eof */
|
||||
ret = ff_decode_get_packet(avctx, &s->buffered_pkt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user