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
