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