JNI逐帧处理Camera数据导致内存抖动

 

抖成这样了。

 

查了半天锁定到JNI层面对帧数据进行转码导致的。代码如下:

extern "C"
JNIEXPORT void JNICALL
Java_com_***_native_1I420ToN12(JNIEnv *env, jobject thiz,
                                                        jbyteArray src, jbyteArray dst,
                                                        jint width, jint height) {

    jbyte *_src = env->GetByteArrayElements(src, nullptr);
    jbyte *_dst = env->GetByteArrayElements(dst, nullptr);

    yuvI420ToN12(reinterpret_cast<unsigned char *>(_src),
                  reinterpret_cast<unsigned char *>(_dst), width, height);

    env->ReleaseByteArrayElements(src, _src, JNI_ABORT);
    env->ReleaseByteArrayElements(dst, _dst, 0);
}

应该怎么优化呢?

yuvI420ToN12这个方法贴出来,看起来应该是这一步存在问题