[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