[FFmpeg-devel] [PATCH]wmv3 encoder

Denis Fortin fortin
Wed Jun 27 22:31:35 CEST 2007


Michael Niedermayer a ?crit :
> Hi
[...]
>> +void ff_vc1_inv_trans_put(uint8_t *dest, int linesize, DCTELEM block[64])
>> +{
>> +    int i,j;
>> +    uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
>> +
>> +    vc1_inv_trans_8x8_c(block);
>> +
>> +    /* read the pixels */
>> +    for(i=0;i<8;i++) {
>> +        dest[0] = cm[block[0]];
>> +        dest[1] = cm[block[1]];
>> +        dest[2] = cm[block[2]];
>> +        dest[3] = cm[block[3]];
>> +        dest[4] = cm[block[4]];
>> +        dest[5] = cm[block[5]];
>> +        dest[6] = cm[block[6]];
>> +        dest[7] = cm[block[7]];
>> +
>> +        dest += linesize;
>> +        block += 8;
>> +    }
>> +}
> 
> duplicate of put_pixels_clamped*
> 
> all encoder specific things MUST be in files seperate from the decoder
> so that compilation of them can be skiped if the user doesnt want the
> encoder
> 

Actually i checked and it's not the correct way to reconstruct a mb.
I must inv transf dct coeff, do overlap smoothing if enabled, add 
constant 128 and then clamp to 0-255.
So clamping should not happen here and i need a way to plug this vc1 
specific decoding procedure into mpegvideo.c.
But i have the strange feeling that a patch like above will get rejected 
by you :
inside s->encoding part of MPV_decode_mb  :
if(codec_id= wmv3 ) {vc1_decode_mb}


Am i right? If so do you have suggestions about the path i should take 
to support overlap filtering ?

BTW reading vc1 decoder, it seems that clamping is done prior to overlap 
which is not correct (overlap should work on 10 bits values).

Denis




More information about the ffmpeg-devel mailing list