[FFmpeg-cvslog] Fix double write of DASH manifest in streaming mode

Kevin LaFlamme git at videolan.org
Wed Jul 14 17:37:15 EEST 2021


ffmpeg | branch: master | Kevin LaFlamme <kevin at aiera.com> | Thu Jun 24 08:58:07 2021 -0400| [3f5d5c1c2dd71d1b4e5fcc0496337d1b224b0794] | committer: Karthick J

Fix double write of DASH manifest in streaming mode

When streaming mode is enabled, the DASH manifest is written on the
first packet for the segment so that the segment can be advertised
immediately to clients. It was also still writing the manifest at the
end of the segment leading to two duplicate writes.

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

 libavformat/dashenc.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index e7a4a3d9e1..2b8fbcbe6e 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -2030,7 +2030,10 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
 
             c->nr_of_streams_flushed = 0;
         }
-        ret = write_manifest(s, final);
+        // In streaming mode the manifest is written at the beginning
+        // of the segment instead
+        if (!c->streaming || final)
+            ret = write_manifest(s, final);
     }
     return ret;
 }
@@ -2261,7 +2264,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt)
         // in streaming mode, the segments are available for playing
         // before fully written but the manifest is needed so that
         // clients and discover the segment filenames.
-        if (c->streaming && os->segment_type == SEGMENT_TYPE_MP4) {
+        if (c->streaming) {
             write_manifest(s, 0);
         }
 



More information about the ffmpeg-cvslog mailing list