[FFmpeg-devel] [PATCH] libavformat/hlsenc.c Accurrate time output in program_date_time (corrected)
mypopy at gmail.com
mypopy at gmail.com
Tue Jul 9 15:55:45 EEST 2019
On Tue, Jul 9, 2019 at 7:42 PM Pavel Pilar <pilarpav at centrum.cz> wrote:
>
> ---
> libavformat/hlsenc.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 00c725af18..94fd713834 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -2653,6 +2653,9 @@ static int hls_init(AVFormatContext *s)
> char *p = NULL;
> int vtt_basename_size = 0;
> int fmp4_init_filename_len = strlen(hls->fmp4_init_filename) + 1;
> +#ifdef _POSIX_TIMERS
> + struct timespec now_accurate;
> +#endif
>
> hls->has_default_key = 0;
> hls->has_video_m3u8 = 0;
> @@ -2742,14 +2745,13 @@ static int hls_init(AVFormatContext *s)
> }
>
> if (hls->flags & HLS_PROGRAM_DATE_TIME) {
> -#ifdef _POSIX_TIMERS
> - struct timespec now0;
> - clock_gettime(CLOCK_MONOTONIC, &now0);
> - vs->initial_prog_date_time = now0.tv_sec + now0.tv_nsec / 1e9;
> -#else
> time_t now0;
> time(&now0);
> vs->initial_prog_date_time = now0;
> +#ifdef _POSIX_TIMERS
> + if (clock_gettime(CLOCK_REALTIME, &now_accurate) == 0) {
> + vs->initial_prog_date_time = now_accurate.tv_sec + now_accurate.tv_nsec / 1e9;
> + }
> #endif
> }
> if (hls->format_options_str) {
> --
> 2.17.1
As my comments before, av_gettime or av_gettime_relative can be used
in this case,
these functions better handle cross-platform issues like check #ifdef
_POSIX_TIMERS
More information about the ffmpeg-devel
mailing list