[MPlayer-dev-eng] gcc 2.95 bug/oddity?
Diego Biurrun
diego at biurrun.de
Wed Jan 19 14:03:26 CET 2005
Diego Biurrun writes:
>
> I'm experiencing a peculiar bug that nobody can reproduce, when
> playing
>
> http://mplayerhq.hu/~diego/cathedral-beta2-400extra-crop-avc.mp4
> http://mplayerhq.hu/~diego/nature_704x576_25Hz_1500kbits.h264
>
> playback fails with the following errors:
>
> Movie-Aspect is nan:1 - prescaling to correct movie aspect.
> VO Config (704x576->704x-2147483648,flags=0,'MPlayer',0x32315659)
> VO: invalid dimensions!
> FATAL: Cannot initialize video driver.
>
> I usually use gcc 2.95.4, if I recompile libmpcodecs/vd.c with gcc 3.3
> the error goes away, changing -O4 to -O0 and/or -march=pentium,
> -mcpu=pentium does not help.
>
> In libmpcodecs/vd.c line 125 the following variable is declared:
>
> float movie_aspect=-1.0;
>
> and tested in line 262:
>
> if(movie_aspect>-1.0) sh->aspect = movie_aspect; // cmdline overrides autodetect
>
> If I change the initialization of movie_aspect to 0, the problem goes
> away, but I haven't read the code in depth to understand what it is
> supposed to be doing.
>
> Can anybody give me some further clues about this? Is this a compiler
> bug and/or what should I investigate to verify this?
I've been digging through the code some more and found the following:
The problem appears to originate in libmpcodecs/vd_ffmpeg.c line 464
float aspect= av_q2d(avctx->sample_aspect_ratio) * avctx->width / avctx->height;
aspect is used a few lines below to set sh->aspect.
Now after adding a few printfs throughout the code it appears to be
av_q2d(avctx->sample_aspect_ratio)
that returns nan and thus aspect is nan. av_q2d is defined in
libavcodec/rational.h as
/**
* converts the given AVRational to a double.
*/
static inline double av_q2d(AVRational a){
return a.num / (double) a.den;
}
I'm stuck there for the moment. Michael, can you comment on this?
It's your code..
Diego
More information about the MPlayer-dev-eng
mailing list