summaryrefslogtreecommitdiffstats
path: root/libswscale/yuv2rgb_template.c
diff options
context:
space:
mode:
authorsdrik <sdrik@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-03-20 14:14:28 +0000
committersdrik <sdrik@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-03-20 14:14:28 +0000
commit6667f198c24c8cd20269c95e72210f73f93cf546 (patch)
tree7f353de7bc2646fa352aab950efddb4f9590c750 /libswscale/yuv2rgb_template.c
parent218c79a44da2aa3bc275f7e716c930975f420d7a (diff)
downloadmpv-6667f198c24c8cd20269c95e72210f73f93cf546.tar.bz2
mpv-6667f198c24c8cd20269c95e72210f73f93cf546.tar.xz
Add YUVA420P -> RGBA/BGRA/ARGB/ABGR unscaled converters
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29010 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libswscale/yuv2rgb_template.c')
-rw-r--r--libswscale/yuv2rgb_template.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libswscale/yuv2rgb_template.c b/libswscale/yuv2rgb_template.c
index dc0198f2a3..29d6cb7371 100644
--- a/libswscale/yuv2rgb_template.c
+++ b/libswscale/yuv2rgb_template.c
@@ -171,6 +171,14 @@
__asm__ volatile (EMMS); \
return srcSliceH; \
+#define YUV2RGB_OPERANDS_ALPHA \
+ : "+r" (index), "+r" (image) \
+ : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index), "r" (pa - 2*index) \
+ ); \
+ } \
+ __asm__ volatile (EMMS); \
+ return srcSliceH; \
+
static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, h_size;
@@ -456,3 +464,19 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr
YUV2RGB_ENDLOOP(4)
YUV2RGB_OPERANDS
}
+
+static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
+ int srcSliceH, uint8_t* dst[], int dstStride[]){
+ int y, h_size;
+
+ YUV2RGB_LOOP(4)
+
+ uint8_t *pa = src[3] + y*srcStride[3];
+ YUV2RGB_INIT
+ YUV2RGB
+ "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */
+ RGB_PLANAR2PACKED32
+
+ YUV2RGB_ENDLOOP(4)
+ YUV2RGB_OPERANDS_ALPHA
+}