From 4eb93bed4e9b6daca7d3dd716a7517cd53dd5a95 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 25 Jan 2013 21:51:25 +0100 Subject: swscale: GBRP output support Signed-off-by: Michael Niedermayer Signed-off-by: Derek Buitenhuis --- libswscale/swscale.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'libswscale/swscale.c') diff --git a/libswscale/swscale.c b/libswscale/swscale.c index dac8b37468..4fb6d6c6e3 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -380,6 +380,7 @@ static int swScale(SwsContext *c, const uint8_t *src[], yuv2packed1_fn yuv2packed1 = c->yuv2packed1; yuv2packed2_fn yuv2packed2 = c->yuv2packed2; yuv2packedX_fn yuv2packedX = c->yuv2packedX; + yuv2anyX_fn yuv2anyX = c->yuv2anyX; const int chrSrcSliceY = srcSliceY >> c->chrSrcVSubSample; const int chrSrcSliceH = -((-srcSliceH) >> c->chrSrcVSubSample); int should_dither = is9_OR_10BPS(c->srcFormat) || @@ -554,7 +555,7 @@ static int swScale(SwsContext *c, const uint8_t *src[], /* hmm looks like we can't use MMX here without overwriting * this array's tail */ ff_sws_init_output_funcs(c, &yuv2plane1, &yuv2planeX, &yuv2nv12cX, - &yuv2packed1, &yuv2packed2, &yuv2packedX); + &yuv2packed1, &yuv2packed2, &yuv2packedX, &yuv2anyX); } { @@ -651,7 +652,7 @@ static int swScale(SwsContext *c, const uint8_t *src[], dstW, c->lumDither8, 0); } } - } else { + } else if (yuv2packedX) { if (c->yuv2packed1 && vLumFilterSize == 1 && vChrFilterSize <= 2) { // unscaled RGB int chrAlpha = vChrFilterSize == 1 ? 0 : vChrFilter[2 * dstY + 1]; @@ -676,6 +677,12 @@ static int swScale(SwsContext *c, const uint8_t *src[], chrUSrcPtr, chrVSrcPtr, vChrFilterSize, alpSrcPtr, dest[0], dstW, dstY); } + } else { + yuv2anyX(c, vLumFilter + dstY * vLumFilterSize, + lumSrcPtr, vLumFilterSize, + vChrFilter + dstY * vChrFilterSize, + chrUSrcPtr, chrVSrcPtr, vChrFilterSize, + alpSrcPtr, dest, dstW, dstY); } } } @@ -717,7 +724,7 @@ static av_cold void sws_init_swScale_c(SwsContext *c) ff_sws_init_output_funcs(c, &c->yuv2plane1, &c->yuv2planeX, &c->yuv2nv12cX, &c->yuv2packed1, - &c->yuv2packed2, &c->yuv2packedX); + &c->yuv2packed2, &c->yuv2packedX, &c->yuv2anyX); ff_sws_init_input_funcs(c); -- cgit v1.2.3