1. Convert YUV420p to YUV422sp
2. Convert YUV422sp to YUV420sp
3. Convert YUV420sp to YUV420p
4. Convert YUV422sp to YUV420p
/* Convert YUV420p to YUV422sp */
void convert_yuv420p_to_yuv422sp(char *inbuf, char *outbuf, int width, int height){long int i, k, j;
long YSize = width * height;
for (i = 0, j = 1; i < height; i += 2, j += 2)
{
long int line1 = i * width;
long int line2 = j * width;
long int UOffset1 = YSize + line1 / 4;
long int VOffset1 = YSize * 5 / 4 + line1 / 4;
long int m = line1 * 2;
long int n = line2 * 2;
for(k = 0; k < width / 4; k++){
unsigned char Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8;
unsigned char U1, U2, V1, V2;
U1 = inbuf[UOffset1++];U2 = inbuf[UOffset1++];
V1 = inbuf[VOffset1++];V2 = inbuf[VOffset1++];
Y1 = inbuf[line1++];Y2 = inbuf[line1++];
Y3 = inbuf[line1++];Y4 = inbuf[line1++];
Y5 = inbuf[line2++];Y6 = inbuf[line2++];
Y7 = inbuf[line2++];Y8 = inbuf[line2++];
outbuf[m++] = Y1;outbuf[m++] = U1;

本文提供了C语言实现的YUV420p到YUV422sp,YUV422sp到YUV420sp,以及YUV422sp到YUV420p的转换函数。这些函数详细处理了Y、U、V分量的读取和写入,以完成不同格式间的转换。
最低0.47元/天 解锁文章
2362





