[FFmpeg-devel] [PATCH] hlsenc: don't use %s for strftime on msvc

Hendrik Leppkes h.leppkes at gmail.com
Tue Feb 21 09:26:00 EET 2017


On Tue, Feb 21, 2017 at 8:24 AM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> MSVC doesn't support the %s time format, and instead of returning an
> error the invalid parameter handler is invoked which (by default)
> terminates the process.
> ---
>  libavformat/hlsenc.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index e673f59710..cf2e3381c4 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -1025,7 +1025,8 @@ static const char * get_default_pattern_localtime_fmt(void)
>      struct tm *p, tmbuf;
>      p = localtime_r(&t, &tmbuf);
>      // no %s support when strftime returned error or left format string unchanged
> -    return (!strftime(b, sizeof(b), "%s", p) || !strcmp(b, "%s")) ? "-%Y%m%d%H%M%S.ts" : "-%s.ts";
> +    // also no %s support on MSVC, which invokes the invalid parameter handler on unsupported format strings, instead of returning an error
> +    return (HAVE_LIBC_MSVCRT || !strftime(b, sizeof(b), "%s", p) || !strcmp(b, "%s")) ? "-%Y%m%d%H%M%S.ts" : "-%s.ts";
>  }
>
>  static int hls_write_header(AVFormatContext *s)
> --
> 2.11.0.windows.1
>

An alternative would be testing for %s support in configure somehow
and setting a config variable for that, instead of probing at runtime
here.

- Hendrik


More information about the ffmpeg-devel mailing list