将ffmpeg解码视频出来的NV12格式的视频帧进行裁剪,
亲测可用。
/*
函数功能:
通过操作像素对NV12格式的一帧图片进行剪切
*/
int rkNV12_cut_nv12(unsigned char * srcImage, int srcW, int srcH,
unsigned char *destImage, int dstw, int dsth){
int dst_size = dstw * dsth; // 新分辨率像素总数
int src_size = srcW * srcH; // 旧分辨率像素总数
int y_dst_size = dst_size; // Y 分量总数 = 总数
int i = 0; //表示新分辨率 像素 个数
int j = 0; //表示旧分辨率 像素 个数
int line_n = 0; // 表示此时的行数
int exce_W = srcW - dstw; // 图片对于的像素宽度
//剪切Y分量
line_n = dsth ;
for(i =0; i < line_n; i++ ){
memcpy(&(destImage[i*dstw]), (srcImage + i*srcW ),dstw);
}
//剪切UV分量
for(i =0; i < line_n/2; i++ ){
memcpy(&(destImage[i*dstw + dst_size]), (srcImage + i*srcW + src_size),dstw);
}
return 0;
}