On date Friday 2015-11-27 19:16:06 +0100, Nicolas George encoded: > Signed-off-by: Nicolas George <geo...@nsup.org> > --- > libavformat/internal.h | 6 ++++++ > libavformat/utils.c | 5 +++++ > 2 files changed, 11 insertions(+) > > > Apparently, the most unhappyness was caused by the error code in the public > API. This is not the case here. > > > diff --git a/libavformat/internal.h b/libavformat/internal.h > index ee86094..0f684bd 100644 > --- a/libavformat/internal.h > +++ b/libavformat/internal.h > @@ -516,4 +516,10 @@ int ff_copy_whitelists(AVFormatContext *dst, > AVFormatContext *src); > int ffio_open2_wrapper(struct AVFormatContext *s, AVIOContext **pb, const > char *url, int flags, > const AVIOInterruptCB *int_cb, AVDictionary > **options); > > +/** > + * Returned by demuxers to indicate that data was consumed but discarded > + * (ignored streams or junk data). The framework will re-call the demuxer. > + */ > +#define FFERROR_REDO FFERRTAG( 'R','E','D','O') > + > #endif /* AVFORMAT_INTERNAL_H */ > diff --git a/libavformat/utils.c b/libavformat/utils.c > index 8cb7d38..83e2f73 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -680,6 +680,11 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) > av_init_packet(pkt); > ret = s->iformat->read_packet(s, pkt); > if (ret < 0) { > + /* Some demuxer (FLV, MPEG-PS) return FFERROR_REDO when they > + data and discard it (ignored streams, junk, extradata). > + We must re-call the demuxer to get the real packet. */ > + if (ret == FFERROR_REDO) > + continue;
LGTM with the changes suggested in the other comments. In particular: /* Some demuxers return FFERROR_REDO when they provide data and discard it (ignored streams, junk, extradata). We must re-call the demuxer to get the real packet. */ Thanks. -- FFmpeg = Frightening Forgiving Marvellous Powered Exxagerate Gorilla _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel