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()).

- Andreas
_______________________________________________
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