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