diff libmpdemux/muxer_avi.c @ 13249:a6642a4330fa

ensure that avi files have a valid header as soon as possible. without this, the header says 0x0 video size, which works with mplayer when the video size is stored in the codec data, but it does NOT work with other players or with codecs that don't store size (e.g. snow). actually i don't like having seeks in the muxer module, but i don't know any other way to implement this fix without major changes to mencoder. if you have a better fix, please reverse this and commit yours.
author rfelker
date Sun, 05 Sep 2004 16:51:15 +0000
parents da17b2c262de
children b8b626781ab0
line wrap: on
line diff
--- a/libmpdemux/muxer_avi.c	Sun Sep 05 13:02:31 2004 +0000
+++ b/libmpdemux/muxer_avi.c	Sun Sep 05 16:51:15 2004 +0000
@@ -195,6 +195,13 @@
     struct avi_stream_info *vsi = muxer->def_v->priv;
     int paddedlen = len + (len&1);
 
+    if (s->type == MUXER_TYPE_VIDEO && !s->h.dwSuggestedBufferSize) {
+	off_t pos=ftell(muxer->file);
+	fseek(muxer->file, 0, SEEK_SET);
+	avifile_write_header(muxer);
+	fseek(muxer->file, pos, SEEK_SET);
+    }
+
     rifflen = muxer->file_end - vsi->riffofs[vsi->riffofspos] - 8;
     if (vsi->riffofspos == 0) {
 	rifflen += 8+muxer->idx_pos*sizeof(AVIINDEXENTRY);