Mercurial > libavcodec.hg
changeset 4200:58412faefb46 libavcodec
changed rgba32_to routines to support both alpha and non-alpha formats
author | alex |
---|---|
date | Tue, 14 Nov 2006 19:48:11 +0000 |
parents | 214d3d9b69dc |
children | c4f87cfd5b20 |
files | imgconvert_template.h |
diffstat | 1 files changed, 21 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/imgconvert_template.h Tue Nov 14 19:19:13 2006 +0000 +++ b/imgconvert_template.h Tue Nov 14 19:48:11 2006 +0000 @@ -410,7 +410,8 @@ } } -#if !defined(FMT_RGBA32) && defined(RGBA_OUT) +// RGB24 has optimised routines +#if !defined(FMT_RGBA32) && !defined(FMT_RGB24) /* alpha support */ static void glue(rgba32_to_, RGB_NAME)(AVPicture *dst, const AVPicture *src, @@ -419,7 +420,10 @@ const uint8_t *s; uint8_t *d; int src_wrap, dst_wrap, j, y; - unsigned int v, r, g, b, a; + unsigned int v, r, g, b; +#ifdef RGBA_OUT + unsigned int a; +#endif s = src->data[0]; src_wrap = src->linesize[0] - width * 4; @@ -430,11 +434,15 @@ for(y=0;y<height;y++) { for(j = 0;j < width; j++) { v = ((const uint32_t *)(s))[0]; - a = (v >> 24) & 0xff; r = (v >> 16) & 0xff; g = (v >> 8) & 0xff; b = v & 0xff; +#ifdef RGBA_OUT + a = (v >> 24) & 0xff; RGBA_OUT(d, r, g, b, a); +#else + RGB_OUT(d, r, g, b); +#endif s += 4; d += BPP; } @@ -449,7 +457,10 @@ const uint8_t *s; uint8_t *d; int src_wrap, dst_wrap, j, y; - unsigned int r, g, b, a; + unsigned int r, g, b; +#ifdef RGBA_IN + unsigned int a; +#endif s = src->data[0]; src_wrap = src->linesize[0] - width * BPP; @@ -459,8 +470,13 @@ for(y=0;y<height;y++) { for(j = 0;j < width; j++) { +#ifdef RGBA_IN RGBA_IN(r, g, b, a, s); ((uint32_t *)(d))[0] = (a << 24) | (r << 16) | (g << 8) | b; +#else + RGB_IN(r, g, b, s); + ((uint32_t *)(d))[0] = (0xff << 24) | (r << 16) | (g << 8) | b; +#endif d += 4; s += BPP; } @@ -469,7 +485,7 @@ } } -#endif /* !defined(FMT_RGBA32) && defined(RGBA_IN) */ +#endif /* !defined(FMT_RGBA32) */ #ifndef FMT_RGB24