Mercurial > mplayer.hg
changeset 2701:9b47bc409083
yv12 <-> yuy2 in C
author | michael |
---|---|
date | Mon, 05 Nov 2001 00:45:55 +0000 |
parents | f6718ec5983c |
children | 440312d953a8 |
files | postproc/rgb2rgb.c postproc/rgb2rgb.h postproc/rgb2rgb_template.c |
diffstat | 3 files changed, 58 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/postproc/rgb2rgb.c Mon Nov 05 00:00:25 2001 +0000 +++ b/postproc/rgb2rgb.c Mon Nov 05 00:45:55 2001 +0000 @@ -259,3 +259,30 @@ for(i=0; i<src_size; i++) ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; } + +void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size) +{ + int i; + src_size>>=1; + for(i=0; i<src_size; i++) + { + dst[4*i+0] = ysrc[2*i+0]; + dst[4*i+1] = usrc[i]; + dst[4*i+2] = ysrc[2*i+1]; + dst[4*i+3] = vsrc[i]; + } + +} + +void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size) +{ + int i; + src_size>>=1; + for(i=0; i<src_size; i++) + { + ydst[2*i+0] = src[4*i+0]; + udst[i] = src[4*i+1]; + ydst[2*i+1] = src[4*i+2]; + vdst[i] = src[4*i+3]; + } +} \ No newline at end of file
--- a/postproc/rgb2rgb.h Mon Nov 05 00:00:25 2001 +0000 +++ b/postproc/rgb2rgb.h Mon Nov 05 00:45:55 2001 +0000 @@ -18,4 +18,8 @@ void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette); void palette8torgb24(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette); +void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size); +void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size); + + #endif
--- a/postproc/rgb2rgb_template.c Mon Nov 05 00:00:25 2001 +0000 +++ b/postproc/rgb2rgb_template.c Mon Nov 05 00:45:55 2001 +0000 @@ -259,3 +259,30 @@ for(i=0; i<src_size; i++) ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; } + +void yv12toyuy2(uint8_t *ysrc, uint8_t *usrc, uint8_t *vsrc, uint8_t *dst, int src_size) +{ + int i; + src_size>>=1; + for(i=0; i<src_size; i++) + { + dst[4*i+0] = ysrc[2*i+0]; + dst[4*i+1] = usrc[i]; + dst[4*i+2] = ysrc[2*i+1]; + dst[4*i+3] = vsrc[i]; + } + +} + +void yuy2toyv12(uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int src_size) +{ + int i; + src_size>>=1; + for(i=0; i<src_size; i++) + { + ydst[2*i+0] = src[4*i+0]; + udst[i] = src[4*i+1]; + ydst[2*i+1] = src[4*i+2]; + vdst[i] = src[4*i+3]; + } +} \ No newline at end of file