[FFmpeg-devel] [PATCH] avcodec/pngdec: mark previous_picture as done on end of decode_frame_common()

Ronald S. Bultje rsbultje at gmail.com
Thu Oct 1 02:14:10 CEST 2015


Hi,

On Sun, Sep 27, 2015 at 9:13 PM, Michael Niedermayer <michaelni at gmx.at>
wrote:

> From: Michael Niedermayer <michael at niedermayer.cc>
>
> Fixes deadlock with threads
>
> Found-by: Paul B Mahol
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavcodec/pngdec.c |    2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
> index ee11f12..743144b 100644
> --- a/libavcodec/pngdec.c
> +++ b/libavcodec/pngdec.c
> @@ -1217,6 +1217,7 @@ exit_loop:
>          }
>      }
>      ff_thread_report_progress(&s->picture, INT_MAX, 0);
> +    ff_thread_report_progress(&s->previous_picture, INT_MAX, 0);
>
>      av_frame_set_metadata(p, metadata);
>      metadata   = NULL;
> @@ -1225,6 +1226,7 @@ exit_loop:
>  fail:
>      av_dict_free(&metadata);
>      ff_thread_report_progress(&s->picture, INT_MAX, 0);
> +    ff_thread_report_progress(&s->previous_picture, INT_MAX, 0);
>      return ret;
>  }
>
> --
> 1.7.9.5


So I directly admit I didn't look very deep, so I may be missing something
terribly obvious, but uhm. Shouldn't we mark previous_picture as done when
it's current? Why mark it as done in the frame after?

Ronald


More information about the ffmpeg-devel mailing list