diff --git a/app/src/main/cpp/android_main.cpp b/app/src/main/cpp/android_main.cpp index 408db0f2..e3fabcd6 100644 --- a/app/src/main/cpp/android_main.cpp +++ b/app/src/main/cpp/android_main.cpp @@ -29,6 +29,7 @@ #include "camera_engine.h" #include "camera_manager.h" +#include "logging_macros.h" /** * Application object: @@ -130,7 +131,14 @@ Java_com_shajikhan_ladspa_amprack_Camera_onPreviewSurfaceCreated( "NativeObject should not be null Pointer"); CameraAppEngine *pApp = reinterpret_cast(ndkCameraObj); // pApp->CreateCameraSession(nullptr); - pApp->CreateCameraSession(surface); + HERE + LOGD( "Creating camera session ...\n"); + if (pApp->imageReader->GetNativeWindow() == NULL) { + LOGE("uhoh, image reader native window is null!"); + } else { + LOGD("image reader native window [ok]!"); + } + pApp->CreateCameraSession(surface, pApp->imageReader->GetNativeWindow()); pApp->StartPreview(true); } diff --git a/app/src/main/cpp/camera_engine.cpp b/app/src/main/cpp/camera_engine.cpp index 57700ca3..a25a09d5 100644 --- a/app/src/main/cpp/camera_engine.cpp +++ b/app/src/main/cpp/camera_engine.cpp @@ -64,12 +64,12 @@ CameraAppEngine::~CameraAppEngine() { * Create a capture session with given Java Surface Object * @param surface a {@link Surface} object. */ -void CameraAppEngine::CreateCameraSession(jobject surface) { +void CameraAppEngine::CreateCameraSession(jobject surface, ANativeWindow * window) { if (surface == nullptr) { camera_->CreateSessionVideoCapture(imageReader->GetNativeWindow ()); } else { surface_ = env_->NewGlobalRef(surface); - camera_->CreateSession(ANativeWindow_fromSurface(env_, surface)); + camera_->CreateSession(ANativeWindow_fromSurface(env_, surface), nullptr, window, false, 0); } } diff --git a/app/src/main/cpp/camera_engine.h b/app/src/main/cpp/camera_engine.h index 11bb1dc4..4b70f55d 100644 --- a/app/src/main/cpp/camera_engine.h +++ b/app/src/main/cpp/camera_engine.h @@ -43,7 +43,7 @@ class CameraAppEngine { ~CameraAppEngine(); // Manage NDKCamera Object - void CreateCameraSession(jobject surface); + void CreateCameraSession(jobject surface, ANativeWindow * window); void StartPreview(bool start); const ImageFormat& GetCompatibleCameraRes() const; int32_t GetCameraSensorOrientation(int32_t facing); diff --git a/app/src/main/cpp/camera_manager.cpp b/app/src/main/cpp/camera_manager.cpp index 287cd0f8..d527ef5d 100644 --- a/app/src/main/cpp/camera_manager.cpp +++ b/app/src/main/cpp/camera_manager.cpp @@ -246,7 +246,7 @@ void NDKCamera::CreateSessionVideoCapture(ANativeWindow * window) { void NDKCamera::CreateSession(ANativeWindow* previewWindow, - ANativeWindow* jpgWindow, bool manualPreview, + ANativeWindow* jpgWindow, ANativeWindow * videoCaptureWindow, bool manualPreview, int32_t imageRotation) { IN // Create output from this app's ANativeWindow, and add into output container @@ -255,7 +255,10 @@ void NDKCamera::CreateSession(ANativeWindow* previewWindow, requests_[JPG_CAPTURE_REQUEST_IDX].outputNativeWindow_ = jpgWindow; requests_[JPG_CAPTURE_REQUEST_IDX].template_ = TEMPLATE_STILL_CAPTURE; - requests_[VIDEO_CAPTURE_REQUEST_IDX].outputNativeWindow_ = videoRecordWindow; + if (videoCaptureWindow == nullptr) { + HERE LOGF("video capture window is null!"); + } + requests_[VIDEO_CAPTURE_REQUEST_IDX].outputNativeWindow_ = videoCaptureWindow; requests_[VIDEO_CAPTURE_REQUEST_IDX].template_ = TEMPLATE_RECORD ; CALL_CONTAINER(create(&outputContainer_)); @@ -313,7 +316,7 @@ void NDKCamera::CreateSession(ANativeWindow* previewWindow, } void NDKCamera::CreateSession(ANativeWindow* previewWindow) { - CreateSession(previewWindow, nullptr, false, 0); + CreateSession(previewWindow, nullptr, nullptr, false, 0); } NDKCamera::~NDKCamera() { diff --git a/app/src/main/cpp/camera_manager.h b/app/src/main/cpp/camera_manager.h index 3c845e55..8eb83414 100644 --- a/app/src/main/cpp/camera_manager.h +++ b/app/src/main/cpp/camera_manager.h @@ -115,7 +115,7 @@ class NDKCamera { bool MatchCaptureSizeRequest(int32_t requestWidth, int32_t requestHeight, ImageFormat* view, ImageFormat* capture); void CreateSession(ANativeWindow* previewWindow, ANativeWindow* jpgWindow, - bool manaulPreview, int32_t imageRotation); + ANativeWindow * videoCaptureWindow, bool manaulPreview, int32_t imageRotation); void CreateSession(ANativeWindow* previewWindow); bool GetSensorOrientation(int32_t* facing, int32_t* angle); diff --git a/app/src/main/cpp/image_reader.cpp b/app/src/main/cpp/image_reader.cpp index 440b4708..f6c1b5f2 100644 --- a/app/src/main/cpp/image_reader.cpp +++ b/app/src/main/cpp/image_reader.cpp @@ -98,6 +98,8 @@ void ImageReader::ImageCallback(AImageReader *reader) { std::thread writeFileHandler(&ImageReader::WriteFile, this, image); writeFileHandler.detach(); } + + HERE } ANativeWindow *ImageReader::GetNativeWindow(void) {