YUV格式、RGB格式、JPEG格式、MJPEG格式之间的转换(C程序)之一

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

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;
                       
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值