Hi,

On Mon, Jul 25, 2011 at 9:58 AM, Ronald S. Bultje <[email protected]> wrote:
> Hi,
>
> 2011/7/25 Måns Rullgård <[email protected]>:
>> "Ronald S. Bultje" <[email protected]> writes:
>>> On Mon, Jul 25, 2011 at 8:18 AM, Mans Rullgard <[email protected]> wrote:
>>>> Signed-off-by: Mans Rullgard <[email protected]>
>>>> ---
>>>>  libswscale/ppc/swscale_altivec.c |    3 ++-
>>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/libswscale/ppc/swscale_altivec.c 
>>>> b/libswscale/ppc/swscale_altivec.c
>>>> index 369e93b..501a4f7 100644
>>>> --- a/libswscale/ppc/swscale_altivec.c
>>>> +++ b/libswscale/ppc/swscale_altivec.c
>>>> @@ -409,7 +409,8 @@ void ff_sws_init_swScale_altivec(SwsContext *c)
>>>>     if (c->scalingBpp == 8) {
>>>>         c->hScale       = hScale_altivec_real;
>>>>     }
>>>> -    if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
>>>> +    if (!is16BPS(c->srcFormat) && !is9_OR_10BPS(c->srcFormat) &&
>>>> +        !is16BPS(dstFormat)    && !is9_OR_10BPS(dstFormat) &&
>>>
>>> Why?
>>>
>>> yuv2yuvX is output vertical scaling, if input is >8bit, 19to15Fw
>>> scales it back to a range that yuv2yuvX understands. (Jason thinks
>>> this is non-optimal, so I'll look into changing this, but currently, I
>>> don't think this patch is necessary.)
>>
>> The 10-bit dnxhd tests fail without it.  How should that be fixed instead?
>
> I think it's because yuv2yuvX doesn't add dither. If you look at the C
> code, you'll see it adds dither to the signal, the altivec function
> should do that also.

So more specifically:

        DECLARE_ALIGNED(16, int, val)[dstW];

        for (i = 0; i < (dstW -7); i+=4) {
            vec_st(vini, i << 2, val);
        }
        for (; i < dstW; i++) {
            val[i] = (1 << 18);
        }

That code should not use 1 << 18, but something like c->lumDither8 and
c->chrDither8 further down for the chroma. It can use c->dither32 as a
temporary buffer if that helps. The C code should make most of this
obvious.

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

Reply via email to