diff --git a/camera/ndk/impl/ACameraMetadata.cpp b/camera/ndk/impl/ACameraMetadata.cpp index de40990b93..c126cf8d40 100644 --- a/camera/ndk/impl/ACameraMetadata.cpp +++ b/camera/ndk/impl/ACameraMetadata.cpp @@ -203,7 +203,7 @@ ACameraMetadata::filterStreamConfigurations() { const int STREAM_HEIGHT_OFFSET = 2; const int STREAM_IS_INPUT_OFFSET = 3; camera_metadata_entry entry = mData.find(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS); - if (entry.count == 0 || entry.count % 4 || entry.type != TYPE_INT32) { + if (entry.count > 0 && (entry.count % 4 || entry.type != TYPE_INT32)) { ALOGE("%s: malformed available stream configuration key! count %zu, type %d", __FUNCTION__, entry.count, entry.type); return; @@ -231,9 +231,17 @@ ACameraMetadata::filterStreamConfigurations() { filteredStreamConfigs.push_back(isInput); } - mData.update(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, filteredStreamConfigs); + if (filteredStreamConfigs.size() > 0) { + mData.update(ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, filteredStreamConfigs); + } entry = mData.find(ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS); + if (entry.count > 0 && (entry.count % 4 || entry.type != TYPE_INT32)) { + ALOGE("%s: malformed available depth stream configuration key! count %zu, type %d", + __FUNCTION__, entry.count, entry.type); + return; + } + Vector filteredDepthStreamConfigs; filteredDepthStreamConfigs.setCapacity(entry.count); @@ -258,7 +266,11 @@ ACameraMetadata::filterStreamConfigurations() { filteredDepthStreamConfigs.push_back(height); filteredDepthStreamConfigs.push_back(isInput); } - mData.update(ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS, filteredDepthStreamConfigs); + + if (filteredDepthStreamConfigs.size() > 0) { + mData.update(ANDROID_DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS, + filteredDepthStreamConfigs); + } entry = mData.find(ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS); Vector filteredHeicStreamConfigs;