Lavf only supports a very limited approximation of non-blocking
behavior, so we should not return random EAGAINs to callers unless they
specifically requested it.
---
libavformat/demux.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libavformat/demux.c b/libavformat/demux.c
index 2dfd82a63c..5cd9522367 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -574,8 +574,12 @@ FF_ENABLE_DEPRECATION_WARNINGS
/* Some demuxers return FFERROR_REDO when they consume
data and discard it (ignored streams, junk, extradata).
- We must re-call the demuxer to get the real packet. */
- if (err == FFERROR_REDO)
+ We must re-call the demuxer to get the real packet.
+
+ Treat EAGAIN the same as FFERROR_REDO, unless the user
+ requested non-blocking behavior. */
+ if (err == FFERROR_REDO ||
+ (err == AVERROR(EAGAIN) && !(s->flags & AVFMT_FLAG_NONBLOCK)))
continue;
if (!pktl || err == AVERROR(EAGAIN))
return err;
--
2.35.1
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".