编辑:我碰到这个libyuv,做了NV21到I420转换,但我真的不知道如何称呼它。
// Convert NV21 to I420. Same as NV12 but u and v pointers swapped.
LIBYUV_API
int NV21ToI420(const uint8* src_y, int src_stride_y,
const uint8* src_vu, int src_stride_vu,
uint8* dst_y, int dst_stride_y,
uint8* dst_u, int dst_stride_u,
uint8* dst_v, int dst_stride_v,
int width, int height)
我传递[]从相机回调到JNI层得到的NV21字节并将其转换为unsigned char *,如下
int yuvBufLen = env->GetArrayLength(yuvNV21);
unsigned char* yuvNV21Buf = new unsigned char[yuvBufLen];
env->GetByteArrayRegion(yuvNV21, 0, yuvBufLen,reinterpret_cast<jbyte*>(yuvNV21Buf));
现在还不是很清楚,我如何获得调用函数libyuv需要NV21ToI420不同参数。 什么是以下每个参数的代表,以及如何从无符号字符获取这些* yuvNV21Buf我?
常量UINT8 * src_y,
INT src_stride_y,
常量UINT8 * src_vu,
INT src_stride_vu,
UINT8 * dst_y,
INT dst_stride_y,
UINT8 * dst_u,
INT dst_stride_u,
UINT8 * dst_v,
INT dst_stride_v
我已经检查这个iOS中获得YUV420这也解释了如何获得所有必需的参数来调用libyuv :: NV12ToI420。
有人可以解释我如何实现这一目标?
我从相机下面通过预览回调捕获帧字节[]
@Override
public void onPreviewFrame(byte[] frameData, Camera camera) {
该frameData我得到是NV21格式,我想NV21转换为I420。