Oh well...
now I know what happened. And it's *not* a compiler or runtime bug. The
reason for the crashes is a division by 0 in ffmpeg. More precisely, in
ffmpeg.src/libavcodec/ratecontrol.c there are the lines:
q*= pow(d, 1.0/s->avctx->rc_buffer_aggressivity);
and, a little later
q/= pow(d, 1.0/s->avctx->rc_buffer_aggressivity);
d is between 0.001 and 1.0, s->avctx->rc_buffer_aggressivity is 0. Yes,
ZERO. Remember what your math teacher told you about dividing by zero?
Well, forget it. In scientific computing, the rules are completely
different. Sometimes two wrongs even make a right.
On Linux, this results in the pow() term being always 1.0 (if d == 1.0)
or 0.0 (if d < 1.0). On Windows/MinGW, pow() returns a NaN instead,
which makes q end up with a strange value as well. And that in turn
triggers the assertion failure.
Either version is right (kind of). What is wrong is to divide without
checking the divisor first. Does anybody still wonder why I think that
ffmpeg is an evil piece of *beep*beep* (censored)?
My workaround is to set rc_buffer_aggressivity to 1.0 - which is
probably not correct, but at least not completely insane either.
Et voilĂ - it works.
--
Michael "Tired" Riepe <[EMAIL PROTECTED]>
X-Tired: Each morning I get up I die a little
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
DVBCUT-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dvbcut-user