Hi,

On Thu, Oct 6, 2011 at 3:10 PM, Kostya Shishkov
<[email protected]> wrote:
> On Thu, Oct 06, 2011 at 03:04:47PM +0000, Ronald S. Bultje wrote:
>> Hi,
>>
> [...]
>> >> @@ -518,20 +470,29 @@ static void decode_slice_plane(ProresContext *ctx, 
>> >> const uint8_t *buf,
>> >>      /* inverse quantization, inverse transform and output */
>> >>      block_ptr = ctx->blocks;
>> >>
>> >> -    for (blk_num = 0; blk_num < blocks_per_slice; blk_num++, block_ptr 
>> >> += 64) {
>> >> +    for (mb_num = 0; mb_num < mbs_per_slice; mb_num++, out_ptr += 
>> >> blocks_per_mb * 4) {
>> >>          /* TODO: the correct solution shoud be (block_ptr[i] * qmat[i]) 
>> >> >> 1
>> >>           * and the input of the inverse transform should be scaled by 2
>> >>           * in order to avoid rounding errors.
>> >>           * Due to the fact the existing Libav transforms are 
>> >> incompatible with
>> >>           * that input I temporally introduced the coarse solution 
>> >> below... */
>> >> -        for (i = 0; i < 64; i++)
>> >> -            block_ptr[i] = (block_ptr[i] * qmat[i]) >> 2;
>> >> -
>> >> -        ctx->dsp.idct(block_ptr);
>> >> +        for (j = 0; j < blocks_per_mb; j++)
>> >> +            for (i = 0; i < 64; i++)
>> >> +                block_ptr[j * 64 + i] = (block_ptr[j * 64 + i] * 
>> >> qmat[i]) >> 2;
>> >
>> > Why is it still here instead of inside DCT (like VP3 does IIRC)?
>>
>> What about attached? Patch is getting kind of big now (and I need to
>> redo the asm idct), but this should remove the TODO at the same time.
>
> Don't attach it twice then ;)
> LGTM though

I changed the >>2 to be done after the first 1d idct, let me just make
sure that's correct (the TODO said >>1 should be done before the idct
and another >>1 within. I don't want to have to fix the idct twice.

Ronald
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to