From 54649cbda890b54dad0e76ae8886cb291be58a03 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 21 Jun 2015 04:52:08 +0200 Subject: [PATCH] ffmpeg_opt: Fix handling of creation_time now Fixes Ticket4495 Signed-off-by: Michael Niedermayer --- ffmpeg_opt.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 69222dea7e..a74640560b 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -40,6 +40,7 @@ #include "libavutil/parseutils.h" #include "libavutil/pixdesc.h" #include "libavutil/pixfmt.h" +#include "libavutil/time_internal.h" #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\ {\ @@ -2237,6 +2238,7 @@ loop_end: char type, *val; const char *stream_spec; int index = 0, j, ret = 0; + char now_time[256]; val = strchr(o->metadata[i].u.str, '='); if (!val) { @@ -2246,6 +2248,17 @@ loop_end: } *val++ = 0; + if (!strcmp(o->metadata[i].u.str, "creation_time") && + !strcmp(val, "now")) { + time_t now = time(0); + struct tm *ptm, tmbuf; + ptm = localtime_r(&now, &tmbuf); + if (ptm) { + if (strftime(now_time, sizeof(now_time), "%Y-%m-%d %H:%M:%S", ptm)) + val = now_time; + } + } + parse_meta_type(o->metadata[i].specifier, &type, &index, &stream_spec); if (type == 's') { for (j = 0; j < oc->nb_streams; j++) {