[FFmpeg-cvslog] swscale: properly inline bits/endianness in yuv2yuvX16inC().

Ronald S. Bultje git at videolan.org
Sat May 14 02:29:50 CEST 2011


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Fri May 13 10:28:49 2011 -0400| [9f54e461fecec7a97ec1b97ae4468135ea770609] | committer: Ronald S. Bultje

swscale: properly inline bits/endianness in yuv2yuvX16inC().

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9f54e461fecec7a97ec1b97ae4468135ea770609
---

 libswscale/swscale.c |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 4394a7d..f5c4e88 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -271,6 +271,27 @@ static av_always_inline void yuv2yuvX16inC_template(const int16_t *lumFilter, co
     }
 }
 
+#define yuv2NBPS(bits, BE_LE, is_be) \
+static void yuv2yuvX ## bits ## BE_LE ## _c(const int16_t *lumFilter, \
+                              const int16_t **lumSrc, int lumFilterSize, \
+                              const int16_t *chrFilter, const int16_t **chrSrc, \
+                              int chrFilterSize, const int16_t **alpSrc, \
+                              uint16_t *dest, uint16_t *uDest, uint16_t *vDest, \
+                              uint16_t *aDest, int dstW, int chrDstW) \
+{ \
+    yuv2yuvX16inC_template(lumFilter, lumSrc, lumFilterSize, \
+                           chrFilter, chrSrc, chrFilterSize, \
+                           alpSrc, \
+                           dest, uDest, vDest, aDest, \
+                           dstW, chrDstW, is_be, bits); \
+}
+yuv2NBPS( 9, BE, 1);
+yuv2NBPS( 9, LE, 0);
+yuv2NBPS(10, BE, 1);
+yuv2NBPS(10, LE, 0);
+yuv2NBPS(16, BE, 1);
+yuv2NBPS(16, LE, 0);
+
 static inline void yuv2yuvX16inC(const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
                                  const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
                                  const int16_t **alpSrc, uint16_t *dest, uint16_t *uDest, uint16_t *vDest, uint16_t *aDest, int dstW, int chrDstW,
@@ -278,17 +299,17 @@ static inline void yuv2yuvX16inC(const int16_t *lumFilter, const int16_t **lumSr
 {
 #define conv16(bits) \
     if (isBE(dstFormat)) { \
-        yuv2yuvX16inC_template(lumFilter, lumSrc, lumFilterSize, \
+        yuv2yuvX ## bits ## BE_c(lumFilter, lumSrc, lumFilterSize, \
                                chrFilter, chrSrc, chrFilterSize, \
                                alpSrc, \
                                dest, uDest, vDest, aDest, \
-                               dstW, chrDstW, 1, bits); \
+                               dstW, chrDstW); \
     } else { \
-        yuv2yuvX16inC_template(lumFilter, lumSrc, lumFilterSize, \
+        yuv2yuvX ## bits ## LE_c(lumFilter, lumSrc, lumFilterSize, \
                                chrFilter, chrSrc, chrFilterSize, \
                                alpSrc, \
                                dest, uDest, vDest, aDest, \
-                               dstW, chrDstW, 0, bits); \
+                               dstW, chrDstW); \
     }
     if (is16BPS(dstFormat)) {
         conv16(16);



More information about the ffmpeg-cvslog mailing list