On 7/25/11 7:21 PM, Måns Rullgård wrote:
"Ronald S. Bultje"<rsbul...@gmail.com> writes:
Hi,
On Mon, Jul 25, 2011 at 9:58 AM, Ronald S. Bultje<rsbul...@gmail.com> wrote:
Hi,
2011/7/25 Måns Rullgård<m...@mansr.com>:
"Ronald S. Bultje"<rsbul...@gmail.com> writes:
On Mon, Jul 25, 2011 at 8:18 AM, Mans Rullgard<m...@mansr.com> wrote:
Signed-off-by: Mans Rullgard<m...@mansr.com>
---
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.
I give up.
Hopefully I'll give a try during the next weekend...
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel