From 639ed1204cec08fe779d11728d1ae33c90c3151e Mon Sep 17 00:00:00 2001 From: Shuzhen Wang Date: Thu, 6 Dec 2018 14:42:52 -0800 Subject: [PATCH] Camera: VNDK: Fix deferred endConfigure due to missing sessionParam In case the app doesn't provide sessionParameters, the VNDK should still allow endConfigure() to be called to the camera service. Test: Run test app and observe camera streams properly Bug: 120505813 Change-Id: Ifa72dca61b8e25cd433d2c02c70b1c8e5e097228 --- camera/ndk/ndk_vendor/impl/ACameraDevice.cpp | 2 +- services/camera/libcameraservice/hidl/Convert.cpp | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp b/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp index b86f854e04..26e6b3c50f 100644 --- a/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp +++ b/camera/ndk/ndk_vendor/impl/ACameraDevice.cpp @@ -754,8 +754,8 @@ CameraDevice::configureStreamsLocked(const ACaptureSessionOutputContainer* outpu const camera_metadata_t *params_metadata = params.getAndLock(); utils::convertToHidl(params_metadata, &hidlParams); params.unlock(params_metadata); - remoteRet = mRemote->endConfigure(StreamConfigurationMode::NORMAL_MODE, hidlParams); } + remoteRet = mRemote->endConfigure(StreamConfigurationMode::NORMAL_MODE, hidlParams); if (!remoteRet.isOk()) { ALOGE("Transaction error: endConfigure failed %s", remoteRet.description().c_str()); } diff --git a/services/camera/libcameraservice/hidl/Convert.cpp b/services/camera/libcameraservice/hidl/Convert.cpp index 76ed6f6d2b..582ce347f9 100644 --- a/services/camera/libcameraservice/hidl/Convert.cpp +++ b/services/camera/libcameraservice/hidl/Convert.cpp @@ -101,12 +101,14 @@ hardware::camera2::params::OutputConfiguration convertFromHidl( bool convertFromHidl(const HCameraMetadata &src, CameraMetadata *dst) { const camera_metadata_t *buffer = reinterpret_cast(src.data()); size_t expectedSize = src.size(); - int res = validate_camera_metadata_structure(buffer, &expectedSize); - if (res == OK || res == CAMERA_METADATA_VALIDATION_SHIFTED) { - *dst = buffer; - } else { - ALOGE("%s: Malformed camera metadata received from HAL", __FUNCTION__); - return false; + if (buffer != nullptr) { + int res = validate_camera_metadata_structure(buffer, &expectedSize); + if (res == OK || res == CAMERA_METADATA_VALIDATION_SHIFTED) { + *dst = buffer; + } else { + ALOGE("%s: Malformed camera metadata received from HAL", __FUNCTION__); + return false; + } } return true; }