[FFmpeg-devel] [PATCH] avcodec/libx264: remove FF_CODEC_CAP_INIT_THREADSAFE flag

Hendrik Leppkes h.leppkes at gmail.com
Sat Oct 20 14:35:34 EEST 2018


On Sat, Oct 20, 2018 at 12:35 PM Marton Balint <cus at passwd.hu> wrote:
>
> Libx264 uses strtok which is not thread safe. Strtok is used in
> x264_param_default_preset in param_apply_tune in x264/common/base.c.
> Therefore the flag must be removed.
>
> Fixes ticket #7446.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  libavcodec/libx264.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
> index 54e6703d73..d6367bf557 100644
> --- a/libavcodec/libx264.c
> +++ b/libavcodec/libx264.c
> @@ -1063,8 +1063,7 @@ AVCodec ff_libx264_encoder = {
>      .priv_class       = &x264_class,
>      .defaults         = x264_defaults,
>      .init_static_data = X264_init_static,
> -    .caps_internal    = FF_CODEC_CAP_INIT_THREADSAFE |
> -                        FF_CODEC_CAP_INIT_CLEANUP,
> +    .caps_internal    = FF_CODEC_CAP_INIT_CLEANUP,
>      .wrapper_name     = "libx264",
>  };
>  #endif
> @@ -1115,8 +1114,7 @@ AVCodec ff_libx262_encoder = {
>      .priv_class       = &X262_class,
>      .defaults         = x264_defaults,
>      .pix_fmts         = pix_fmts_8bit,
> -    .caps_internal    = FF_CODEC_CAP_INIT_THREADSAFE |
> -                        FF_CODEC_CAP_INIT_CLEANUP,
> +    .caps_internal    = FF_CODEC_CAP_INIT_CLEANUP,
>      .wrapper_name     = "libx264",
>  };
>  #endif
> --
> 2.16.4
>

Was this ever reported to x264? Theoretically some other library or
another part of a calling application could still use strtok and break
it.

- Hendrik


More information about the ffmpeg-devel mailing list