Don't seek when streamed
authorDavid Conrad <lessen42@gmail.com>
Wed, 5 Sep 2007 00:26:00 +0000 (00:26 +0000)
committerDavid Conrad <lessen42@gmail.com>
Wed, 5 Sep 2007 00:26:00 +0000 (00:26 +0000)
Originally committed as revision 10383 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/matroskaenc.c

index 34e1d41925430dcd0ddc120cac6596adddec9870..c50c155a40907053b0f1f9db552b400c1f5d35b2 100644 (file)
@@ -215,6 +215,10 @@ static void end_ebml_master(ByteIOContext *pb, ebml_master master)
 {
     offset_t pos = url_ftell(pb);
 
+    // leave the unknown size for masters when streaming
+    if (url_is_streamed(pb))
+        return;
+
     url_fseek(pb, master.pos - master.sizebytes, SEEK_SET);
     put_ebml_size(pb, pos - master.pos, master.sizebytes);
     url_fseek(pb, pos, SEEK_SET);
@@ -767,6 +771,7 @@ static int mkv_write_trailer(AVFormatContext *s)
 
     end_ebml_master(pb, mkv->cluster);
 
+    if (!url_is_streamed(pb)) {
     cuespos = mkv_write_cues(pb, mkv->cues, s->nb_streams);
     second_seekhead = mkv_write_seekhead(pb, mkv->cluster_seekhead);
 
@@ -790,6 +795,7 @@ static int mkv_write_trailer(AVFormatContext *s)
         put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, segment_uid, 16);
     }
     url_fseek(pb, currentpos, SEEK_SET);
+    }
 
     end_ebml_master(pb, mkv->segment);
     av_free(mkv->md5_ctx);