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
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel