diff options
author | sdrik <sdrik@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-03-20 14:14:28 +0000 |
---|---|---|
committer | sdrik <sdrik@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-03-20 14:14:28 +0000 |
commit | 6667f198c24c8cd20269c95e72210f73f93cf546 (patch) | |
tree | 7f353de7bc2646fa352aab950efddb4f9590c750 /libswscale/yuv2rgb_template.c | |
parent | 218c79a44da2aa3bc275f7e716c930975f420d7a (diff) | |
download | mpv-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.c | 24 |
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 +} |