zoukankan      html  css  js  c++  java
  • 第43月第28天 libyuv裁剪

    1.

    NV21转化为I420

      对于如何获取Camera返回的YUV数据,不是本篇文章的重点,不了解的请自行百度谷歌。因为Camera返回的YUV数据只能是NV21和YV12两种,而libyuv的缩放旋转镜像的操作需要的是I420的数据格式,那么第一步就是将NV21(例子中Camera返回数据格式设置的是NV21)转化为I420了。方法如下:

    #include "libyuv.h"
    void nv21ToI420(jbyte *src_nv21_data, jint width, jint height, jbyte *src_i420_data) {
        jint src_y_size = width * height;
        jint src_u_size = (width >> 1) * (height >> 1);
    
        jbyte *src_nv21_y_data = src_nv21_data;
        jbyte *src_nv21_vu_data = src_nv21_data + src_y_size;
    
        jbyte *src_i420_y_data = src_i420_data;
        jbyte *src_i420_u_data = src_i420_data + src_y_size;
        jbyte *src_i420_v_data = src_i420_data + src_y_size + src_u_size;
    
    
        libyuv::NV21ToI420((const uint8 *) src_nv21_y_data, width,
                           (const uint8 *) src_nv21_vu_data, width,
                           (uint8 *) src_i420_y_data, width,
                           (uint8 *) src_i420_u_data, width >> 1,
                           (uint8 *) src_i420_v_data, width >> 1,
                           width, height);
    }

    https://www.jianshu.com/p/bd0feaf4c0f9

    2.

    NTESYUVConverter

    + (NTESI420Frame *)pixelBufferToI420:(CVImageBufferRef)pixelBuffer

                               withCrop:(float)cropRatio

                               targetSize:(CGSize)size

                         andOrientation:(NTESVideoPackOrientation)orientation

     




  • 相关阅读:
    memcache详解
    redis详解
    laravel5表单验证
    MySQL添加字段和修改字段
    delete和truncate区别
    IOC 和DI(转载)
    JPA和SpringData知识梳理
    spring和springmvc配置分离
    springboot 整合 mybatis
    mongodb安装及配置
  • 原文地址:https://www.cnblogs.com/javastart/p/12795935.html
Copyright © 2011-2022 走看看