Я пытаюсь повернуть изображение, снятое камерой.Однако 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);