|
@@ -626,13 +626,13 @@ void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4], int b
|
|
|
}
|
|
|
|
|
|
|
|
|
-void
|
|
|
+static av_always_inline void
|
|
|
ff_yuv2packedX_altivec(SwsContext *c, const int16_t *lumFilter,
|
|
|
const int16_t **lumSrc, int lumFilterSize,
|
|
|
const int16_t *chrFilter, const int16_t **chrUSrc,
|
|
|
const int16_t **chrVSrc, int chrFilterSize,
|
|
|
const int16_t **alpSrc, uint8_t *dest,
|
|
|
- int dstW, int dstY)
|
|
|
+ int dstW, int dstY, enum PixelFormat target)
|
|
|
{
|
|
|
int i,j;
|
|
|
vector signed short X,X0,X1,Y0,U0,V0,Y1,U1,V1,U,V;
|
|
@@ -706,7 +706,7 @@ ff_yuv2packedX_altivec(SwsContext *c, const int16_t *lumFilter,
|
|
|
G = vec_packclp (G0,G1);
|
|
|
B = vec_packclp (B0,B1);
|
|
|
|
|
|
- switch(c->dstFormat) {
|
|
|
+ switch(target) {
|
|
|
case PIX_FMT_ABGR: out_abgr (R,G,B,out); break;
|
|
|
case PIX_FMT_BGRA: out_bgra (R,G,B,out); break;
|
|
|
case PIX_FMT_RGBA: out_rgba (R,G,B,out); break;
|
|
@@ -785,7 +785,7 @@ ff_yuv2packedX_altivec(SwsContext *c, const int16_t *lumFilter,
|
|
|
B = vec_packclp (B0,B1);
|
|
|
|
|
|
nout = (vector unsigned char *)scratch;
|
|
|
- switch(c->dstFormat) {
|
|
|
+ switch(target) {
|
|
|
case PIX_FMT_ABGR: out_abgr (R,G,B,nout); break;
|
|
|
case PIX_FMT_BGRA: out_bgra (R,G,B,nout); break;
|
|
|
case PIX_FMT_RGBA: out_rgba (R,G,B,nout); break;
|
|
@@ -803,3 +803,23 @@ ff_yuv2packedX_altivec(SwsContext *c, const int16_t *lumFilter,
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+#define YUV2PACKEDX_WRAPPER(suffix, pixfmt) \
|
|
|
+void ff_yuv2 ## suffix ## _X_altivec(SwsContext *c, const int16_t *lumFilter, \
|
|
|
+ const int16_t **lumSrc, int lumFilterSize, \
|
|
|
+ const int16_t *chrFilter, const int16_t **chrUSrc, \
|
|
|
+ const int16_t **chrVSrc, int chrFilterSize, \
|
|
|
+ const int16_t **alpSrc, uint8_t *dest, \
|
|
|
+ int dstW, int dstY) \
|
|
|
+{ \
|
|
|
+ ff_yuv2packedX_altivec(c, lumFilter, lumSrc, lumFilterSize, \
|
|
|
+ chrFilter, chrUSrc, chrVSrc, chrFilterSize, \
|
|
|
+ alpSrc, dest, dstW, dstY, pixfmt); \
|
|
|
+}
|
|
|
+
|
|
|
+YUV2PACKEDX_WRAPPER(abgr, PIX_FMT_ABGR);
|
|
|
+YUV2PACKEDX_WRAPPER(bgra, PIX_FMT_BGRA);
|
|
|
+YUV2PACKEDX_WRAPPER(argb, PIX_FMT_ARGB);
|
|
|
+YUV2PACKEDX_WRAPPER(rgba, PIX_FMT_RGBA);
|
|
|
+YUV2PACKEDX_WRAPPER(rgb24, PIX_FMT_RGB24);
|
|
|
+YUV2PACKEDX_WRAPPER(bgr24, PIX_FMT_BGR24);
|