From dc448adc34972e1ba2a2adb60e029c68a9dffa4a Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Fri, 21 Feb 2025 15:13:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E5=92=8C?= =?UTF-8?q?=E9=94=80=E6=AF=81mImageReader=E5=89=8D=E9=87=8A=E6=94=BE?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/camera2/ndkcamera.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 7b556194..d57254db 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -32,6 +32,7 @@ #ifdef _DEBUG void Auto_AImage_delete(AImage* image) { + XYLOG(XYLOG_SEVERITY_DEBUG,"delete image"); AImage_delete(image); } #else @@ -1053,7 +1054,6 @@ void NdkCamera::close() //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str()); AImageReader_delete(mPreviewImageReader); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str()); - mPreviewImageReader = 0; } @@ -1071,9 +1071,17 @@ void NdkCamera::close() if (mImageReader != NULL) { + AImage* image = NULL; + int32_t status; + while ((status = AImageReader_acquireNextImage(mImageReader, &image)) == AMEDIA_OK) { + AImage_delete(image); + image = NULL; + } AImageReader_setImageListener(mImageReader, NULL); + XYLOG(XYLOG_SEVERITY_DEBUG, "clear mImageReader Listener"); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str()); AImageReader_delete(mImageReader); + XYLOG(XYLOG_SEVERITY_DEBUG, "delete mImageReader"); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str()); mImageReader = 0; } @@ -1325,6 +1333,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader) m_photoTaken = true; m_locker.lock(); + XYLOG(XYLOG_SEVERITY_DEBUG,"push image"); mCaptureFrames.push_back(std::shared_ptr(image, Auto_AImage_delete)); m_locker.unlock();