c++源码翻译为delphi
void ConvertYVY22YUV12(unsigned char *src, unsigned char *dst, int width, int height, int stride)
{
unsigned char *in,*out_y,*out_y1,*out_u,*out_v;
int width2 = width*2;
in = src;
out_y = dst;
out_y1 = dst+width;
out_u = dst + width*height;
out_v = dst + width*height + (width*height)/4;
for (int i=0;i<height/2;i++) {
for (int j=0;j<width/2;j++) {
*out_y++ = *in;
*out_y1++ = *(in+width2);
in++;
*out_u++ = (*in + *(in+width2)) >> 1;
in++;
*out_y++ = *in;
*out_y1++ = *(in+width2);
in++;
*out_v++ = (*in + *(in+width2)) >> 1;
in++;
}
in += width2;
out_y1 += width;
out_y += width;
}
}
void ConvertUYVY2YUV12(unsigned char *src, unsigned char *dst, int width, int height, int stride)
{
unsigned char *in,*out_y,*out_y1,*out_u,*out_v;
int width2 = width*2;
in = src;
out_y = dst;
out_y1 = dst+width;
out_u = dst + width*height;
out_v = dst + width*height + (width*height)/4;
for (int i=0;i<height/2;i++) {
for (int j=0;j<width/2;j++) {
*out_u++ = (*in + *(in+width2)) >> 1;
in++;
*out_y++ = *in;
*out_y1++ = *(in+width2);
in++;
*out_v++ = (*in + *(in+width2)) >> 1;
in++;
*out_y++ = *in;
*out_y1++ = *(in+width2);
in++;
}
in += width2;
out_y1 += width;
out_y += width;
}
}