Я должен вращать каждый буфер изображения yuv, который я получаю от камеры, на 90 градусов против часовой стрелки. Я нашел это post, где используется java. Этот код работает отлично. Но я попытался сделать собственный метод, потому что хотел использовать метод, который имеет ту же логику, но работает быстрее.Использование памяти NDK Android
JNIEXPORT jbyteArray JNICALL Java_com_ndk_example_utils_NativeUtils_rotateFrameBackward
(JNIEnv *env, jobject obj, jbyteArray arr, jint w, jint h){
jint arrSize = w*h*3/2;
jbyte *data,*yuv;
data = (*env)->GetByteArrayElements(env, arr, JNI_FALSE);
yuv = (*env)->GetByteArrayElements(env, arr, JNI_FALSE);
int x,y,i = 0;
for(x = 0; x < w; x++){
for(y = h-1;y >= 0;y--){
yuv[i] = data[y*w+x];
i++;
}
}
i = arrSize - 1;
for(x = w-1;x > 0;x=x-2)
{
for(y = 0;y < h/2;y++)
{
yuv[i] = data[(w*h)+(y*w)+x];
i--;
yuv[i] = data[(w*h)+(y*w)+(x-1)];
i--;
}
}
(*env)->ReleaseByteArrayElements(env, arr, yuv, JNI_ABORT);
yuv = 0;
data = 0;
return arr;
}
Когда я начал этот метод на моем Htc 816 (v5.1) он работает отлично, но когда я запустил приложение на Samsung S3 (v4.3) и Lenovo P-70 (v4.4.2), приложение аварийно завершает работу. И на вкладке Android monitor в Android Studio я увидел, что использование памяти всегда увеличивается, пока мое приложение не вылетает. В моем htc у меня нет проблем с этим. Есть идеи?