mdec: stop preferring the simple IDCT.
authorRonald S. Bultje <rsbultje@gmail.com>
Wed, 21 Jun 2017 13:01:20 +0000 (09:01 -0400)
committerRonald S. Bultje <rsbultje@gmail.com>
Wed, 21 Jun 2017 13:01:32 +0000 (09:01 -0400)
This was added in e3e3c82555e2382125195c1ba9f34b5a43299abc, probably
as a workaround for the fact that the quant table was not permutated
and the IDCT coefficients are, meaning that you'd only get correct
reconstruction if the IDCT permutation was an identity matrix, which
happens to be the case when you use the simple IDCT. The quant table
permutation bug was fixed in 42dd1434bf6a7230e4175c08fcfabc3ba51a0463,
meaning this workaround is no longer necessary.

In practical terms, before 42dd1434bf6a7230e4175c08fcfabc3ba51a0463,
the PSNR between decodes of the fate-mdec using simple (C) or simplemmx
IDCTs was 35. After 42dd1434bf6a7230e4175c08fcfabc3ba51a0463, it's 90.

libavcodec/mdec.c

index fabc19f..59658b3 100644 (file)
@@ -215,9 +215,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
     MDECContext * const a = avctx->priv_data;
     int i;
 
-    if (avctx->idct_algo == FF_IDCT_AUTO)
-        avctx->idct_algo = FF_IDCT_SIMPLE;
-
     a->mb_width  = (avctx->coded_width  + 15) / 16;
     a->mb_height = (avctx->coded_height + 15) / 16;