libyuv源码:https://github.com/lemenkov/libyuv

https://github.com/lemenkov/libyuv.git

使用cmak直接构建vs2013或者其他项目然后编译;

再使用libyuv进行格式转换的时候要清楚明白libyuv接口每个参数的意义!

比如:

int ConvertToI420(const uint8_t* sample,
                  size_t sample_size,
                  uint8_t* dst_y,
                  int dst_stride_y,
                  uint8_t* dst_u,
                  int dst_stride_u,
                  uint8_t* dst_v,
                  int dst_stride_v,
                  int crop_x,
                  int crop_y,
                  int src_width,
                  int src_height,
                  int crop_width,
                  int crop_height,
                  enum RotationMode rotation,
                  uint32_t fourcc);

或者:

int I420ToRGB24(const uint8_t* src_y,
                int src_stride_y,
                const uint8_t* src_u,
                int src_stride_u,
                const uint8_t* src_v,
                int src_stride_v,
                uint8_t* dst_rgb24,
                int dst_stride_rgb24,
                int width,
                int height);
dst_stride_rgb24 这个参数的意思是rgb数据的"步长" 而不是 rgb数据的大小!
src_stride_y 这个是yuv数据中y的“步长” 实际参数就是视频数据的宽度!
dst_stride_u 和
dst_stride_v 实际的参数是 视频数据的 宽度/2 
 
 
posted on 2020-03-06 15:28  瓦楞球  阅读(1731)  评论(0编辑  收藏  举报