[Mplayer-users] Re: Using -idx with divx4 causes error
Raphael Manfredi
Raphael_Manfredi at pobox.com
Mon Aug 13 00:09:59 CEST 2001
Quoting mplayer-users at lists.sourceforge.net from ml.mplayer.users:
:I thought it's memory allocation problem, maybe glibc bug/limitation.
:It reallocates an array many times while building index, and if
:glibc doesn't handle it well, it is possible to run out of memory, so
:divx4 or something else will segfault.
:
:Before uploading teh file, try something!
:In aviheader.c, chaneg this line:
: priv->idx_size+=1024; // +16kB
:to:
: priv->idx_size+=65536; // +16kB
:
:And check it works or still sig11. (and tell me the results)
Well, actually, the bug was not there, but it helps to add 65536
since at the end, it now says:
AVI: Generated index table for 473494 chunks!
Actually, the PROPER fix is that the leading test is WRONG. It must
be:
if(priv->idx_pos >= priv->idx_size){
i.e. *greater or equal*, not less or equal.
Thanks for having narrowed the debugging scope for me!
Raphael
--- aviheader.c.orig Mon Aug 13 00:09:41 2001
+++ aviheader.c Mon Aug 13 00:08:10 2001
@@ -181,9 +181,10 @@
if(stream_eof(demuxer->stream)) break;
if(!id || avi_stream_id(id)==100) goto skip_chunk; // bad ID (or padding?)
- if(priv->idx_pos<=priv->idx_size){
+ if(priv->idx_pos >= priv->idx_size){
// priv->idx_size+=32;
- priv->idx_size+=1024; // +16kB
+// priv->idx_size+=1024; // +16kB
+ priv->idx_size+=65536; // +many more kB
priv->idx=realloc(priv->idx,priv->idx_size*sizeof(AVIINDEXENTRY));
if(!priv->idx){priv->idx_pos=0; printf("Out of Memory\n"); break;} // error!
}
_______________________________________________
Mplayer-users mailing list
Mplayer-users at lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/mplayer-users
More information about the MPlayer-users
mailing list