[FFmpeg-cvslog] avformat/dashenc: Format xs:datetime in millisecond precision

Karthick J git at videolan.org
Mon Jan 21 11:27:17 EET 2019


ffmpeg | branch: master | Karthick J <kjeyapal at akamai.com> | Thu Jan 17 14:46:20 2019 +0530| [b6d96a6bcc531c216623fbcdf9d5034f51abf216] | committer: Karthick J

avformat/dashenc: Format xs:datetime in millisecond precision

For low latency streaming even milliseconds matter!

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b6d96a6bcc531c216623fbcdf9d5034f51abf216
---

 libavformat/dashenc.c | 15 ++++++++++++---
 1 file 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);
     }
 }
 



More information about the ffmpeg-cvslog mailing list