Attempt seeking to write EBML master sizes even if streamed
authorDavid Conrad <lessen42@gmail.com>
Thu, 4 Mar 2010 08:53:00 +0000 (08:53 +0000)
committerDavid Conrad <lessen42@gmail.com>
Thu, 4 Mar 2010 08:53:00 +0000 (08:53 +0000)
Most EBML masters are much smaller than IO_BUFFER_SIZE and thus the size
can be updated. This makes parsing the resulting files easier.

Originally committed as revision 22197 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/matroskaenc.c

index ad41893..0f74ad3 100644 (file)
@@ -218,11 +218,8 @@ static void end_ebml_master(ByteIOContext *pb, ebml_master master)
 {
     int64_t pos = url_ftell(pb);
 
-    // leave the unknown size for masters when streaming
-    if (url_is_streamed(pb))
+    if (url_fseek(pb, master.pos - master.sizebytes, SEEK_SET) < 0)
         return;
-
-    url_fseek(pb, master.pos - master.sizebytes, SEEK_SET);
     put_ebml_num(pb, pos - master.pos, master.sizebytes);
     url_fseek(pb, pos, SEEK_SET);
 }