On Sun, Dec 01, 2019 at 12:05:00PM +0000, Andreas Rheinhardt wrote:
> ggarr...@gmail.com:
> > From: Gonzalo Garramuño <ggarr...@gmail.com>
> > 
> > Moved the check inside and at the end of the if (pktl) as per Michael 
> > Niedermayer's suggestion.
> > This patch is based on one from Blake Senftner ( bsenftner at earthlink.net 
> > ).
> > 
> > The hanging in av_read_frame can be reproduced with an rtmp stream that is 
> > aborted midway and ffplay (for example) playing that stream.
> > ---
> >  libavformat/utils.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/libavformat/utils.c b/libavformat/utils.c
> > index 8196442dd1..653918d5a5 100644
> > --- a/libavformat/utils.c
> > +++ b/libavformat/utils.c
> > @@ -1836,6 +1836,11 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
> >                                                 
> > &s->internal->packet_buffer_end, pkt);
> >                  goto return_packet;
> >              }
> > +
> > +            if (ff_check_interrupt(&s->interrupt_callback)) {
> > +                av_log(s, AV_LOG_DEBUG, "interrupted\n");
> > +                return AVERROR_EXIT;
> > +            }
> >          }
> >  
> >          ret = read_frame_internal(s, pkt);
> >This patch makes it possible for pkt to be still uninitialised after
> the call to av_read_frame() if I am not mistaken (namely if the packet
> list was initially not empty and the interrupt was triggered before
> read_frame_internal() has been called). If so, this clashes with a
> recently proposed patch by me
> (https://ffmpeg.org/pipermail/ffmpeg-devel/2019-December/253662.html).
> One could either allow av_read_frame() to return unclean packets on
> error or you would have to add the necessary initializations in your
> code (or you would have to make sure that your code is not triggered
> before the first call to read_frame_internal()).

One could theoretically argue that it would make sense to only call the
check after the first read_frame_internal and only before each 
read_frame_internal. Sadly thats not as simple to achieve as moving
the code around, so i didnt suggest it previously

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Old school: Use the lowest level language in which you can solve the problem
            conveniently.
New school: Use the highest level language in which the latest supercomputer
            can solve the problem without the user falling asleep waiting.

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to