|
|
@ -226,6 +226,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
|
|
|
|
|
|
|
|
|
|
|
|
NdkCamera::~NdkCamera()
|
|
|
|
NdkCamera::~NdkCamera()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "NdkCamera::~NdkCamera %s", mCameraId.c_str());
|
|
|
|
close();
|
|
|
|
close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1000,6 +1001,8 @@ void NdkCamera::close()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mPreviewResults.reset();
|
|
|
|
|
|
|
|
mCaptureResults.clear();
|
|
|
|
mCaptureFrames.clear();
|
|
|
|
mCaptureFrames.clear();
|
|
|
|
|
|
|
|
|
|
|
|
if ((ACameraManager *)camera_manager != NULL)
|
|
|
|
if ((ACameraManager *)camera_manager != NULL)
|
|
|
@ -1009,7 +1012,8 @@ void NdkCamera::close()
|
|
|
|
|
|
|
|
|
|
|
|
if (capture_session)
|
|
|
|
if (capture_session)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// res = ACameraCaptureSession_stopRepeating(capture_session);
|
|
|
|
res = ACameraCaptureSession_stopRepeating(capture_session);
|
|
|
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(512));
|
|
|
|
ACameraCaptureSession_close(capture_session);
|
|
|
|
ACameraCaptureSession_close(capture_session);
|
|
|
|
capture_session = 0;
|
|
|
|
capture_session = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1051,11 +1055,24 @@ void NdkCamera::close()
|
|
|
|
|
|
|
|
|
|
|
|
if (mPreviewImageReader != NULL)
|
|
|
|
if (mPreviewImageReader != NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
|
|
ALOGD("Will Free mPreviewImageReader");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
AImage* image = NULL;
|
|
|
|
|
|
|
|
media_status_t mstatus;
|
|
|
|
|
|
|
|
while ((mstatus = AImageReader_acquireNextImage(mPreviewImageReader, &image)) == AMEDIA_OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
AImage_delete(image);
|
|
|
|
|
|
|
|
image = NULL;
|
|
|
|
|
|
|
|
}
|
|
|
|
AImageReader_setImageListener(mPreviewImageReader, NULL);
|
|
|
|
AImageReader_setImageListener(mPreviewImageReader, NULL);
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
AImageReader_delete(mPreviewImageReader);
|
|
|
|
AImageReader_delete(mPreviewImageReader);
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
mPreviewImageReader = 0;
|
|
|
|
mPreviewImageReader = 0;
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
|
|
ALOGD("After Free mPreviewImageReader");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (mOutputTarget != NULL)
|
|
|
|
if (mOutputTarget != NULL)
|
|
|
@ -1072,9 +1089,13 @@ void NdkCamera::close()
|
|
|
|
|
|
|
|
|
|
|
|
if (mImageReader != NULL)
|
|
|
|
if (mImageReader != NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
|
|
ALOGD("Will Free mImageReader");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
AImage* image = NULL;
|
|
|
|
AImage* image = NULL;
|
|
|
|
int32_t status;
|
|
|
|
media_status_t mstatus;
|
|
|
|
while ((status = AImageReader_acquireNextImage(mImageReader, &image)) == AMEDIA_OK) {
|
|
|
|
while ((mstatus = AImageReader_acquireNextImage(mImageReader, &image)) == AMEDIA_OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
AImage_delete(image);
|
|
|
|
AImage_delete(image);
|
|
|
|
image = NULL;
|
|
|
|
image = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1085,6 +1106,9 @@ void NdkCamera::close()
|
|
|
|
|
|
|
|
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
//XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str());
|
|
|
|
mImageReader = 0;
|
|
|
|
mImageReader = 0;
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
|
|
ALOGD("After Free mImageReader");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (mOutputTarget2 != NULL)
|
|
|
|
if (mOutputTarget2 != NULL)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1318,6 +1342,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
if (captureCompleted && captureDispatchable)
|
|
|
|
if (captureCompleted && captureDispatchable)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO,"onOneCapture from onImageAvailable");
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO,"onOneCapture from onImageAvailable");
|
|
|
|
|
|
|
|
camera_status_t status = ACameraCaptureSession_stopRepeating(capture_session);
|
|
|
|
onOneCapture(mCharacteristics, result, mFinalLdr, ts - m_startTime, mOneFrame);
|
|
|
|
onOneCapture(mCharacteristics, result, mFinalLdr, ts - m_startTime, mOneFrame);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1798,6 +1823,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
if (captureCompleted && captureDispatchable)
|
|
|
|
if (captureCompleted && captureDispatchable)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO,"onOneCapture from onCaptureCompleted");
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO,"onOneCapture from onCaptureCompleted");
|
|
|
|
|
|
|
|
camera_status_t status = ACameraCaptureSession_stopRepeating(capture_session);
|
|
|
|
onOneCapture(mCharacteristics, captureResult, mFinalLdr, ts - m_startTime, mOneFrame);
|
|
|
|
onOneCapture(mCharacteristics, captureResult, mFinalLdr, ts - m_startTime, mOneFrame);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1824,6 +1850,8 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
|
|
|
|
|
|
|
void NdkCamera::FireBurstCapture()
|
|
|
|
void NdkCamera::FireBurstCapture()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
camera_status_t status = ACameraCaptureSession_stopRepeating(capture_session);
|
|
|
|
|
|
|
|
|
|
|
|
unsigned long long ts = GetMicroTimeStamp();
|
|
|
|
unsigned long long ts = GetMicroTimeStamp();
|
|
|
|
|
|
|
|
|
|
|
|
size_t expectedTimes = mCaptureRequests.size() - 1;
|
|
|
|
size_t expectedTimes = mCaptureRequests.size() - 1;
|
|
|
|