diff --git a/include/ipu75xa/ia_imaging/IntelCCATypes.h b/include/ipu75xa/ia_imaging/IntelCCATypes.h index c48cd06..e3b0945 100644 --- a/include/ipu75xa/ia_imaging/IntelCCATypes.h +++ b/include/ipu75xa/ia_imaging/IntelCCATypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2025 Intel Corporation. + * Copyright (C) 2019-2026 Intel Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -206,8 +206,9 @@ typedef struct { ia_coordinate exposure_coordinate; /*!< Coordinate for a point in which the exposure should be prioritized. */ float32_t ev_shift; /*!< Exposure Value shift [-4,4]. */ uint32_t manual_exposure_time_us[MAX_NUM_EXPOSURE]; /*!< Manual exposure time in microseconds. */ - float32_t manual_analog_gain[MAX_NUM_EXPOSURE]; /*!< Manual analog gain. */ - uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_analog_gain. */ + float32_t manual_total_gain[MAX_NUM_EXPOSURE]; /*!< Manual total gain (legacy mode). */ + ia_aiq_ae_manual_separate_gain manual_separate_gains[MAX_NUM_EXPOSURE]; /*!< Manual separate gains. All zeros = not used (legacy mode). */ + uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_total_gain. */ ia_aiq_ae_manual_limits manual_limits[MAX_NUM_EXPOSURE]; /*!< Manual limits which override limits defined in AEC tunings. */ uint32_t manual_total_target_exposure[MAX_NUM_EXPOSURE]; /*!< Manual total target exposure. */ ia_aiq_ae_exposure_distribution_priority exposure_distribution_priority; /*!< AEC exposure distribution priority mode. */ @@ -658,6 +659,7 @@ typedef struct { int32_t media_format_stills; /*!< Media format for stills. */ tnr7us_trigger_info_t tnr7us_trigger_info; /*!< TNR7US trigger information. */ seg_net_info_t seg_net_info; /*!< SEG net information. */ + b2b_onnx_info_t b2b_onnx_info; /*!< B2B ONNX network metadata from CMC. */ } cca_cmc; /*! diff --git a/include/ipu75xa/ia_imaging/ia_aiq.h b/include/ipu75xa/ia_imaging/ia_aiq.h index 908ecca..8b83b9a 100644 --- a/include/ipu75xa/ia_imaging/ia_aiq.h +++ b/include/ipu75xa/ia_imaging/ia_aiq.h @@ -256,10 +256,13 @@ typedef struct long *manual_exposure_time_us; /*!< Optional. Manual exposure time in microseconds. NULL if NA. Otherwise, array of values of num_exposures length. Order of exposure times corresponds to exposure_index of ae_results, e.g., manual_exposure_time_us[ae_results->exposures[0].exposure_index] = 33000; */ - float32_t *manual_analog_gain; /*!< Optional. Manual analog gain. NULL if NA. Otherwise, array of values of num_exposures length. + float32_t *manual_total_gain; /*!< Optional. Manual total gain (legacy mode). NULL if NA. Otherwise, array of values of num_exposures length. Order of gain values corresponds to exposure_index of ae_results, - e.g., manual_analog_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ - int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_analog_gain. NULL if NA. Otherwise, array of values + e.g., manual_total_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ + ia_aiq_ae_manual_separate_gain* manual_separate_gains; /*!< Optional. Manual separate gains per exposure. NULL = legacy mode (manual_total_gain is used). + Non-NULL = separate mode, each gain stage set independently. Array of num_exposures length. + When set, overrides manual_total_gain. */ + int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_total_gain. NULL if NA. Otherwise, array of values of num_exposures length. Order of ISO values corresponds to exposure_index of ae_results, e.g., manual_iso[ae_results->exposures[0].exposure_index] = 100; */ ia_aiq_ae_features *aec_features; /*!< Optional. AEC features in use when calculating new exposure parameters. */ diff --git a/include/ipu75xa/ia_imaging/ia_aiq_types.h b/include/ipu75xa/ia_imaging/ia_aiq_types.h index 2df548a..bccfb9a 100644 --- a/include/ipu75xa/ia_imaging/ia_aiq_types.h +++ b/include/ipu75xa/ia_imaging/ia_aiq_types.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2025 Intel Corporation + * Copyright 2012-2026 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -135,6 +135,17 @@ typedef struct int manual_iso_max; /*!< Optional. Manual maximum ISO. -1 if NA. */ } ia_aiq_ae_manual_limits; +/*! + * \brief Manual gain values for each exposure in separate gain mode. + * Valid when analog_gain >= 1.0 && digital_gain >= 1.0. isp_gain < 1.0 means not set (treated as 1.0). + */ +typedef struct +{ + float32_t analog_gain; /*!< Manual analog gain. <1 means not set. */ + float32_t digital_gain; /*!< Manual digital gain. <1 means not set. */ + float32_t isp_gain; /*!< Manual ISP digital gain. <1 means not set (treated as 1.0). */ +} ia_aiq_ae_manual_separate_gain; + /*! * \brief AEC exposure distribution priority modes * diff --git a/include/ipu75xa/ia_imaging/ia_cmc_types.h b/include/ipu75xa/ia_imaging/ia_cmc_types.h index a795bd2..5c1f5c0 100644 --- a/include/ipu75xa/ia_imaging/ia_cmc_types.h +++ b/include/ipu75xa/ia_imaging/ia_cmc_types.h @@ -212,7 +212,9 @@ typedef enum cmc_name_id_media_format, //preview/video /*!< 37 */ cmc_name_id_cbd, /*!< 38 */ cmc_name_id_media_format_stills, /*!< 39 */ - cmc_name_id_seg_net /*!< 40 */ + cmc_name_id_seg_net, /*!< 40 */ + cmc_name_id_b2b_noise_model, /*!< 41 */ + cmc_name_id_b2b_onnx /*!< 42 */ } cmc_name_id; /*! @@ -1585,6 +1587,26 @@ typedef struct } seg_net_info_t; +#define B2B_NOISE_MODEL_B_COEFF_COUNT 3U +#define B2B_NOISE_MODEL_K_COEFF_COUNT 2U +#define B2B_ONNX_VERSION_SIZE 3U +#define B2B_ONNX_CHECKSUM_SIZE 128U + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: Float (See AIQB_DataID) Name ID: cmc_name_id_b2b_noise_model (See cmc_name_id). */ + float b_coeff[B2B_NOISE_MODEL_B_COEFF_COUNT]; + float k_coeff[B2B_NOISE_MODEL_K_COEFF_COUNT]; +} b2b_noise_model_t; + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: UInt16 (See AIQB_DataID) Name ID: cmc_name_id_b2b_onnx (See cmc_name_id). CPFF record version 100. */ + uint16_t enhanced_mode_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Enhanced mode B2B ONNX; intended for lower gains. */ + uint8_t enhanced_mode_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; + uint16_t noise_reduction_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Noise reduction B2B ONNX; intended for higher gains. */ + uint8_t noise_reduction_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; +} b2b_onnx_info_t; /*! * \brief Parsed CMC structure. @@ -1631,6 +1653,8 @@ typedef struct cmc_parsed_cbd_t *cmc_parsed_cbd; tnr7us_trigger_info_t *tnr7us_trigger_info; seg_net_info_t* seg_net_info_t; + b2b_noise_model_t* b2b_noise_model; + b2b_onnx_info_t* b2b_onnx_info; const ia_binary_data *a_aiqb_binary; } ia_cmc_t; diff --git a/include/ipu75xa/ia_imaging/ia_configuration.h b/include/ipu75xa/ia_imaging/ia_configuration.h index c604c7d..dd5c167 100644 --- a/include/ipu75xa/ia_imaging/ia_configuration.h +++ b/include/ipu75xa/ia_imaging/ia_configuration.h @@ -55,6 +55,7 @@ #define IA_AEC_FEATURE_HDR #define IA_AEC_FEATURE_MOTION_BLUR_REDUCTION #define IA_AEC_FEATURE_SCENE_ANALYSIS +/* #undef IA_AEC_FEATURE_ALS_FAST_CONVERGE */ #define ENABLE_AF #define ENABLE_AWB #define IA_AWB_FEATURE_SKIN_TONE_CORRECTION diff --git a/include/ipu7x/ia_imaging/IntelCCATypes.h b/include/ipu7x/ia_imaging/IntelCCATypes.h index c48cd06..e3b0945 100644 --- a/include/ipu7x/ia_imaging/IntelCCATypes.h +++ b/include/ipu7x/ia_imaging/IntelCCATypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2025 Intel Corporation. + * Copyright (C) 2019-2026 Intel Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -206,8 +206,9 @@ typedef struct { ia_coordinate exposure_coordinate; /*!< Coordinate for a point in which the exposure should be prioritized. */ float32_t ev_shift; /*!< Exposure Value shift [-4,4]. */ uint32_t manual_exposure_time_us[MAX_NUM_EXPOSURE]; /*!< Manual exposure time in microseconds. */ - float32_t manual_analog_gain[MAX_NUM_EXPOSURE]; /*!< Manual analog gain. */ - uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_analog_gain. */ + float32_t manual_total_gain[MAX_NUM_EXPOSURE]; /*!< Manual total gain (legacy mode). */ + ia_aiq_ae_manual_separate_gain manual_separate_gains[MAX_NUM_EXPOSURE]; /*!< Manual separate gains. All zeros = not used (legacy mode). */ + uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_total_gain. */ ia_aiq_ae_manual_limits manual_limits[MAX_NUM_EXPOSURE]; /*!< Manual limits which override limits defined in AEC tunings. */ uint32_t manual_total_target_exposure[MAX_NUM_EXPOSURE]; /*!< Manual total target exposure. */ ia_aiq_ae_exposure_distribution_priority exposure_distribution_priority; /*!< AEC exposure distribution priority mode. */ @@ -658,6 +659,7 @@ typedef struct { int32_t media_format_stills; /*!< Media format for stills. */ tnr7us_trigger_info_t tnr7us_trigger_info; /*!< TNR7US trigger information. */ seg_net_info_t seg_net_info; /*!< SEG net information. */ + b2b_onnx_info_t b2b_onnx_info; /*!< B2B ONNX network metadata from CMC. */ } cca_cmc; /*! diff --git a/include/ipu7x/ia_imaging/ia_aiq.h b/include/ipu7x/ia_imaging/ia_aiq.h index 908ecca..8b83b9a 100644 --- a/include/ipu7x/ia_imaging/ia_aiq.h +++ b/include/ipu7x/ia_imaging/ia_aiq.h @@ -256,10 +256,13 @@ typedef struct long *manual_exposure_time_us; /*!< Optional. Manual exposure time in microseconds. NULL if NA. Otherwise, array of values of num_exposures length. Order of exposure times corresponds to exposure_index of ae_results, e.g., manual_exposure_time_us[ae_results->exposures[0].exposure_index] = 33000; */ - float32_t *manual_analog_gain; /*!< Optional. Manual analog gain. NULL if NA. Otherwise, array of values of num_exposures length. + float32_t *manual_total_gain; /*!< Optional. Manual total gain (legacy mode). NULL if NA. Otherwise, array of values of num_exposures length. Order of gain values corresponds to exposure_index of ae_results, - e.g., manual_analog_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ - int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_analog_gain. NULL if NA. Otherwise, array of values + e.g., manual_total_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ + ia_aiq_ae_manual_separate_gain* manual_separate_gains; /*!< Optional. Manual separate gains per exposure. NULL = legacy mode (manual_total_gain is used). + Non-NULL = separate mode, each gain stage set independently. Array of num_exposures length. + When set, overrides manual_total_gain. */ + int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_total_gain. NULL if NA. Otherwise, array of values of num_exposures length. Order of ISO values corresponds to exposure_index of ae_results, e.g., manual_iso[ae_results->exposures[0].exposure_index] = 100; */ ia_aiq_ae_features *aec_features; /*!< Optional. AEC features in use when calculating new exposure parameters. */ diff --git a/include/ipu7x/ia_imaging/ia_aiq_types.h b/include/ipu7x/ia_imaging/ia_aiq_types.h index 2df548a..bccfb9a 100644 --- a/include/ipu7x/ia_imaging/ia_aiq_types.h +++ b/include/ipu7x/ia_imaging/ia_aiq_types.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2025 Intel Corporation + * Copyright 2012-2026 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -135,6 +135,17 @@ typedef struct int manual_iso_max; /*!< Optional. Manual maximum ISO. -1 if NA. */ } ia_aiq_ae_manual_limits; +/*! + * \brief Manual gain values for each exposure in separate gain mode. + * Valid when analog_gain >= 1.0 && digital_gain >= 1.0. isp_gain < 1.0 means not set (treated as 1.0). + */ +typedef struct +{ + float32_t analog_gain; /*!< Manual analog gain. <1 means not set. */ + float32_t digital_gain; /*!< Manual digital gain. <1 means not set. */ + float32_t isp_gain; /*!< Manual ISP digital gain. <1 means not set (treated as 1.0). */ +} ia_aiq_ae_manual_separate_gain; + /*! * \brief AEC exposure distribution priority modes * diff --git a/include/ipu7x/ia_imaging/ia_cmc_types.h b/include/ipu7x/ia_imaging/ia_cmc_types.h index a795bd2..5c1f5c0 100644 --- a/include/ipu7x/ia_imaging/ia_cmc_types.h +++ b/include/ipu7x/ia_imaging/ia_cmc_types.h @@ -212,7 +212,9 @@ typedef enum cmc_name_id_media_format, //preview/video /*!< 37 */ cmc_name_id_cbd, /*!< 38 */ cmc_name_id_media_format_stills, /*!< 39 */ - cmc_name_id_seg_net /*!< 40 */ + cmc_name_id_seg_net, /*!< 40 */ + cmc_name_id_b2b_noise_model, /*!< 41 */ + cmc_name_id_b2b_onnx /*!< 42 */ } cmc_name_id; /*! @@ -1585,6 +1587,26 @@ typedef struct } seg_net_info_t; +#define B2B_NOISE_MODEL_B_COEFF_COUNT 3U +#define B2B_NOISE_MODEL_K_COEFF_COUNT 2U +#define B2B_ONNX_VERSION_SIZE 3U +#define B2B_ONNX_CHECKSUM_SIZE 128U + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: Float (See AIQB_DataID) Name ID: cmc_name_id_b2b_noise_model (See cmc_name_id). */ + float b_coeff[B2B_NOISE_MODEL_B_COEFF_COUNT]; + float k_coeff[B2B_NOISE_MODEL_K_COEFF_COUNT]; +} b2b_noise_model_t; + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: UInt16 (See AIQB_DataID) Name ID: cmc_name_id_b2b_onnx (See cmc_name_id). CPFF record version 100. */ + uint16_t enhanced_mode_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Enhanced mode B2B ONNX; intended for lower gains. */ + uint8_t enhanced_mode_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; + uint16_t noise_reduction_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Noise reduction B2B ONNX; intended for higher gains. */ + uint8_t noise_reduction_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; +} b2b_onnx_info_t; /*! * \brief Parsed CMC structure. @@ -1631,6 +1653,8 @@ typedef struct cmc_parsed_cbd_t *cmc_parsed_cbd; tnr7us_trigger_info_t *tnr7us_trigger_info; seg_net_info_t* seg_net_info_t; + b2b_noise_model_t* b2b_noise_model; + b2b_onnx_info_t* b2b_onnx_info; const ia_binary_data *a_aiqb_binary; } ia_cmc_t; diff --git a/include/ipu7x/ia_imaging/ia_configuration.h b/include/ipu7x/ia_imaging/ia_configuration.h index c604c7d..dd5c167 100644 --- a/include/ipu7x/ia_imaging/ia_configuration.h +++ b/include/ipu7x/ia_imaging/ia_configuration.h @@ -55,6 +55,7 @@ #define IA_AEC_FEATURE_HDR #define IA_AEC_FEATURE_MOTION_BLUR_REDUCTION #define IA_AEC_FEATURE_SCENE_ANALYSIS +/* #undef IA_AEC_FEATURE_ALS_FAST_CONVERGE */ #define ENABLE_AF #define ENABLE_AWB #define IA_AWB_FEATURE_SKIN_TONE_CORRECTION diff --git a/include/ipu8/ia_imaging/IntelCCATypes.h b/include/ipu8/ia_imaging/IntelCCATypes.h index c48cd06..e3b0945 100644 --- a/include/ipu8/ia_imaging/IntelCCATypes.h +++ b/include/ipu8/ia_imaging/IntelCCATypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2025 Intel Corporation. + * Copyright (C) 2019-2026 Intel Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -206,8 +206,9 @@ typedef struct { ia_coordinate exposure_coordinate; /*!< Coordinate for a point in which the exposure should be prioritized. */ float32_t ev_shift; /*!< Exposure Value shift [-4,4]. */ uint32_t manual_exposure_time_us[MAX_NUM_EXPOSURE]; /*!< Manual exposure time in microseconds. */ - float32_t manual_analog_gain[MAX_NUM_EXPOSURE]; /*!< Manual analog gain. */ - uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_analog_gain. */ + float32_t manual_total_gain[MAX_NUM_EXPOSURE]; /*!< Manual total gain (legacy mode). */ + ia_aiq_ae_manual_separate_gain manual_separate_gains[MAX_NUM_EXPOSURE]; /*!< Manual separate gains. All zeros = not used (legacy mode). */ + uint16_t manual_iso[MAX_NUM_EXPOSURE]; /*!< Manual ISO. Overrides manual_total_gain. */ ia_aiq_ae_manual_limits manual_limits[MAX_NUM_EXPOSURE]; /*!< Manual limits which override limits defined in AEC tunings. */ uint32_t manual_total_target_exposure[MAX_NUM_EXPOSURE]; /*!< Manual total target exposure. */ ia_aiq_ae_exposure_distribution_priority exposure_distribution_priority; /*!< AEC exposure distribution priority mode. */ @@ -658,6 +659,7 @@ typedef struct { int32_t media_format_stills; /*!< Media format for stills. */ tnr7us_trigger_info_t tnr7us_trigger_info; /*!< TNR7US trigger information. */ seg_net_info_t seg_net_info; /*!< SEG net information. */ + b2b_onnx_info_t b2b_onnx_info; /*!< B2B ONNX network metadata from CMC. */ } cca_cmc; /*! diff --git a/include/ipu8/ia_imaging/ia_aiq.h b/include/ipu8/ia_imaging/ia_aiq.h index 908ecca..8b83b9a 100644 --- a/include/ipu8/ia_imaging/ia_aiq.h +++ b/include/ipu8/ia_imaging/ia_aiq.h @@ -256,10 +256,13 @@ typedef struct long *manual_exposure_time_us; /*!< Optional. Manual exposure time in microseconds. NULL if NA. Otherwise, array of values of num_exposures length. Order of exposure times corresponds to exposure_index of ae_results, e.g., manual_exposure_time_us[ae_results->exposures[0].exposure_index] = 33000; */ - float32_t *manual_analog_gain; /*!< Optional. Manual analog gain. NULL if NA. Otherwise, array of values of num_exposures length. + float32_t *manual_total_gain; /*!< Optional. Manual total gain (legacy mode). NULL if NA. Otherwise, array of values of num_exposures length. Order of gain values corresponds to exposure_index of ae_results, - e.g., manual_analog_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ - int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_analog_gain. NULL if NA. Otherwise, array of values + e.g., manual_total_gain[ae_results->exposures[0].exposure_index] = 4.0f; */ + ia_aiq_ae_manual_separate_gain* manual_separate_gains; /*!< Optional. Manual separate gains per exposure. NULL = legacy mode (manual_total_gain is used). + Non-NULL = separate mode, each gain stage set independently. Array of num_exposures length. + When set, overrides manual_total_gain. */ + int16_t *manual_iso; /*!< Optional. Manual ISO. Overrides manual_total_gain. NULL if NA. Otherwise, array of values of num_exposures length. Order of ISO values corresponds to exposure_index of ae_results, e.g., manual_iso[ae_results->exposures[0].exposure_index] = 100; */ ia_aiq_ae_features *aec_features; /*!< Optional. AEC features in use when calculating new exposure parameters. */ diff --git a/include/ipu8/ia_imaging/ia_aiq_types.h b/include/ipu8/ia_imaging/ia_aiq_types.h index 2df548a..bccfb9a 100644 --- a/include/ipu8/ia_imaging/ia_aiq_types.h +++ b/include/ipu8/ia_imaging/ia_aiq_types.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2025 Intel Corporation + * Copyright 2012-2026 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -135,6 +135,17 @@ typedef struct int manual_iso_max; /*!< Optional. Manual maximum ISO. -1 if NA. */ } ia_aiq_ae_manual_limits; +/*! + * \brief Manual gain values for each exposure in separate gain mode. + * Valid when analog_gain >= 1.0 && digital_gain >= 1.0. isp_gain < 1.0 means not set (treated as 1.0). + */ +typedef struct +{ + float32_t analog_gain; /*!< Manual analog gain. <1 means not set. */ + float32_t digital_gain; /*!< Manual digital gain. <1 means not set. */ + float32_t isp_gain; /*!< Manual ISP digital gain. <1 means not set (treated as 1.0). */ +} ia_aiq_ae_manual_separate_gain; + /*! * \brief AEC exposure distribution priority modes * diff --git a/include/ipu8/ia_imaging/ia_cmc_types.h b/include/ipu8/ia_imaging/ia_cmc_types.h index a795bd2..5c1f5c0 100644 --- a/include/ipu8/ia_imaging/ia_cmc_types.h +++ b/include/ipu8/ia_imaging/ia_cmc_types.h @@ -212,7 +212,9 @@ typedef enum cmc_name_id_media_format, //preview/video /*!< 37 */ cmc_name_id_cbd, /*!< 38 */ cmc_name_id_media_format_stills, /*!< 39 */ - cmc_name_id_seg_net /*!< 40 */ + cmc_name_id_seg_net, /*!< 40 */ + cmc_name_id_b2b_noise_model, /*!< 41 */ + cmc_name_id_b2b_onnx /*!< 42 */ } cmc_name_id; /*! @@ -1585,6 +1587,26 @@ typedef struct } seg_net_info_t; +#define B2B_NOISE_MODEL_B_COEFF_COUNT 3U +#define B2B_NOISE_MODEL_K_COEFF_COUNT 2U +#define B2B_ONNX_VERSION_SIZE 3U +#define B2B_ONNX_CHECKSUM_SIZE 128U + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: Float (See AIQB_DataID) Name ID: cmc_name_id_b2b_noise_model (See cmc_name_id). */ + float b_coeff[B2B_NOISE_MODEL_B_COEFF_COUNT]; + float k_coeff[B2B_NOISE_MODEL_K_COEFF_COUNT]; +} b2b_noise_model_t; + +typedef struct +{ + ia_mkn_record_header header; /*!< Record header with Format ID: UInt16 (See AIQB_DataID) Name ID: cmc_name_id_b2b_onnx (See cmc_name_id). CPFF record version 100. */ + uint16_t enhanced_mode_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Enhanced mode B2B ONNX; intended for lower gains. */ + uint8_t enhanced_mode_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; + uint16_t noise_reduction_onnx_file_version[B2B_ONNX_VERSION_SIZE]; /*!< Noise reduction B2B ONNX; intended for higher gains. */ + uint8_t noise_reduction_onnx_file_checksum[B2B_ONNX_CHECKSUM_SIZE]; +} b2b_onnx_info_t; /*! * \brief Parsed CMC structure. @@ -1631,6 +1653,8 @@ typedef struct cmc_parsed_cbd_t *cmc_parsed_cbd; tnr7us_trigger_info_t *tnr7us_trigger_info; seg_net_info_t* seg_net_info_t; + b2b_noise_model_t* b2b_noise_model; + b2b_onnx_info_t* b2b_onnx_info; const ia_binary_data *a_aiqb_binary; } ia_cmc_t; diff --git a/include/ipu8/ia_imaging/ia_configuration.h b/include/ipu8/ia_imaging/ia_configuration.h index c604c7d..dd5c167 100644 --- a/include/ipu8/ia_imaging/ia_configuration.h +++ b/include/ipu8/ia_imaging/ia_configuration.h @@ -55,6 +55,7 @@ #define IA_AEC_FEATURE_HDR #define IA_AEC_FEATURE_MOTION_BLUR_REDUCTION #define IA_AEC_FEATURE_SCENE_ANALYSIS +/* #undef IA_AEC_FEATURE_ALS_FAST_CONVERGE */ #define ENABLE_AF #define ENABLE_AWB #define IA_AWB_FEATURE_SKIN_TONE_CORRECTION diff --git a/include/ipu8/ia_imaging/ia_pal_types_isp_ids_autogen.h b/include/ipu8/ia_imaging/ia_pal_types_isp_ids_autogen.h index 9e4dfea..3335936 100644 --- a/include/ipu8/ia_imaging/ia_pal_types_isp_ids_autogen.h +++ b/include/ipu8/ia_imaging/ia_pal_types_isp_ids_autogen.h @@ -63,6 +63,7 @@ typedef enum ia_pal_uuid_isp_glim_2_0 = 36029, ia_pal_uuid_isp_gltm_2_0 = 54721, ia_pal_uuid_isp_gmv_statistics_1_1 = 40280, + ia_pal_uuid_isp_imv = 23692, ia_pal_uuid_isp_is_odr_a = 11470, ia_pal_uuid_isp_is_odr_b = 55449, ia_pal_uuid_isp_is_odr_c = 50407, @@ -108,6 +109,7 @@ typedef enum ia_pal_uuid_isp_nntm_1_2 = 8034, ia_pal_uuid_isp_pafstatistics_1_2 = 44308, ia_pal_uuid_isp_pext_1_0 = 43213, + ia_pal_uuid_isp_remosaic_1_0 = 8198, ia_pal_uuid_isp_rgb_ir_2_0 = 14488, ia_pal_uuid_isp_rgbs_grid_1_1 = 15021, ia_pal_uuid_isp_smurf_bnlm_1_0 = 54924, diff --git a/include/ipu8/ia_imaging/ia_pal_types_isp_parameters_autogen.h b/include/ipu8/ia_imaging/ia_pal_types_isp_parameters_autogen.h index 5e18ff7..11d44bc 100644 --- a/include/ipu8/ia_imaging/ia_pal_types_isp_parameters_autogen.h +++ b/include/ipu8/ia_imaging/ia_pal_types_isp_parameters_autogen.h @@ -1528,6 +1528,28 @@ typedef struct } ia_pal_isp_gmv_statistics_1_1_t; +/*! \isp struct imv + +*/ +typedef struct +{ + /*!< enabled Enable/Disable sharpening*/ + int32_t enabled; + /*!< minimum_edge_strength Minimum edge strength to apply sharpening (weaker edges below this value will not be sharpened). Lowering this will sharpen light textures but may also sharpen noise.*/ + int32_t minimum_edge_strength; + /*!< maximum_edge_strength Maximum edge strength limit (pixels above this value will receive full sharpening).Lowering this applies full sharpening to weaker edges.*/ + int32_t maximum_edge_strength; + /*!< strength Intensity of the sharpening effect (how much contrast is added to edges). Higher values result in stronger sharpening.*/ + int32_t strength; + /*!< radius Size of the blur used to detect edges (larger = broader edges, smaller = narrow edge hallo). Range: [1 (3×3), 2 (5×5), 3 (7×7)]*/ + int32_t radius; + /*!< h_clamp */ + int32_t h_clamp; + /*!< l_clamp */ + int32_t l_clamp; + +} ia_pal_isp_imv_t; + /*! \isp struct input_system_drainer */ @@ -2114,6 +2136,46 @@ typedef struct } ia_pal_isp_pext_1_0_t; +/*! \isp struct remosaic_1_0 +4C sensor remosaicking algorithm for GPU +*/ +typedef struct +{ + /*!< enable Enable for the filter*/ + int32_t enable; + /*!< frame_width Frame width*/ + int32_t frame_width; + /*!< frame_height Frame height*/ + int32_t frame_height; + /*!< green_edge_sensitivity Weighting of green edges in G interpolation U1.8*/ + int32_t green_edge_sensitivity; + /*!< color_edge_sensitivity Weighting of R/B color edge in G interpolation U1.8*/ + int32_t color_edge_sensitivity; + /*!< long_edge_sensitivity Weighting of long G edges in G interpolation U1.8*/ + int32_t long_edge_sensitivity; + /*!< blc_enable Enable input 4C black level subtraction*/ + int32_t blc_enable; + /*!< wb_enable Enable input 4C white-balancing*/ + int32_t wb_enable; + /*!< deblc_enable Enable output Bayer black level recovery*/ + int32_t deblc_enable; + /*!< dewb_enable Enable output Bayer de-white-balancing*/ + int32_t dewb_enable; + /*!< wb_factors[4] White balancing factors (R/B only) U4.12*/ + int32_t wb_factors[4]; + /*!< bl_offset Input black level correction*/ + int32_t bl_offset; + /*!< desaturation_enable Enable desaturation algorithm*/ + int32_t desaturation_enable; + /*!< desaturation_g_thr Saturated g pixel threshold U0.20*/ + int32_t desaturation_g_thr; + /*!< desaturation_g_edge_thr Inverse green satured edge threshold U0.20*/ + int32_t desaturation_g_edge_thr; + /*!< desaturation_slope Over-exposed pixel soft-threshold slope U8.8*/ + int32_t desaturation_slope; + +} ia_pal_isp_remosaic_1_0_t; + /*! \isp struct rgb_ir_2_0 RGB-IR */ diff --git a/lib/firmware/intel/ipu/ipu8_fw.bin b/lib/firmware/intel/ipu/ipu8_fw.bin index 8df08bb..04ade43 100644 Binary files a/lib/firmware/intel/ipu/ipu8_fw.bin and b/lib/firmware/intel/ipu/ipu8_fw.bin differ diff --git a/lib/firmware/intel/ipu/unsigned/ipu8_fw.bin b/lib/firmware/intel/ipu/unsigned/ipu8_fw.bin index 8df08bb..04ade43 100644 Binary files a/lib/firmware/intel/ipu/unsigned/ipu8_fw.bin and b/lib/firmware/intel/ipu/unsigned/ipu8_fw.bin differ diff --git a/lib/libia_aic-ipu75xa.so.0 b/lib/libia_aic-ipu75xa.so.0 index d1ba17e..3b70523 100644 Binary files a/lib/libia_aic-ipu75xa.so.0 and b/lib/libia_aic-ipu75xa.so.0 differ diff --git a/lib/libia_aic-ipu7x.so.0 b/lib/libia_aic-ipu7x.so.0 index a8f966f..a61c53f 100644 Binary files a/lib/libia_aic-ipu7x.so.0 and b/lib/libia_aic-ipu7x.so.0 differ diff --git a/lib/libia_aic-ipu8.so.0 b/lib/libia_aic-ipu8.so.0 index 0465546..7922756 100644 Binary files a/lib/libia_aic-ipu8.so.0 and b/lib/libia_aic-ipu8.so.0 differ diff --git a/lib/libia_aiq_v1-ipu75xa.so.0 b/lib/libia_aiq_v1-ipu75xa.so.0 index 111ca4c..2a4fc69 100644 Binary files a/lib/libia_aiq_v1-ipu75xa.so.0 and b/lib/libia_aiq_v1-ipu75xa.so.0 differ diff --git a/lib/libia_aiq_v1-ipu7x.so.0 b/lib/libia_aiq_v1-ipu7x.so.0 index cb0f14f..1036d34 100644 Binary files a/lib/libia_aiq_v1-ipu7x.so.0 and b/lib/libia_aiq_v1-ipu7x.so.0 differ diff --git a/lib/libia_aiq_v1-ipu8.so.0 b/lib/libia_aiq_v1-ipu8.so.0 index 531ac73..cbb70a5 100644 Binary files a/lib/libia_aiq_v1-ipu8.so.0 and b/lib/libia_aiq_v1-ipu8.so.0 differ diff --git a/lib/libia_aiq_v1_file_debug-ipu75xa.so.0 b/lib/libia_aiq_v1_file_debug-ipu75xa.so.0 index 9f21174..9e4e4ec 100644 Binary files a/lib/libia_aiq_v1_file_debug-ipu75xa.so.0 and b/lib/libia_aiq_v1_file_debug-ipu75xa.so.0 differ diff --git a/lib/libia_aiq_v1_file_debug-ipu7x.so.0 b/lib/libia_aiq_v1_file_debug-ipu7x.so.0 index 482ed1b..94ee1b5 100644 Binary files a/lib/libia_aiq_v1_file_debug-ipu7x.so.0 and b/lib/libia_aiq_v1_file_debug-ipu7x.so.0 differ diff --git a/lib/libia_aiq_v1_file_debug-ipu8.so.0 b/lib/libia_aiq_v1_file_debug-ipu8.so.0 index eb5694e..26f6dc4 100644 Binary files a/lib/libia_aiq_v1_file_debug-ipu8.so.0 and b/lib/libia_aiq_v1_file_debug-ipu8.so.0 differ diff --git a/lib/libia_aiqb_parser-ipu75xa.so.0 b/lib/libia_aiqb_parser-ipu75xa.so.0 index ad93110..f87548d 100644 Binary files a/lib/libia_aiqb_parser-ipu75xa.so.0 and b/lib/libia_aiqb_parser-ipu75xa.so.0 differ diff --git a/lib/libia_aiqb_parser-ipu7x.so.0 b/lib/libia_aiqb_parser-ipu7x.so.0 index f5c1df1..82d94ac 100644 Binary files a/lib/libia_aiqb_parser-ipu7x.so.0 and b/lib/libia_aiqb_parser-ipu7x.so.0 differ diff --git a/lib/libia_aiqb_parser-ipu8.so.0 b/lib/libia_aiqb_parser-ipu8.so.0 index 577d0c5..1afb30e 100644 Binary files a/lib/libia_aiqb_parser-ipu8.so.0 and b/lib/libia_aiqb_parser-ipu8.so.0 differ diff --git a/lib/libia_bcomp-ipu75xa.so.0 b/lib/libia_bcomp-ipu75xa.so.0 index 33a3e41..8305561 100644 Binary files a/lib/libia_bcomp-ipu75xa.so.0 and b/lib/libia_bcomp-ipu75xa.so.0 differ diff --git a/lib/libia_bcomp-ipu7x.so.0 b/lib/libia_bcomp-ipu7x.so.0 index e93d02c..3ab1dd2 100644 Binary files a/lib/libia_bcomp-ipu7x.so.0 and b/lib/libia_bcomp-ipu7x.so.0 differ diff --git a/lib/libia_bcomp-ipu8.so.0 b/lib/libia_bcomp-ipu8.so.0 index e4d7b9e..64ada39 100644 Binary files a/lib/libia_bcomp-ipu8.so.0 and b/lib/libia_bcomp-ipu8.so.0 differ diff --git a/lib/libia_cca-ipu75xa.so.0 b/lib/libia_cca-ipu75xa.so.0 index fc055a6..be75838 100644 Binary files a/lib/libia_cca-ipu75xa.so.0 and b/lib/libia_cca-ipu75xa.so.0 differ diff --git a/lib/libia_cca-ipu7x.so.0 b/lib/libia_cca-ipu7x.so.0 index cfb263b..7f64d8e 100644 Binary files a/lib/libia_cca-ipu7x.so.0 and b/lib/libia_cca-ipu7x.so.0 differ diff --git a/lib/libia_cca-ipu8.so.0 b/lib/libia_cca-ipu8.so.0 index c40d8fa..8348cb8 100644 Binary files a/lib/libia_cca-ipu8.so.0 and b/lib/libia_cca-ipu8.so.0 differ diff --git a/lib/libia_ccat-ipu75xa.so.0 b/lib/libia_ccat-ipu75xa.so.0 index bd4356c..6e62713 100644 Binary files a/lib/libia_ccat-ipu75xa.so.0 and b/lib/libia_ccat-ipu75xa.so.0 differ diff --git a/lib/libia_ccat-ipu7x.so.0 b/lib/libia_ccat-ipu7x.so.0 index d9f9aea..59f6fb5 100644 Binary files a/lib/libia_ccat-ipu7x.so.0 and b/lib/libia_ccat-ipu7x.so.0 differ diff --git a/lib/libia_ccat-ipu8.so.0 b/lib/libia_ccat-ipu8.so.0 index 8437c59..0c64ba8 100644 Binary files a/lib/libia_ccat-ipu8.so.0 and b/lib/libia_ccat-ipu8.so.0 differ diff --git a/lib/libia_cmc_parser-ipu75xa.so.0 b/lib/libia_cmc_parser-ipu75xa.so.0 index 9d00934..43eeef8 100644 Binary files a/lib/libia_cmc_parser-ipu75xa.so.0 and b/lib/libia_cmc_parser-ipu75xa.so.0 differ diff --git a/lib/libia_cmc_parser-ipu7x.so.0 b/lib/libia_cmc_parser-ipu7x.so.0 index d25a59c..05e5152 100644 Binary files a/lib/libia_cmc_parser-ipu7x.so.0 and b/lib/libia_cmc_parser-ipu7x.so.0 differ diff --git a/lib/libia_cmc_parser-ipu8.so.0 b/lib/libia_cmc_parser-ipu8.so.0 index 711e05e..1c08b56 100644 Binary files a/lib/libia_cmc_parser-ipu8.so.0 and b/lib/libia_cmc_parser-ipu8.so.0 differ diff --git a/lib/libia_coordinate-ipu75xa.so.0 b/lib/libia_coordinate-ipu75xa.so.0 index 7d0ffcd..2c3cd4d 100644 Binary files a/lib/libia_coordinate-ipu75xa.so.0 and b/lib/libia_coordinate-ipu75xa.so.0 differ diff --git a/lib/libia_coordinate-ipu7x.so.0 b/lib/libia_coordinate-ipu7x.so.0 index 1b12dae..1be2838 100644 Binary files a/lib/libia_coordinate-ipu7x.so.0 and b/lib/libia_coordinate-ipu7x.so.0 differ diff --git a/lib/libia_coordinate-ipu8.so.0 b/lib/libia_coordinate-ipu8.so.0 index 21e08aa..287d11f 100644 Binary files a/lib/libia_coordinate-ipu8.so.0 and b/lib/libia_coordinate-ipu8.so.0 differ diff --git a/lib/libia_dvs-ipu75xa.so.0 b/lib/libia_dvs-ipu75xa.so.0 index 21a0ad3..460f90c 100644 Binary files a/lib/libia_dvs-ipu75xa.so.0 and b/lib/libia_dvs-ipu75xa.so.0 differ diff --git a/lib/libia_dvs-ipu7x.so.0 b/lib/libia_dvs-ipu7x.so.0 index f05ce49..fa12f5d 100644 Binary files a/lib/libia_dvs-ipu7x.so.0 and b/lib/libia_dvs-ipu7x.so.0 differ diff --git a/lib/libia_dvs-ipu8.so.0 b/lib/libia_dvs-ipu8.so.0 index e93304c..29a8353 100644 Binary files a/lib/libia_dvs-ipu8.so.0 and b/lib/libia_dvs-ipu8.so.0 differ diff --git a/lib/libia_emd_decoder-ipu75xa.so.0 b/lib/libia_emd_decoder-ipu75xa.so.0 index e510a88..e5b30f4 100644 Binary files a/lib/libia_emd_decoder-ipu75xa.so.0 and b/lib/libia_emd_decoder-ipu75xa.so.0 differ diff --git a/lib/libia_emd_decoder-ipu7x.so.0 b/lib/libia_emd_decoder-ipu7x.so.0 index 637271f..79afddb 100644 Binary files a/lib/libia_emd_decoder-ipu7x.so.0 and b/lib/libia_emd_decoder-ipu7x.so.0 differ diff --git a/lib/libia_emd_decoder-ipu8.so.0 b/lib/libia_emd_decoder-ipu8.so.0 index eb735d6..ceba08f 100644 Binary files a/lib/libia_emd_decoder-ipu8.so.0 and b/lib/libia_emd_decoder-ipu8.so.0 differ diff --git a/lib/libia_exc-ipu75xa.so.0 b/lib/libia_exc-ipu75xa.so.0 index cdb97b5..dd161c2 100644 Binary files a/lib/libia_exc-ipu75xa.so.0 and b/lib/libia_exc-ipu75xa.so.0 differ diff --git a/lib/libia_exc-ipu7x.so.0 b/lib/libia_exc-ipu7x.so.0 index 1020e4c..3a0249a 100644 Binary files a/lib/libia_exc-ipu7x.so.0 and b/lib/libia_exc-ipu7x.so.0 differ diff --git a/lib/libia_exc-ipu8.so.0 b/lib/libia_exc-ipu8.so.0 index 107c04e..e68dbf4 100644 Binary files a/lib/libia_exc-ipu8.so.0 and b/lib/libia_exc-ipu8.so.0 differ diff --git a/lib/libia_lard-ipu75xa.so.0 b/lib/libia_lard-ipu75xa.so.0 index f9aa8cb..b0d1a7b 100644 Binary files a/lib/libia_lard-ipu75xa.so.0 and b/lib/libia_lard-ipu75xa.so.0 differ diff --git a/lib/libia_lard-ipu7x.so.0 b/lib/libia_lard-ipu7x.so.0 index 0e40854..40c13ba 100644 Binary files a/lib/libia_lard-ipu7x.so.0 and b/lib/libia_lard-ipu7x.so.0 differ diff --git a/lib/libia_lard-ipu8.so.0 b/lib/libia_lard-ipu8.so.0 index b8e243e..34060e6 100644 Binary files a/lib/libia_lard-ipu8.so.0 and b/lib/libia_lard-ipu8.so.0 differ diff --git a/lib/libia_log-ipu75xa.so.0 b/lib/libia_log-ipu75xa.so.0 index 0ad84c0..8190bef 100644 Binary files a/lib/libia_log-ipu75xa.so.0 and b/lib/libia_log-ipu75xa.so.0 differ diff --git a/lib/libia_log-ipu7x.so.0 b/lib/libia_log-ipu7x.so.0 index 1698823..245ea53 100644 Binary files a/lib/libia_log-ipu7x.so.0 and b/lib/libia_log-ipu7x.so.0 differ diff --git a/lib/libia_log-ipu8.so.0 b/lib/libia_log-ipu8.so.0 index 42430bb..bdd920b 100644 Binary files a/lib/libia_log-ipu8.so.0 and b/lib/libia_log-ipu8.so.0 differ diff --git a/lib/libia_mkn-ipu75xa.so.0 b/lib/libia_mkn-ipu75xa.so.0 index 59cb1b0..02f02ba 100644 Binary files a/lib/libia_mkn-ipu75xa.so.0 and b/lib/libia_mkn-ipu75xa.so.0 differ diff --git a/lib/libia_mkn-ipu7x.so.0 b/lib/libia_mkn-ipu7x.so.0 index 8f6f73a..6c4ecec 100644 Binary files a/lib/libia_mkn-ipu7x.so.0 and b/lib/libia_mkn-ipu7x.so.0 differ diff --git a/lib/libia_mkn-ipu8.so.0 b/lib/libia_mkn-ipu8.so.0 index aa2eaa0..76e6374 100644 Binary files a/lib/libia_mkn-ipu8.so.0 and b/lib/libia_mkn-ipu8.so.0 differ diff --git a/lib/libia_nvm-ipu75xa.so.0 b/lib/libia_nvm-ipu75xa.so.0 index d6799c9..2317c17 100644 Binary files a/lib/libia_nvm-ipu75xa.so.0 and b/lib/libia_nvm-ipu75xa.so.0 differ diff --git a/lib/libia_nvm-ipu7x.so.0 b/lib/libia_nvm-ipu7x.so.0 index bb05eb4..2335640 100644 Binary files a/lib/libia_nvm-ipu7x.so.0 and b/lib/libia_nvm-ipu7x.so.0 differ diff --git a/lib/libia_nvm-ipu8.so.0 b/lib/libia_nvm-ipu8.so.0 index 3a8f05b..af467f6 100644 Binary files a/lib/libia_nvm-ipu8.so.0 and b/lib/libia_nvm-ipu8.so.0 differ diff --git a/lib/libia_view-ipu75xa.so.0 b/lib/libia_view-ipu75xa.so.0 index e08a019..672c3d9 100644 Binary files a/lib/libia_view-ipu75xa.so.0 and b/lib/libia_view-ipu75xa.so.0 differ diff --git a/lib/libia_view-ipu7x.so.0 b/lib/libia_view-ipu7x.so.0 index 316824a..d473f97 100644 Binary files a/lib/libia_view-ipu7x.so.0 and b/lib/libia_view-ipu7x.so.0 differ diff --git a/lib/libia_view-ipu8.so.0 b/lib/libia_view-ipu8.so.0 index 1c7e317..b4e0447 100644 Binary files a/lib/libia_view-ipu8.so.0 and b/lib/libia_view-ipu8.so.0 differ