aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarthick J <kjeyapal@akamai.com>2019-01-17 14:28:20 +0530
committerKarthick J <kjeyapal@akamai.com>2019-01-21 14:50:23 +0530
commitb6d96a6bcc531c216623fbcdf9d5034f51abf216 (patch)
treed94d742b4f4584794d22da26d34b493f3022dadc
parent62f8d27ef1995354d6529ea0d9428501d7f914b4 (diff)
downloadffmpeg-b6d96a6bcc531c216623fbcdf9d5034f51abf216.tar.gz
avformat/dashenc: Format xs:datetime in millisecond precision
For low latency streaming even milliseconds matter!
-rw-r--r--libavformat/dashenc.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index cfd0f601d4..9c90cf17e5 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -32,6 +32,7 @@
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/rational.h"
+#include "libavutil/time.h"
#include "libavutil/time_internal.h"
#include "avc.h"
@@ -668,12 +669,20 @@ static void write_time(AVIOContext *out, int64_t time)
static void format_date_now(char *buf, int size)
{
- time_t t = time(NULL);
struct tm *ptm, tmbuf;
- ptm = gmtime_r(&t, &tmbuf);
+ int64_t time_us = av_gettime();
+ int64_t time_ms = time_us / 1000;
+ const time_t time_s = time_ms / 1000;
+ int millisec = time_ms - (time_s * 1000);
+ ptm = gmtime_r(&time_s, &tmbuf);
if (ptm) {
- if (!strftime(buf, size, "%Y-%m-%dT%H:%M:%SZ", ptm))
+ int len;
+ if (!strftime(buf, size, "%Y-%m-%dT%H:%M:%S", ptm)) {
buf[0] = '\0';
+ return;
+ }
+ len = strlen(buf);
+ snprintf(buf + len, size - len, ".%03dZ", millisec);
}
}