@ -38,6 +38,8 @@ ACameraMetadata::ACameraMetadata(camera_metadata_t* buffer, ACAMERA_METADATA_TYP
filterDurations ( ANDROID_DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS ) ;
filterDurations ( ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS ) ;
filterDurations ( ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS ) ;
filterDurations ( ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS ) ;
filterDurations ( ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS ) ;
}
// TODO: filter request/result keys
}
@ -186,6 +188,16 @@ ACameraMetadata::filterDurations(uint32_t tag) {
filteredDurations . push_back ( duration ) ;
}
break ;
case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS :
case ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STALL_DURATIONS :
if ( format = = HAL_PIXEL_FORMAT_BLOB ) {
format = AIMAGE_FORMAT_DEPTH_JPEG ;
filteredDurations . push_back ( format ) ;
filteredDurations . push_back ( width ) ;
filteredDurations . push_back ( height ) ;
filteredDurations . push_back ( duration ) ;
}
break ;
default :
// Should not reach here
ALOGE ( " %s: Unkown tag 0x%x " , __FUNCTION__ , tag ) ;
@ -284,6 +296,32 @@ ACameraMetadata::filterStreamConfigurations() {
filteredHeicStreamConfigs . push_back ( isInput ) ;
}
mData . update ( ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS , filteredHeicStreamConfigs ) ;
entry = mData . find ( ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS ) ;
Vector < int32_t > filteredDynamicDepthStreamConfigs ;
filteredDynamicDepthStreamConfigs . setCapacity ( entry . count ) ;
for ( size_t i = 0 ; i < entry . count ; i + = STREAM_CONFIGURATION_SIZE ) {
int32_t format = entry . data . i32 [ i + STREAM_FORMAT_OFFSET ] ;
int32_t width = entry . data . i32 [ i + STREAM_WIDTH_OFFSET ] ;
int32_t height = entry . data . i32 [ i + STREAM_HEIGHT_OFFSET ] ;
int32_t isInput = entry . data . i32 [ i + STREAM_IS_INPUT_OFFSET ] ;
if ( isInput = = ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT ) {
// Hide input streams
continue ;
}
// Translate HAL formats to NDK format
if ( format = = HAL_PIXEL_FORMAT_BLOB ) {
format = AIMAGE_FORMAT_DEPTH_JPEG ;
}
filteredDynamicDepthStreamConfigs . push_back ( format ) ;
filteredDynamicDepthStreamConfigs . push_back ( width ) ;
filteredDynamicDepthStreamConfigs . push_back ( height ) ;
filteredDynamicDepthStreamConfigs . push_back ( isInput ) ;
}
mData . update ( ACAMERA_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS ,
filteredDynamicDepthStreamConfigs ) ;
}
bool