分享一个自己写的I420转NV12的函数
yuv420图片格式主要有I420、YV12、NV12、NV21这几种,
通常NV12、NV21常常使用在手机端的编码,属于YUV420SP;
YUV420SP表示UV交错排列成为一个平面,和Y一共为两平面
YUV420P是UV顺序排列,一共三个平面
void yuvI420ToNV12(uint8_t *I420, uint8_t *NV12, int width, int height)
{
int ySize = width * height;
int yuvSize = width * height * 3 / 2;
int uIdx = ySize;
int vIdx = ySize * 5 / 4;
memcpy(NV12, I420, ySize);
for (int i = ySize; i < yuvSize; i += 2) {
*(NV12 + i) = *(I420 + uIdx++);
*(NV12 + i + 1) = *(I420 + vIdx++);
}
}