Mercurial > mplayer.hg
changeset 6484:c5cf988c6d6f
pre-yvu9toyv12 converter, only grayscale Y-plane coping :)
author | alex |
---|---|
date | Fri, 21 Jun 2002 17:37:00 +0000 |
parents | 2dd9691fe6b8 |
children | 52563321dc78 |
files | postproc/rgb2rgb.c postproc/rgb2rgb_template.c |
diffstat | 2 files changed, 58 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/postproc/rgb2rgb.c Fri Jun 21 17:31:02 2002 +0000 +++ b/postproc/rgb2rgb.c Fri Jun 21 17:37:00 2002 +0000 @@ -214,6 +214,23 @@ } } +void bgr24torgb24(const uint8_t *src, uint8_t *dst, unsigned src_size) +{ +#ifdef CAN_COMPILE_X86_ASM + // ordered per speed fasterst first + if(gCpuCaps.hasMMX2) + bgr24torgb24_MMX2(src, dst, src_size); + else if(gCpuCaps.has3DNow) + bgr24torgb24_3DNow(src, dst, src_size); + else if(gCpuCaps.hasMMX) + bgr24torgb24_MMX(src, dst, src_size); + else + bgr24torgb24_C(src, dst, src_size); +#else + bgr24torgb24_C(src, dst, src_size); +#endif +} + void rgb32to16(const uint8_t *src, uint8_t *dst, unsigned src_size) { #ifdef CAN_COMPILE_X86_ASM @@ -432,6 +449,26 @@ #endif } +void yvu9toyv12(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, + uint8_t *ydst, uint8_t *udst, uint8_t *vdst, + unsigned int width, unsigned int height, + unsigned int lumStride, unsigned int chromStride) +{ +#ifdef CAN_COMPILE_X86_ASM + // ordered per speed fasterst first + if(gCpuCaps.hasMMX2) + yvu9toyv12_MMX2(ysrc, usrc, vsrc, ydst, udst, vdst, width, height, lumStride, chromStride); + else if(gCpuCaps.has3DNow) + yvu9toyv12_3DNow(ysrc, usrc, vsrc, ydst, udst, vdst, width, height, lumStride, chromStride); + else if(gCpuCaps.hasMMX) + yvu9toyv12_MMX(ysrc, usrc, vsrc, ydst, udst, vdst, width, height, lumStride, chromStride); + else + yvu9toyv12_C(ysrc, usrc, vsrc, ydst, udst, vdst, width, height, lumStride, chromStride); +#else + yvu9toyv12_C(ysrc, usrc, vsrc, ydst, udst, vdst, width, height, lumStride, chromStride); +#endif +} + /** * * height should be a multiple of 2 and width should be a multiple of 2 (if this is a
--- a/postproc/rgb2rgb_template.c Fri Jun 21 17:31:02 2002 +0000 +++ b/postproc/rgb2rgb_template.c Fri Jun 21 17:37:00 2002 +0000 @@ -244,6 +244,17 @@ #endif } +static inline void RENAME(bgr24torgb24)(const uint8_t *src, uint8_t *dst, unsigned src_size) +{ + unsigned j,i,num_pixels=src_size/3; + for(i=0,j=0; j<num_pixels; i+=3,j+=3) + { + dst[j+0] = src[i+2]; + dst[j+1] = src[i+1]; + dst[j+2] = src[i+0]; + } +} + static inline void RENAME(rgb32to16)(const uint8_t *src, uint8_t *dst, unsigned src_size) { #ifdef HAVE_MMX @@ -853,6 +864,16 @@ #endif } +static inline void RENAME(yvu9toyv12)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, + uint8_t *ydst, uint8_t *udst, uint8_t *vdst, + unsigned int width, unsigned int height, unsigned int lumStride, unsigned int chromStride) +{ + /* Y Plane */ + memcpy(ydst, ysrc, width*height); + + /* XXX: implement upscaling for U,V */ +} + /** * * height should be a multiple of 2 and width should be a multiple of 16 (if this is a