Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions include/ipu75xa/ia_imaging/IntelCCATypes.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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;

/*!
Expand Down
9 changes: 6 additions & 3 deletions include/ipu75xa/ia_imaging/ia_aiq.h
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down
13 changes: 12 additions & 1 deletion include/ipu75xa/ia_imaging/ia_aiq_types.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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
*
Expand Down
26 changes: 25 additions & 1 deletion include/ipu75xa/ia_imaging/ia_cmc_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*!
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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;

Expand Down
1 change: 1 addition & 0 deletions include/ipu75xa/ia_imaging/ia_configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 5 additions & 3 deletions include/ipu7x/ia_imaging/IntelCCATypes.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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;

/*!
Expand Down
9 changes: 6 additions & 3 deletions include/ipu7x/ia_imaging/ia_aiq.h
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down
13 changes: 12 additions & 1 deletion include/ipu7x/ia_imaging/ia_aiq_types.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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
*
Expand Down
26 changes: 25 additions & 1 deletion include/ipu7x/ia_imaging/ia_cmc_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/*!
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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;

Expand Down
1 change: 1 addition & 0 deletions include/ipu7x/ia_imaging/ia_configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 5 additions & 3 deletions include/ipu8/ia_imaging/IntelCCATypes.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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;

/*!
Expand Down
9 changes: 6 additions & 3 deletions include/ipu8/ia_imaging/ia_aiq.h
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down
13 changes: 12 additions & 1 deletion include/ipu8/ia_imaging/ia_aiq_types.h
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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
*
Expand Down
Loading
Loading