[FFmpeg-devel,4/4] lavf/dashenc: don't call flush_init_segment before avformat_write_header

Submitted by Rodger Combs on March 13, 2018, 4:46 a.m.

Details

Message ID 20180313044648.40735-4-rodger.combs@gmail.com
State New
Headers show

Commit Message

Rodger Combs March 13, 2018, 4:46 a.m.
Fixes crash when muxing MKV-in-DASH
---
 libavformat/dashenc.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

Patch hide | download patch | download mbox

diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 5689aef811..63ff827583 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -985,13 +985,6 @@  static int dash_init(AVFormatContext *s)
 
         av_log(s, AV_LOG_VERBOSE, "Representation %d init segment will be written to: %s\n", i, filename);
 
-        // Flush init segment
-        // except for mp4, since delay_moov is set and the init segment
-        // is then flushed after the first packets
-        if (strcmp(os->format_name, "mp4")) {
-            flush_init_segment(s, os);
-        }
-
         s->streams[i]->time_base = st->time_base;
         // If the muxer wants to shift timestamps, request to have them shifted
         // already before being handed to this muxer, so we don't have mismatches
@@ -1032,6 +1025,9 @@  static int dash_write_header(AVFormatContext *s)
         OutputStream *os = &c->streams[i];
         if ((ret = avformat_write_header(os->ctx, NULL)) < 0)
             return ret;
+
+        if ((ret = flush_init_segment(s, os)) < 0)
+            return ret;
     }
     ret = write_manifest(s, 0);
     if (!ret)