On 20.11.2015 03:26, Michael Niedermayer wrote: > From: Michael Niedermayer <mich...@niedermayer.cc> > > This should fix a infinite loop > > Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > --- > libavformat/ffmdec.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c > index c3850db..e7c1449 100644 > --- a/libavformat/ffmdec.c > +++ b/libavformat/ffmdec.c > @@ -49,7 +49,10 @@ static int ffm_is_avail_data(AVFormatContext *s, int size) > } else { > if (pos == ffm->write_index) { > /* exactly at the end of stream */ > - return AVERROR(EAGAIN); > + if (ffm->server_attached) > + return AVERROR(EAGAIN); > + else > + return AVERROR_INVALIDDATA; > } else if (pos < ffm->write_index) { > avail_size = ffm->write_index - pos; > } else { > @@ -59,8 +62,10 @@ static int ffm_is_avail_data(AVFormatContext *s, int size) > avail_size = (avail_size / ffm->packet_size) * (ffm->packet_size - > FFM_HEADER_SIZE) + len; > if (size <= avail_size) > return 1; > - else > + else if (ffm->server_attached) > return AVERROR(EAGAIN); > + else > + return AVERROR_INVALIDDATA; > } > > static int ffm_resync(AVFormatContext *s, int state) >
This reliably fixes the infinite EAGAIN loops. Thanks a lot! I haven't tested ffserver, but assuming you did and it still works, this patch is fine. Best regards, Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel