dashenc: Fix writing of timelines that don't start at t=0
authorMartin Storsjö <martin@martin.st>
Mon, 29 Dec 2014 13:39:23 +0000 (15:39 +0200)
committerMartin Storsjö <martin@martin.st>
Mon, 29 Dec 2014 21:26:25 +0000 (23:26 +0200)
When writing an explicit time, reset the cur_time variable to this
value as well. This avoids writing excessive time attributes for each
segment in the timeline, as long as the segments are continuous.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/dashenc.c

index b4fd194..7dd08ec 100644 (file)
@@ -214,8 +214,10 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext
                 Segment *seg = os->segments[i];
                 int repeat = 0;
                 avio_printf(out, "\t\t\t\t\t\t<S ");
-                if (i == start_index || seg->time != cur_time)
+                if (i == start_index || seg->time != cur_time) {
+                    cur_time = seg->time;
                     avio_printf(out, "t=\"%"PRId64"\" ", seg->time);
+                }
                 avio_printf(out, "d=\"%d\" ", seg->duration);
                 while (i + repeat + 1 < os->nb_segments &&
                        os->segments[i + repeat + 1]->duration == seg->duration &&