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_ltm.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_ltm.h')
-rw-r--r-- | include/ia_imaging/ia_ltm.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/include/ia_imaging/ia_ltm.h b/include/ia_imaging/ia_ltm.h new file mode 100644 index 0000000..999b179 --- /dev/null +++ b/include/ia_imaging/ia_ltm.h @@ -0,0 +1,130 @@ +/* + * 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 LTM API documentation + * + * Browse Files and Classes tabs for details. + * + * \section general General info + * + * \section init Initialization of LTM library + * + * \copybrief ia_ltm_init + * To create an instance of LTM library one must call function: + * \code ia_ltm_init \endcode + * \copydetails ia_ltm_init + * + * <br><hr><br> + */ +/*! + * \file ia_ltm.h + * \brief Definitions and declarations of Intel LTM library. + */ + + +#ifndef _IA_LTM_H_ +#define _IA_LTM_H_ + +#include "ia_ltm_types.h" +#include "ia_types.h" +#include "ia_aiq_types.h" +#include "ia_mkn_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * \brief Initialize IA_LTM. + * This function must be called before any other function in the library. It allocates memories for all LTM algorithms based on input parameters + * given by the user. Tuning parameters are parsed from AIQB and saved for LTM algorithms to use. Initialization returns a handle to the LTM instance, + * which is given as input parameter for other functions to access object data. Therefore, multiple instances of LTM library can running simultaneously. + * For example one instance per camera. + * + * \param[in] aiqb_data Mandatory although function will not return error, if it not given.\n + * AIQB Block from CPFF. Contains tuning parameters for AIQ, ISP and LTM algorithms. + * \param[in,out] ia_mkn Optional.\n + * Makernote handle which can be initialized with ia_mkn library. If debug data from LTM is needed + * to be stored into EXIF, this parameter is needed. Algorithms will update records inside this makernote instance. + * Client writes the data into Makernote section in EXIF. + * return IA_LTM handle. Use the returned handle as input parameter for the consequent IA_LTM calls. + */ +LIBEXPORT ia_ltm* +ia_ltm_init(const ia_binary_data *aiqb_data, + ia_mkn *ia_mkn); + +/*! + * \brief De-initialize IA_LTM. + * All memory allocated by LTM algorithms is freed. LTM handle can no longer be used. + * + * \param[in] ia_ltm Mandatory.\n + * LTM instance handle. + */ +LIBEXPORT void +ia_ltm_deinit(ia_ltm *ia_ltm); + +/*! + * \brief Input parameter structure for LTM/DRC algorithm. + * Although all the input statistics and image are optional, one of them is always needed. + * While certain LTM algorithms (selectable from tunings) can utilize different input, all algorithms can operate on ia_ltm_input_image data. + * Notice that input image or statistics may or may not contain WB gains and CCM applied. + */ +typedef struct ia_ltm_input_params +{ + ia_ltm_level ltm_level; /*!< Mandatory. LTM level. -1 to use tuning defaults.*/ + ia_aiq_frame_use frame_use; /*!< Mandatory. Target frame type of the LTM calculations (Preview, Still, video etc.). */ + float ev_shift; /*!< Optional. Exposure Value shift [-4,4]. */ + char ltm_strength_manual; /*!< Optional. user defined manual control for ltm strength, will be casted into unsigned char, [0, 200], default is 100 and means no manual effect*/ + ia_aiq_ae_results *ae_results; /*!< Optional. AEC output will be used by LTM.*/ + int16_t frame_width; /*!< Mandatory. Width of the frame where the results will be applied. */ + int16_t frame_height; /*!< Mandatory. Height of the frame where the results will be applied. */ + ia_aiq_rgbs_grid *rgbs_grid_ptr; /*!< Optional. RGBS statistics. LTM may use this small grid instead of given larger grids to reduce PnP (available in IPU4 and onwards). */ + ia_aiq_hdr_rgbs_grid *hdr_rgbs_grid_ptr;/*!< Optional. HDR RGBS statistics. LTM may use this small grid instead of given larger grids to reduce PnP (available in IPU4 and onwards). */ + ia_ltm_input_image *input_image_ptr; /*!< Optional. Image data of any resolution based on IQ requirements for particular use case from which LTM calculates local tone maps (HW generated image available in IPU5 and onwards). */ +} ia_ltm_input_params; + +/*! + * \brief LTM calculation based on input parameters and frame statistics. + * + * \param[in] ia_ltm Mandatory.\n + * LTM instance handle. + * \param[in] ltm_input_params Mandatory.\n + * Input parameters for LTM calculations. + * \param[out] ltm_results Mandatory.\n + * Pointer's pointer where address of LTM results are stored. + * \return Error code. + */ +LIBEXPORT ia_err +ia_ltm_run(ia_ltm *ia_ltm, + const ia_ltm_input_params *ltm_input_params, + ia_ltm_results **ltm_results, + ia_ltm_drc_params **ltm_results_drc); + +/*! + * \brief Get version. + * Get version from version header. + * + * \return Version string. + */ +LIBEXPORT const char* ia_ltm_get_version(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* _IA_LTM_H_ */ |