[FFmpeg-devel] [PATCH] pthread_frame: set err from the thread that return frame

wm4 nfxjfg at googlemail.com
Wed Apr 26 00:09:28 EEST 2017


On Tue, 25 Apr 2017 23:52:04 +0700
Muhammad Faiz <mfcc64 at gmail.com> wrote:

> when frame is received, not from other threads.
> 
> Should fix fate failure with THREADS>=4:
>   make fate-h264-attachment-631 THREADS=4
> 
> Signed-off-by: Muhammad Faiz <mfcc64 at gmail.com>
> ---
>  libavcodec/pthread_frame.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
> index 13d6828..c452ed7 100644
> --- a/libavcodec/pthread_frame.c
> +++ b/libavcodec/pthread_frame.c
> @@ -547,6 +547,10 @@ int ff_thread_decode_frame(AVCodecContext *avctx,
>  
>      fctx->next_finished = finished;
>  
> +    /* if frame is returned, properly set err from the thread that return frame */
> +    if (*got_picture_ptr)
> +        err = p->result;
> +
>      /* return the size of the consumed packet if no error occurred */
>      if (err >= 0)
>          err = avpkt->size;

Well, the logic confuses me. Does this override an earlier set err
value? Could err be set to the correct value in the first place (inside
of the loop)?


More information about the ffmpeg-devel mailing list