dashenc: Reduce the segment duration if cutting out parts with edit lists
authorMartin Storsjö <martin@martin.st>
Sun, 10 May 2015 07:05:37 +0000 (10:05 +0300)
committerMartin Storsjö <martin@martin.st>
Sun, 10 May 2015 19:57:21 +0000 (22:57 +0300)
This makes sure that the time + duration of the first segment
matches the start time of the next segment for e.g. AAC audio
with encoder delay.

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

index f228b86..cedd83b 100644 (file)
@@ -696,9 +696,11 @@ static int add_segment(OutputStream *os, const char *file,
         return AVERROR(ENOMEM);
     av_strlcpy(seg->file, file, sizeof(seg->file));
     seg->time = time;
-    if (seg->time < 0) // If pts<0, it is expected to be cut away with an edit list
-        seg->time = 0;
     seg->duration = duration;
+    if (seg->time < 0) { // If pts<0, it is expected to be cut away with an edit list
+        seg->duration += seg->time;
+        seg->time = 0;
+    }
     seg->start_pos = start_pos;
     seg->range_length = range_length;
     seg->index_length = index_length;