RGB位图转YUV420

这篇博客分享了一段代码,用于将RGB位图转换为YUV420格式,主要用于测试目的。虽然当前代码还有优化空间,但能够完成基本的位图转换功能。
摘要由CSDN通过智能技术生成

本代码只是为了生成YUV数据用于测试. 以下代码有多处可以再优化

uint8_t* yuvArray(uint8_t* rgb, int w, int h)
//+ (unsigned char*)yuvArray: (uint8_t*) rgb width:(int) w height:(int) h  //这是objective-c的写法
{
    int pixelCount = w*h;
    uint8_t* yuv888 = malloc(pixelCount*3);
    uint8_t R,G,B,Y,U,V;
    int n = 0;
    int yuv888bytes = pixelCount*3;
    for(int i=0; i<yuv888bytes; ){
        R = rgb[i++];
        G = rgb[i++];
        B = rgb[i++];
        
        Y =  (int) ((0.257 * R) + (0.504 * G) + (0.098 * B) + 16);
        U =  (int) (-(0.148 * R) - (0.291 * G) + (0.439 * B) + 128);
        V =  (int) ((0.439 * R) - (0.368 * G) - (0.071 * B) + 128);
        yuv888[n++] = Y;
        yuv888[n++] = U;
        yuv888[n++] = V;
    }
    uint8_t* yuv420 = malloc(pixelCount*3/2);
    uint8_t* y = yuv420;
    uint8_t* ptr;
    n = 0;
     /** 生成Y数据 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值