[FFmpeg-cvslog] fate/aic: force simple idct
Carl Eugen Hoyos
cehoyos at ag.or.at
Sat Jun 14 18:30:06 CEST 2014
Michael Niedermayer <michaelni <at> gmx.at> writes:
> > > fate/aic: force simple idct
> > >
> > > This should ensure all platforms use the same idct
> >
> > I would like to suggest to revert this:
> > As you know, I am all for hiding bugs from users
> > (by committing hacks around bugs), but hiding
> > user-visible bugs from fate is not a good idea
> > imo
>
> if you dont specify the idct then one will be choosen
> automatically, which will not produce the same
> output on all platforms for example armv6 without
> neon should fail this fate test
Yes, it fails on your cubox.
I just believe that this doesn't change my argument
that it isn't useful to fix a test that will affect
(every) user on an affected system.
> > Uncommenting this line in dsputil_ppc.c fixes the
> > issue for me (and unfortunately doesn't break
> > fate):
> > c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
>
> unfortunately though it will break decoding mpeg1/2/4,
> h263 and a few others on ppc. (untested)
I thought so too (I just wasn't sure) - hoped that
you would confirm.
> The bug you see is caused by ppc setting onle 2 of 3
> idct functions so the idct_permutation_type is either
> right for 2 (used by most code) or 1 (used by aic)
>
> you can see this by comparing the code to some other
> that sets idcts
>
> if ((avctx->idct_algo == FF_IDCT_AUTO) ||
> (avctx->idct_algo == FF_IDCT_ALTIVEC)) {
> c->idct_put = ff_idct_put_altivec;
> c->idct_add = ff_idct_add_altivec;
> c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
> }
>
> vs.
> if (avctx->idct_algo == FF_IDCT_AUTO ||
> avctx->idct_algo == FF_IDCT_SIMPLEARMV6) {
> c->idct_put = ff_simple_idct_put_armv6;
> c->idct_add = ff_simple_idct_add_armv6;
> c->idct = ff_simple_idct_armv6;
> c->idct_permutation_type = FF_LIBMPEG2_IDCT_PERM;
> }
>
> the later sets c->idct too
Thank you for the explanation!
I sent a patch that forces idct simple for aic
on ppc.
As said, it fails on all ppc platforms (which matches
your explanation).
Carl Eugen
More information about the ffmpeg-cvslog
mailing list