Почему Android ndk AImageReader_acquireNextImage не работает? - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь повернуть изображение, снятое камерой.Однако AImageReader_acquireNextImage возвращает AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE.Я проверил возвращаемое значение этой функции, и возвращаемое значение указывает, что в очереди нет свободного места в буфере.Я думаю, что это означает, что очередь для чтения изображений уже заполнена.Кто-нибудь знает, как очистить очередь или решить эту проблему?Исходный код ниже.заранее спасибо.

//open camera device
openCamera(0, &mainCameraDevice);

mainNativeWindow = ANativeWindow_fromSurface(env, surface);

AImageReader *yuvReader_;
media_status_t m_status = AImageReader_new(640, 380, AIMAGE_FORMAT_YUV_420_888,
                                         3, &yuvReader_);
if (m_status != AMEDIA_OK) {
    LOGE("Failed to create AImageReader");
}

m_status = AImageReader_getWindow(yuvReader_, &mainNativeWindow);
if (m_status != AMEDIA_OK) {
    LOGE("Could not get ANativeWindow");
}

ACaptureSessionOutput_create(mainNativeWindow, &mainSessionOutput);
ACaptureSessionOutputContainer_create(&mainCaptureSessionOutputContainer);

ACaptureSessionOutputContainer_add(mainCaptureSessionOutputContainer, mainSessionOutput);
ACameraOutputTarget_create(mainNativeWindow, &mainCameraOutputTarget);

ACameraDevice_createCaptureRequest(mainCameraDevice, TEMPLATE_PREVIEW, &mainCaptureRequest);

ACaptureRequest_addTarget(mainCaptureRequest, mainCameraOutputTarget);

ACameraDevice_createCaptureSession(mainCameraDevice, mainCaptureSessionOutputContainer, &captureSessionStateCallbacks, &mainCaptureSession);

ACameraCaptureSession_setRepeatingRequest(mainCaptureSession, NULL, 1, &mainCaptureRequest, NULL);

AImage *image;
m_status = AImageReader_acquireNextImage(yuvReader_, &image);
if (m_status == AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE ) {
    LOGI("invalid parameter");
}
if (m_status != AMEDIA_OK ) {
    LOGI("invalid parameter");
}

AImage_delete(image);
...