mirror of
https://github.com/mpv-player/mpv
synced 2024-12-25 08:12:17 +00:00
demux_lavf: don't consider EAGAIN as EOF condition
This happens apparently randomly with rtmp:// and after seeks. This eventually leads to audio decoding returning an EOF status, which basically disables audio sync. This will lead to audio desync, even if audio decoding later "recovers" when the demuxer actually returns audio packets. Hack-fix this by special-casing EAGAIN.
This commit is contained in:
parent
6856d81c68
commit
0dd5228626
@ -780,9 +780,10 @@ static int demux_lavf_fill_buffer(demuxer_t *demux)
|
||||
demux_packet_t *dp;
|
||||
|
||||
AVPacket *pkt = talloc(NULL, AVPacket);
|
||||
if (av_read_frame(priv->avfc, pkt) < 0) {
|
||||
int r = av_read_frame(priv->avfc, pkt);
|
||||
if (r < 0) {
|
||||
talloc_free(pkt);
|
||||
return 0; // eof
|
||||
return r == AVERROR(EAGAIN) ? 1 : -1; // eof
|
||||
}
|
||||
talloc_set_destructor(pkt, destroy_avpacket);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user