diff options
author | Umang Jain <umang.jain@ideasonboard.com> | 2021-05-21 10:27:24 +0530 |
---|---|---|
committer | Umang Jain <umang.jain@ideasonboard.com> | 2021-06-28 14:12:06 +0530 |
commit | f21b9306a7893017b9f7e6b95001da9abade30f7 (patch) | |
tree | 82332eb640a9725ceef3ec487033b524cd49ecd7 /include/ia_imaging/ia_dpc.h | |
parent | d05fd744448d37739cf4f919578d0ac8c73bc0a1 (diff) |
include: Link to ia_imaging library and import headers
libia_imaging is provided by the ChromeOS system, however the headers
aren't installed at the system's $includedir locations. We need to carry
them in-tree, to be able to use them.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Diffstat (limited to 'include/ia_imaging/ia_dpc.h')
-rw-r--r-- | include/ia_imaging/ia_dpc.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/include/ia_imaging/ia_dpc.h b/include/ia_imaging/ia_dpc.h new file mode 100644 index 0000000..b787ed3 --- /dev/null +++ b/include/ia_imaging/ia_dpc.h @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2015 - 2017 Intel Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*! + * \mainpage IA DPC API documentation + * + * Browse Files and Classes tabs for details. + * + */ +/*! + * \file ia_dpc.h + * \brief Definitions and declarations of IA SD-DPC library. + */ +#ifndef _IA_DPC_H_ +#define _IA_DPC_H_ + +#include "ia_aiq_types.h" +#include "ia_types.h" +#include "ia_mkn_types.h" +#include "ia_cmc_types.h" + +#ifdef __cplusplus +extern "C" { +#endif +#define IA_DPC_VERSION "1.0.0.0" +typedef struct ia_dpc_t ia_dpc; + +/*! + * \brief SD-DPC runtime input. + */ +typedef struct { + short *frame_data; /*!< fixed point image */ + int frame_width; /*!< current frame width (might be cropped) */ + int frame_height; /*!< current frame height (might be cropped) */ +} sd_dpc_input; + +/*! + * \brief SD-DPC per-run output. + */ +typedef struct { + short *defect_lut; /*!< defects LUT stores the column indices (one-based) of the approved defects per row. size frame_height x max_defects_per_line */ + int dpc_lut_width; /*!< the width of the DP LUT, equal to maximum number of defects per line */ + int dpc_lut_height; /*!< the height of the DP LUT, equal to sensor height */ + bool dpc_lut_changed; /*!< true if the new defects have been added */ +} sd_dpc_output; + +/*! + * \brief Initialize IA_DPC.The function parses the given AIQB data and determines if the SD-DPC should be used. + * If yes the object is allocated and initialized. + * If not, null is returned + * + * \param[in] aiqb_data Mandatory.\n + * CPFF that contains tuning parameters for camera, ISP and AIQ algorithms. + * If NULL is given the function will return NULL. + * \param[in] ia_cmc Mandatory.\n + * Parsed camera module characterization structure. Internal copy of the structure will be taken. + * If NULL is given the function will return NULL. + * \param[in] ia_dpcd_data Mandatory.\n + * loaded DPCD data. Should not be NULL, but have size = 0 instead + * \param[in] max_defects_per_line Mandatory.\n + * maximum number of defects per line support by the ISP. + * \param[in] stripe_number_of_lines Mandatory.\n + * The maximum stripe height. + * return IA_DPC handle. Use the returned handle as input parameter for the consequent IA_DPC calls. + * Returns NULL is SD-DPC should be bypassed. + */ +LIBEXPORT ia_dpc* +ia_dpc_init(const ia_binary_data *aiqb_data, + const ia_cmc_t *ia_cmc, + const ia_binary_data *ia_dpcd_data, + unsigned int max_defects_per_line, + unsigned int stripe_number_of_lines); + +/*! + * \brief De-initialize IA_DPC. + * All memory allocated by DPC algoriths are freed. DPC handle can no longer be used. + * + * \param[in] ia_dpc Mandatory.\n + * DPC instance handle. + */ +LIBEXPORT void +ia_dpc_deinit(ia_dpc *ia_dpc); +/*! + * \brief SD-DPC execution based on input parameters and stripe. + * + * \param [in] ia_dpc Mandatory.\n + * SD-DPC state, updated with the intermediate results + * \param [in,out] stripe_ptr Mandatory.\n + * Stripe data that include the RAW pixels and the exisitng/ missing margins information. + * \param [out] dpc_output Mandatory.\n + * Output LUT of the verified defect pixels. The new defect pixels can be only in the given stripe region. + * Results can be used directly as input for AIC. + * \return Error code. + */ + +LIBEXPORT ia_err +ia_dpc_run(ia_dpc *ia_dpc, + const sd_dpc_input *stripe_ptr, + const ia_aiq_frame_params *aiq_frame_params_ptr, + const ia_aiq_ae_exposure_result *ae_exposure_result_ptr, + sd_dpc_output *dpc_output); + +/*! + * \param[in] ia_aiq Mandatory.\n + * DPC instance handle. + * \param[out] out_ia_dpcd_data Mandatory.\n + * Contains various DPC related information, collected during run-time and subject to + * be stored in a host file system. Host will copy this data, if ia_dpcd_data->size > 0 + * and ia_dpcd_data->data != NULL; SD-DPC is responsible to deallocate data buffer + * during ia_dpc_deinit(). + * \return Error code. + */ +LIBEXPORT ia_err +ia_dpc_get_dpcd_data( + ia_dpc *ia_dpc, + ia_binary_data *out_ia_dpcd_data); + +#ifdef __cplusplus +} +#endif +#endif /* _IA_DPC_H_ */ |