[FFmpeg-devel] [PATCH] Fix VP3 dequantization matrices when an IDCT permutation is used

Aurelien Jacobs aurel
Wed Sep 17 21:37:41 CEST 2008


David Conrad wrote:

> Hi,
> 
> It appears that the reason why the VP3 SSE/MMX IDCTs weren't bitexact  
> to the C version was because the dct coefficients weren't being  
> dequantized correctly when a permutation was needed. The coefficients  
> are permutated correctly in unpack_vlcs() but the dequantization  
> matrices are built assuming no permutation. This fix allows both the  
> SSE2 and MMX IDCTs produce bitexact output for the VP3 and Theora  
> samples I have.
> 
> [...]
> 
> --- a/libavcodec/i386/dsputil_mmx.c
> +++ b/libavcodec/i386/dsputil_mmx.c
> @@ -2528,9 +2528,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
>                  c->idct_permutation_type= FF_LIBMPEG2_IDCT_PERM;
>  #endif
>              }else if((ENABLE_VP3_DECODER || ENABLE_VP5_DECODER || ENABLE_VP6_DECODER) &&
> -                     idct_algo==FF_IDCT_VP3 &&
> -                     avctx->codec->id!=CODEC_ID_THEORA &&
> -                     !(avctx->flags & CODEC_FLAG_BITEXACT)){
> +                     idct_algo==FF_IDCT_VP3){

As you enable this code for theora, you also must add a
'|| ENABLE_THEORA_DECODER' to the above list, to ensure this code
won't be disabled when only the theora decoder is compiled in.

Aurel




More information about the ffmpeg-devel mailing list