From 6667f198c24c8cd20269c95e72210f73f93cf546 Mon Sep 17 00:00:00 2001 From: sdrik Date: Fri, 20 Mar 2009 14:14:28 +0000 Subject: Add YUVA420P -> RGBA/BGRA/ARGB/ABGR unscaled converters git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29010 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/yuv2rgb_template.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libswscale/yuv2rgb_template.c') 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 +} -- cgit v1.2.3