Originally committed as revision 2802 to svn://svn.mplayerhq.hu/mplayer/trunk/postproctags/v0.5
| @@ -813,3 +813,41 @@ asm( EMMS" \n\t" | |||||
| :::"memory"); | :::"memory"); | ||||
| #endif | #endif | ||||
| } | } | ||||
| /** | |||||
| * | |||||
| * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |||||
| * problem for anyone then tell me, and ill fix it) | |||||
| */ | |||||
| void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |||||
| unsigned int width, unsigned int height, | |||||
| unsigned int lumStride, unsigned int chromStride, unsigned int srcStride) | |||||
| { | |||||
| int y; | |||||
| const int chromWidth= width>>1; | |||||
| for(y=0; y<height; y+=2) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<chromWidth; i++) | |||||
| { | |||||
| udst[i] = src[4*i+0]; | |||||
| ydst[2*i+0] = src[4*i+1]; | |||||
| vdst[i] = src[4*i+2]; | |||||
| ydst[2*i+1] = src[4*i+3]; | |||||
| } | |||||
| ydst += lumStride; | |||||
| src += srcStride; | |||||
| for(i=0; i<chromWidth; i++) | |||||
| { | |||||
| ydst[2*i+0] = src[4*i+1]; | |||||
| ydst[2*i+1] = src[4*i+3]; | |||||
| } | |||||
| udst += chromStride; | |||||
| vdst += chromStride; | |||||
| ydst += lumStride; | |||||
| src += srcStride; | |||||
| } | |||||
| } | |||||
| @@ -813,3 +813,41 @@ asm( EMMS" \n\t" | |||||
| :::"memory"); | :::"memory"); | ||||
| #endif | #endif | ||||
| } | } | ||||
| /** | |||||
| * | |||||
| * height should be a multiple of 2 and width should be a multiple of 16 (if this is a | |||||
| * problem for anyone then tell me, and ill fix it) | |||||
| */ | |||||
| void uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, | |||||
| unsigned int width, unsigned int height, | |||||
| unsigned int lumStride, unsigned int chromStride, unsigned int srcStride) | |||||
| { | |||||
| int y; | |||||
| const int chromWidth= width>>1; | |||||
| for(y=0; y<height; y+=2) | |||||
| { | |||||
| int i; | |||||
| for(i=0; i<chromWidth; i++) | |||||
| { | |||||
| udst[i] = src[4*i+0]; | |||||
| ydst[2*i+0] = src[4*i+1]; | |||||
| vdst[i] = src[4*i+2]; | |||||
| ydst[2*i+1] = src[4*i+3]; | |||||
| } | |||||
| ydst += lumStride; | |||||
| src += srcStride; | |||||
| for(i=0; i<chromWidth; i++) | |||||
| { | |||||
| ydst[2*i+0] = src[4*i+1]; | |||||
| ydst[2*i+1] = src[4*i+3]; | |||||
| } | |||||
| udst += chromStride; | |||||
| vdst += chromStride; | |||||
| ydst += lumStride; | |||||
| src += srcStride; | |||||
| } | |||||
| } | |||||