diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index c8cf8381..2f57725d 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -54,6 +54,14 @@ public: } ~ByteArraysPointer() { +#ifdef _DEBUG + ALOGD("ByteArray Size=%u", (uint32_t)byteArrays.size()); + for (auto it = byteArrays.cbegin(); it != byteArrays.cend(); ++it) + { + ALOGD("ByteArray Free: Size=%u", (uint32_t)((*it).size())); + } + +#endif byteArrays.clear(); } std::vector > byteArrays; @@ -2984,7 +2992,7 @@ bool CPhoneDevice::ProcessRawCapture(bool result, int numberOfCaptures, const st #ifdef _DEBUG // cv::cvtColor(outputImg, outputImg, cv::COLOR_RGB2BGR); - cv::imwrite("/sdcard/com.xypower.mpapp/tmp/final.jpg", mat); + // cv::imwrite("/sdcard/com.xypower.mpapp/tmp/final.jpg", mat); #endif OnCaptureReady(true, result != JNI_FALSE, mat, (unsigned long)photoId); diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 4002494b..b2542b87 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -28,6 +28,16 @@ #include #include "DngCreator.h" + +#ifdef _DEBUG +void Auto_AImage_delete(AImage* image) +{ + AImage_delete(image); +} +#else +#define Auto_AImage_delete AImage_delete +#endif + static void onAvailabilityCallback(void* context, const char* cameraId) { ((NdkCamera*)context)->onAvailabilityCallback(cameraId); @@ -225,6 +235,8 @@ int NdkCamera::selfTest(const std::string& cameraId, int32_t& maxResolutionX, in } } + ACameraMetadata_free(camera_metadata); + return 0; } @@ -1335,7 +1347,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader) m_photoTaken = true; m_locker.lock(); - mCaptureFrames.push_back(std::shared_ptr(image, AImage_delete)); + mCaptureFrames.push_back(std::shared_ptr(image, Auto_AImage_delete)); m_locker.unlock(); ALOGD("Capture Image Received"); @@ -1792,6 +1804,10 @@ void NdkCamera::FireBurstCapture() captureFrames.clear(); onBurstCapture(mCharacteristics, captureResults, ldr, frames); + +#ifdef _DEBUG + ALOGD("Frames Size: %u", (uint32_t)frames.size()); +#endif } void NdkCamera::CopyPreviewRequest(ACaptureRequest* request, const ACameraMetadata* previewResult) diff --git a/app/src/main/cpp/hdrplus/include/hdrplus/finish.h b/app/src/main/cpp/hdrplus/include/hdrplus/finish.h index 7fc68ae1..e70ee277 100644 --- a/app/src/main/cpp/hdrplus/include/hdrplus/finish.h +++ b/app/src/main/cpp/hdrplus/include/hdrplus/finish.h @@ -33,10 +33,14 @@ class finish bayer_image* refBayer; std::string mergedImgPath; - finish() = default; + finish() + { + refBayer = NULL; + } // please use this initialization after merging part finish - finish(std::string burstPath, cv::Mat mergedBayer,int refIdx){ + finish(std::string burstPath, cv::Mat mergedBayer,int refIdx) { + refBayer = NULL; this->refIdx = refIdx; this->burstPath = burstPath; this->mergedBayer = mergedBayer; @@ -60,7 +64,14 @@ class finish - ~finish() = default; + ~finish() + { + if (refBayer != NULL) + { + delete refBayer; + refBayer = NULL; + } + } // finish pipeline func // void process(std::string burstPath, cv::Mat mergedBayer,int refIdx); diff --git a/app/src/main/cpp/hdrplus/src/align.cpp b/app/src/main/cpp/hdrplus/src/align.cpp index cc2d9219..3a9698d0 100644 --- a/app/src/main/cpp/hdrplus/src/align.cpp +++ b/app/src/main/cpp/hdrplus/src/align.cpp @@ -987,6 +987,8 @@ void align::process( const hdrplus::burst& burst_images, \ } // for alternative image + per_grayimg_pyramid.clear(); + } } // namespace hdrplus diff --git a/app/src/main/cpp/hdrplus/src/finish.cpp b/app/src/main/cpp/hdrplus/src/finish.cpp index 42f82fb2..2284856e 100644 --- a/app/src/main/cpp/hdrplus/src/finish.cpp +++ b/app/src/main/cpp/hdrplus/src/finish.cpp @@ -523,6 +523,7 @@ namespace hdrplus // } cv::Mat processMergedMat(cv::Mat mergedImg, int opencv_type){ cv::Mat m; +#if 0 uint16_t* ptr = (uint16_t*)mergedImg.data; for(int r = 0; r < mergedImg.rows; r++) { std::vector dvals; @@ -533,13 +534,14 @@ namespace hdrplus cv::transpose(mline, mline); m.push_back(mline); } +#endif int ch = CV_MAT_CN(opencv_type); + m = mergedImg.clone(); m = m.reshape(ch); m.convertTo(m, opencv_type); return m; - } void show20_20(cv::Mat m){ @@ -565,17 +567,17 @@ namespace hdrplus std::cout<<"finish pipeline start ..."<refIdx = burst_images.reference_image_idx; // this->burstPath = burstPath; // std::cout<<"processMerged:"<mergedBayer = loadFromCSV(DBG_OUTPUT_ROOT "merged.csv", CV_16UC1); #ifndef HDRPLUS_NO_DETAILED_OUTPUT + this->mergedBayer = loadFromCSV(DBG_OUTPUT_ROOT "merged.csv", CV_16UC1); // this->mergedBayer = processMergedMat(mergedB,CV_16UC1);//loadFromCSV("merged.csv", CV_16UC1); // std::cout<<"processMerged:"<mergedBayer); @@ -583,7 +585,7 @@ namespace hdrplus // this->mergedBayer = processMergedMat(burst_images.merged_bayer_image, CV_16UC1); #else // this->mergedBayer = loadFromCSV(DBG_OUTPUT_ROOT "merged.csv", CV_16UC1); - // this->mergedBayer = processMergedMat(burst_images.merged_bayer_image, CV_16UC1); + this->mergedBayer = processMergedMat(burst_images.merged_bayer_image, CV_16UC1); // std::cout<<"processMerged:"< channels(4); @@ -98,7 +100,7 @@ namespace hdrplus cv::Range horizontal = cv::Range(padding[2], reference_image.cols - padding[3]); cv::Range vertical = cv::Range(padding[0], reference_image.rows - padding[1]); burst_images.merged_bayer_image = merged(vertical, horizontal); - cv::imwrite("merged.jpg", burst_images.merged_bayer_image); + // cv::imwrite("merged.jpg", burst_images.merged_bayer_image); } std::vector merge::getReferenceTiles(cv::Mat reference_image) {