[FFmpeg-devel] [PATCH 1/2] swscale/utils: Set all threads to the same colorspace even on failure

James Almer jamrial at gmail.com
Sat Oct 23 04:53:07 EEST 2021


On 10/22/2021 6:45 PM, Michael Niedermayer wrote:
> Fixes: ./ffplay dav.y4m -vf "scale=hd1080:threads=4"
> Found-by: Paul
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>   libswscale/utils.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libswscale/utils.c b/libswscale/utils.c
> index 367b0ea5015..3752c3ec38c 100644
> --- a/libswscale/utils.c
> +++ b/libswscale/utils.c
> @@ -874,15 +874,16 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
>       int need_reinit = 0;
>   
>       if (c->nb_slice_ctx) {
> +        int parent_ret = 0;
>           for (int i = 0; i < c->nb_slice_ctx; i++) {
>               int ret = sws_setColorspaceDetails(c->slice_ctx[i], inv_table,
>                                                  srcRange, table, dstRange,
>                                                  brightness, contrast, saturation);
>               if (ret < 0)
> -                return ret;
> +                parent_ret = ret;
>           }
>   
> -        return 0;
> +        return parent_ret;
>       }
>   
>       handle_formats(c);

If you make this function not propagate the error value returned by 
av_image_alloc() so it will effectively return either 0 or -1 as stated 
by the doxy, you can change this to just do ret |= 
sws_setColorspaceDetails(...) instead of adding a new variable.


More information about the ffmpeg-devel mailing list