[libav-devel] [PATCH] fate: enable lavfi-pixmt tests on big endian systems
Ronald S. Bultje
rsbultje at gmail.com
Wed Jun 29 00:13:53 CEST 2011
Hi,
2011/6/28 Måns Rullgård <mans at mansr.com>:
> "Ronald S. Bultje" <rsbultje at gmail.com> writes:
>
>> Hi,
>>
>> 2011/6/28 Måns Rullgård <mans at mansr.com>:
>>> The pixfmts_scale test fails with Altivec for several reasons:
>>>
>>> - yuv2yuvX_altivec_real() crashes writing nv12/nv21 since it assumes
>>> there are either zero or two chroma planes. Adding a trivial check in
>>> that function produces wrong output.
>>
>> See x86/swscale_template.c, the assignment should only be if pixfmt !=
>> NV21/12. NV21/12 output writing is obviously different than "regular"
>> planar YUV, and thus the function does something else also.
>>
>>> - yuva420p output is wrong, unknown why.
>>
>> yuv2yuvX_altivec() doesn't handle alpha (at all). Should probably be
>> included in the if() as mentioned above also.
>
> Like this?
>
> diff --git a/libswscale/ppc/swscale_altivec.c b/libswscale/ppc/swscale_altivec.c
> index 14f35b6..5e3c42d 100644
> --- a/libswscale/ppc/swscale_altivec.c
> +++ b/libswscale/ppc/swscale_altivec.c
> @@ -407,7 +407,9 @@ void ff_sws_init_swScale_altivec(SwsContext *c)
> return;
>
> c->hScale = hScale_altivec_real;
> - if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat)) {
> + if (!is16BPS(dstFormat) && !is9_OR_10BPS(dstFormat) &&
> + dstFormat != PIX_FMT_NV12 && dstFormat != PIX_FMT_NV21 &&
> + dstFormat != PIX_FMT_YUVA420P) {
> c->yuv2yuvX = yuv2yuvX_altivec_real;
> }
>
Yep.
Ronald
More information about the libav-devel
mailing list