swscale: remove duplicate code in ppc/ subdirectory.
[ffmpeg.git] / libswscale / ppc / swscale_template.c
1 /*
2  * Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at>
3  *
4  * This file is part of Libav.
5  *
6  * Libav is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * Libav is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with Libav; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20
21
22 #if COMPILE_TEMPLATE_ALTIVEC
23 #include "swscale_altivec_template.c"
24 #endif
25
26 #if COMPILE_TEMPLATE_ALTIVEC
27 static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
28                                     const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, const int16_t **alpSrc,
29                                     uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
30 {
31     yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize,
32                           chrFilter, chrSrc, chrFilterSize,
33                           dest, uDest, vDest, dstW, chrDstW);
34 }
35
36 /**
37  * vertical scale YV12 to RGB
38  */
39 static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
40                                        const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
41                                        const int16_t **alpSrc, uint8_t *dest, long dstW, long dstY)
42 {
43     /* The following list of supported dstFormat values should
44        match what's found in the body of ff_yuv2packedX_altivec() */
45     if (!(c->flags & SWS_BITEXACT) && !c->alpPixBuf &&
46          (c->dstFormat==PIX_FMT_ABGR  || c->dstFormat==PIX_FMT_BGRA  ||
47           c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 ||
48           c->dstFormat==PIX_FMT_RGBA  || c->dstFormat==PIX_FMT_ARGB))
49             ff_yuv2packedX_altivec(c, lumFilter, lumSrc, lumFilterSize,
50                                    chrFilter, chrSrc, chrFilterSize,
51                                    dest, dstW, dstY);
52     else
53         yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
54                        chrFilter, chrSrc, chrFilterSize,
55                        alpSrc, dest, dstW, dstY);
56 }
57 #endif
58
59 static void RENAME(sws_init_swScale)(SwsContext *c)
60 {
61     enum PixelFormat srcFormat = c->srcFormat;
62
63     c->yuv2yuvX     = RENAME(yuv2yuvX    );
64     c->yuv2packedX  = RENAME(yuv2packedX );
65 }