YUV图片旋转

1、从H264视频流中解析出来的图片格式是YUV

  YUV旋转可以选择手工旋转,也可以利用libYUV,libYUV开启NEON指令之后可以加快处理速度

  在iOS系统上,利用Accelcerate库进行加速,其中旋转的方法是libYUV旋转的20倍

  

    //测试YUV to RGBA 旋转然后 再到YUV 性能
    
    int width  = inFrame->width;
    int height = inFrame->height;
    int size   = width*height*4;
    uint8 *pRGBA = (uint8 *)calloc(size*3, sizeof(uint8));
    uint8 *pDstRGBA = (uint8 *)calloc(size*3, sizeof(uint8));
    
    start = [NSDate date];
    
    libyuv::I420ToARGB(inFrame->data[0],
                       inFrame->linesize[0],
                       inFrame->data[1],
                       inFrame->linesize[1],
                       inFrame->data[2],
                       inFrame->linesize[2],
                       pRGBA,
                       width*4,
                       width,
                       height);
    
    Pixel_8888 bgColor = {0,0,0,0};
    vImageRotate_ARGB8888((const vImage_Buffer *)pRGBA,
                          (const vImage_Buffer *)pDstRGBA,
                          NULL,
                          angle,
                          bgColor,
                          kvImageBackgroundColorFill);
    
    libyuv::ARGBToI420(pDstRGBA,
                       height*4,
                       _rotFrame->data[0],
                       _rotFrame->linesize[0],
                       _rotFrame->data[1],
                       _rotFrame->linesize[1],
                       _rotFrame->data[2],
                       _rotFrame->linesize[2],
                       width,
                       height);
    
    LOGE("YUV Rotate -[vImageRotate_ARGB8888] cost : %f", [[NSDate date] timeIntervalSinceDate:start]);

    free(pRGBA);
    free(pDstRGBA);

  

转载于:https://www.cnblogs.com/doudouyoutang/p/6605967.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值