Fix demuxing of files for which the demuxer returns AVERROR(EAGAIN) at some point. Also returns error code to the caller in case of different non EOF error. --- ffprobe.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/ffprobe.c b/ffprobe.c index c304a6d..481ff0b 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -2027,7 +2027,16 @@ static int read_interval_packets(WriterContext *w, AVFormatContext *fmt_ctx, ret = AVERROR(ENOMEM); goto end; } - while (!av_read_frame(fmt_ctx, &pkt)) { + while (1) { + ret = av_read_frame(fmt_ctx, &pkt); + if (ret == AVERROR(EAGAIN)) + continue; + if (ret < 0) { + if (ret == AVERROR_EOF) + ret = 0; + break; + } + if (fmt_ctx->nb_streams > nb_streams) { REALLOCZ_ARRAY_STREAM(nb_streams_frames, nb_streams, fmt_ctx->nb_streams); REALLOCZ_ARRAY_STREAM(nb_streams_packets, nb_streams, fmt_ctx->nb_streams); -- 1.9.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel