summaryrefslogtreecommitdiff
path: root/include/ia_imaging/ia_dvs_2.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ia_imaging/ia_dvs_2.h')
-rw-r--r--include/ia_imaging/ia_dvs_2.h454
1 files changed, 454 insertions, 0 deletions
diff --git a/include/ia_imaging/ia_dvs_2.h b/include/ia_imaging/ia_dvs_2.h
new file mode 100644
index 0000000..ef9b5ec
--- /dev/null
+++ b/include/ia_imaging/ia_dvs_2.h
@@ -0,0 +1,454 @@
+/*
+ * 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.
+ */
+/** @file ia_dvs2.h
+ * IA_DVS2. This provides access to the DVS2 Host Library.
+ */
+#ifndef _IA_DVS2_H_
+#define _IA_DVS2_H_
+
+#include <stdio.h>
+#include <linux/atomisp.h>
+#include "ia_dvs2_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** DVS2 State.
+ * Host code access to the DVS2 api with this.
+ */
+typedef struct t_dvs_facade ia_dvs2_state;
+
+/** @brief Get the DVS2 version.
+ *
+ * @param[out] version text: version
+ * @return 0 for no error, others for error.
+ *
+ * This function provides the version infomation of DVS2. It is allowed to call this
+ * function at anytime include before initialization of DVS2 library.
+ */
+LIBEXPORT ia_err
+dvs_get_version(const char **version);
+
+/** @brief Initialize the DVS2 module.
+ *
+ * @param[out] dvs2_state dvs2 state.
+ * This is a pointer to a pointer to a module.
+ * @param[in] log_setup log file setups.
+ * This is a pointer to a structure which contains
+ * log settings.
+ * @param[in] debug_env IA Imaging environment.
+ * This is a pointer to a structure which contains
+ * IA Imaging environment.
+ * @return 0 for no error, others for error.
+ *
+ * This function initializes the DVS2 module. This allocates and initializes
+ * internal data structures. This function must always be called before any
+ * other dvs2 function except dvs2_get_version is called.
+ */
+LIBEXPORT ia_err
+dvs_init(ia_dvs2_state **dvs2_state,
+ const ia_binary_data *a_aiq_tuning_binary,
+ const ia_cmc_t *cmc,
+ const ia_dvs2_log_setup *log_setup,
+ const ia_env *debug_env);
+
+/** @brief Configure the DVS2 module.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * @param[in] support_config support functionality configuration
+ * @param[in] gdc_config gdc configuration
+ * @param[in] characteristics dvs2 characteristics.
+ * @param[in] digital_zoom_ratio digital zoom ratio.
+ * @param[in] bd_params use binary dump.
+ * If not needed binary dump, then set this to NULL.
+ * @return 0 for no error, others for error.
+ *
+ * This function configures the DVS2 module. This allocates and initializes
+ * internal data structures. This function must always be called after dvs2_init
+ * and before any other dvs2 function is called.
+ */
+LIBEXPORT ia_err
+dvs_config(ia_dvs2_state *dvs2_state,
+ const ia_dvs2_configuration *config,
+ float digital_zoom_ratio,
+ ia_dvs2_binary_dump_params *bd_params);
+
+/** @brief Deinitialize the DVS module.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @return 0 for no error, others for error.
+ *
+ * This function deinitilizes the DVS2 module. This frees the calocated memory.
+ */
+LIBEXPORT ia_err
+dvs_deinit(ia_dvs2_state *dvs2_state);
+
+/** @brief allocate the DVS2 coefficients.
+ *
+ * @param[in] grid grid info for coefficients.
+ * @param[out] dvs_coefs Pointer to Pointer to hor/ver coefficients.
+ * @return 0 for no error, others for error.
+ *
+ * This function allocates the memory of dvs2 coefficients.
+ * allocates the structure: ia_css_dvs2_coefficients, and set the pointer into dvs_coefs.
+ * *dvs_coefs->grid field is filled by input.
+ * *dvs_coefs->hor_coefs, *dvs_coefs->ver_coefs are outputs.
+ * Each member of *dvs_coefs->hor_coefs, *dvs_coefs->ver_coefs are set to allocated memory.
+ */
+LIBEXPORT ia_err
+dvs_allocate_coefficients(const struct atomisp_dvs_grid_info *grid, struct atomisp_dis_coefficients **dvs_coefs);
+
+/** @brief Free the DVS2 coefficients.
+ *
+ * @param[in] dvs_coefs Pointer to hor/ver coefficients.
+ * @return 0 for no error, others for error.
+ *
+ * This function frees the memory of dvs2 coefficients.
+ * Each member of vs_coefs->hor_coefs, dvs_coefs->ver_coefs are freed also.
+ */
+LIBEXPORT ia_err
+dvs_free_coefficients(struct atomisp_dis_coefficients *dvs_coefs);
+
+/** @brief Get the DVS2 coefficients.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[out] dvs_coefs Pointer to hor/ver coefficients
+ * @return 0 for no error, others for error.
+ *
+ * This function gets the dvs2 coefficients
+ */
+LIBEXPORT ia_err
+dvs_get_coefficients(const ia_dvs2_state *dvs2_state, struct atomisp_dis_coefficients *dvs_coefs);
+
+/** @brief Allocate statistics buffer.
+ *
+ * @param[in] grid grid info for statistics.
+ * @param[out] statistics Pointer to pointer to Grid statistics from ISP
+ * @return 0 for no error, others for error.
+ *
+ * Returns allocated DVS statistics.
+ */
+LIBEXPORT ia_err
+dvs_allocate_statistics(const struct atomisp_dvs_grid_info *grid, struct atomisp_dvs2_statistics **statistics);
+
+/** @brief Free statistics buffer.
+ *
+ * @param[in] statistics Pointer to Grid statistics from ISP
+ * @return 0 for no error, others for error.
+ *
+ * Free the statistics buffer.
+ */
+LIBEXPORT ia_err
+dvs_free_statistics(struct atomisp_dvs2_statistics *statistics);
+
+/** @brief Set the DVS2 statistics.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] statistics Pointer to Grid statistics from ISP
+ * @return 0 for no error, others for error.
+ *
+ * This function receives the inner product from the ISP.
+ */
+LIBEXPORT ia_err
+dvs_set_statistics(ia_dvs2_state *dvs2_state, const struct atomisp_dvs2_statistics *statistics);
+
+/** @brief Execute DVS2 main process.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @return 0 for no error, others for error.
+ *
+ * This function processes the DVS2 main functionality. This generates a
+ * GDC morphing table.
+ */
+LIBEXPORT ia_err
+dvs_execute(ia_dvs2_state *dvs2_state);
+
+/** @brief allocate the DVS2 morphing table.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[out] morph_table Pointer to Pointer to morphing table.
+ * @return 0 for no error, others for error.
+ *
+ * This function allocates the memory of dvs2 morphing table.
+ * This allocates the struct atomisp_dvs_6axis_config itself, and the members in the structure.
+ */
+LIBEXPORT ia_err
+dvs_allocate_morph_table(ia_dvs2_state *dvs2Lib, struct atomisp_dvs_6axis_config **morph_table);
+
+/** @brief Free the DVS2 morphing table.
+ *
+ * @param[in] morph_table Pointer to morphing table.
+ * @return 0 for no error, others for error.
+ *
+ * This function frees the memory of dvs2 morphing table.
+ * Each allocated member in morph_table, and morph_table itself are freed.
+ */
+LIBEXPORT ia_err
+dvs_free_morph_table(struct atomisp_dvs_6axis_config *morph_table);
+
+/** @brief Get the GDC morphing table.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[out] morph_table Pointer to the GDC morph table
+ * @return 0 for no error, others for error.
+ *
+ * This function gets the calculated GDC morphing table.
+ */
+LIBEXPORT ia_err
+dvs_get_morph_table(ia_dvs2_state *dvs2_state,
+ struct atomisp_dvs_6axis_config *morph_table);
+
+/** @brief Output log of the GDC morphing table.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] log_path log file path.
+ * This is a pointer to a log file path.
+ * @return 0 for no error, others for error.
+ *
+ * This function outputs the calculated GDC morphing table log.
+ */
+LIBEXPORT ia_err
+dvs_morph_table_log(ia_dvs2_state *dvs2_state,
+ const char *log_path);
+
+/** @brief Set no blanking ratio.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] nonblanking_ratio non blanking ratio.
+ * Value 0.0 means no rolling shutter correction.
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the rolling shutter correction effect.
+ */
+LIBEXPORT ia_err
+dvs_set_non_blank_ratio(ia_dvs2_state *dvs2_state, float nonblanking_ratio);
+
+/** @brief Set the local motion coring threshold.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] min_local_motion local motion coring threshold.
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the local motion coring threshold.
+ */
+LIBEXPORT ia_err
+dvs_set_min_local_motion(ia_dvs2_state *dvs2_state, float min_local_motion);
+
+/** @brief Set Cut off frequency (for video only).
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] cutoff_frequency cut off frequency.
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the cut off frequency.
+ */
+LIBEXPORT ia_err
+dvs_set_cut_off_frequency(ia_dvs2_state *dvs2_state, float *cutoff_frequency);
+
+/** @brief Set digital zoom magnitude.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] magnitude digital zoom magnitude
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the digital zoom magnitude
+ */
+LIBEXPORT ia_err
+dvs_set_digital_zoom_magnitude(ia_dvs2_state *dvs2_state, float magnitude);
+
+/* */
+/** @brief Set Distortion Coefficient.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] distortion distortion coefficients.
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the distortion coefficient.
+ */
+LIBEXPORT ia_err
+dvs_set_distortion_coeff(ia_dvs2_state *dvs2_state, const ia_dvs2_distortion_coefs *distortion);
+
+/** @brief Set the wavelength of detector vector in BQs.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] wave_length wave length of detector vector in BQs.
+ * recommended: 1.0*AreaSize for DVS
+ * 0.5*AreaSize for DIS
+ * @return 0 for no error, others for error.
+ *
+ * This function specifies the avelength of detector vector.
+ * This re-calculates the coefficients, so should call dvs2_get_coefficients()
+ * after this was called.
+ */
+LIBEXPORT ia_err
+dvs_set_wave_length(ia_dvs2_state *dvs2_state, float wave_length);
+
+/** @brief Reset the inter_frame parameter.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @return 0 for no error, others for error.
+ *
+ * This function resets the inter_frame parameter.
+ */
+LIBEXPORT ia_err
+dvs_reset_interframe_parameter(ia_dvs2_state *dvs2_state);
+
+/** @brief Get the pointer to inner product.
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[out] v_product pointer to a pointer to the virtical inner product.
+ * @param[out] h_product pointer to a pointer to the horizontal inner product.
+ * @return 0 for no error, others for error.
+ *
+ * This function provides the pointer to the inner product.
+ */
+LIBEXPORT ia_err
+dvs_get_prod_ptr(const ia_dvs2_state *dvs2_state, float **v_product, float **h_product);
+
+/** @brief Set enable flag to main log module.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] enable Enable flag.
+ * @return 0 for no error, others for error.
+ *
+ * This function sets enable flag to main log module.
+ */
+LIBEXPORT ia_err
+dvs_set_enable_info_log(ia_dvs2_state *dvs2_state, int enable);
+
+/** @brief Set enable flag to GDC log module.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] enable Enable flag.
+ * @return 0 for no error, others for error.
+ *
+ * This function sets enable flag to GDC log module.
+ */
+LIBEXPORT ia_err
+dvs_set_enable_gdc_log(ia_dvs2_state *dvs2_state, int enable);
+
+/** @brief Set enable flag to FP log module.
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[in] enable Enable flag.
+ * @return 0 for no error, others for error.
+ *
+ * This function sets enable flag to FP log module.
+ */
+LIBEXPORT ia_err
+dvs_set_enable_fp_log(ia_dvs2_state *dvs2_state, int enable);
+
+/** @brief Check gdc constraints
+ *
+ * @param[in] dvs2_state dvs2 state.
+ * This is a pointer to a module.
+ * @param[out] valid 1 for gdc setup is valid, 0 for invalid.
+ * @param[in] gdc_hw_config GDC hardware configuration info.
+ * @return 0 for no error, others for error.
+ *
+ * This function checks whether gdc setup is valid or not.
+ */
+LIBEXPORT ia_err
+dvs_check_gdc_constraints(ia_dvs2_state *dvs2_state, int *valid, ia_dvs2_gdc_hw_configuration *gdc_hw_config);
+
+/** @brief Start dvs2 debug log.
+ *
+ * @param[in] endless true for endess mode, false for full-end mode.
+ * @return 0 for no error, others for error.
+ *
+ * This function sets enable to debug log.
+ * Endless mode dumps log into buffer circularly.
+ * Full-end mode dumps log into buffer by full.
+ * If buffer is full, stops to dump in full-end mode.
+ */
+LIBEXPORT ia_err
+dvs_start_dbglog(bool endless);
+
+/** @brief Stop dvs2 debug log.
+ *
+ * @return 0 for no error, others for error.
+ *
+ * This function sets disable to debug log.
+ */
+LIBEXPORT ia_err
+dvs_stop_dbglog(void);
+
+/** @brief Resets dvs2 debug log.
+ *
+ * @return 0 for no error, others for error.
+ *
+ * This function resets the buffer counter to 0 and clear the buffer (fill by 0).
+ * In full-end mode, log is activated again.
+ */
+LIBEXPORT ia_err
+dvs_reset_dbglog(void);
+
+/** @brief Denitiaize dvs2 debug log.
+ *
+ * @return 0 for no error, others for error.
+ *
+ * This function deinitializes dvs2 debug log.
+ */
+LIBEXPORT ia_err
+dvs_deinit_dbglog(void);
+
+/** @brief Set enable flag to item of binary dump.
+ *
+ * @param[in] item binary dump item.
+ * @param[in] enable Enable flag.
+ * @return 0 for no error, others for error.
+ *
+ * This function sets enable flag to item of binary dump.
+ */
+LIBEXPORT ia_err
+dvs_set_enable_dbglog_item(ia_dvs2_binary_dump_item item, bool enable);
+
+/** @brief Writes binary dump data into the file.
+ *
+ * @param[in] fp file pointer to be writen log.
+ * @return 0 for no error, others for error.
+ *
+ * This function writes log into the file.
+ */
+LIBEXPORT ia_err
+dvs_fwrite_dbglog(FILE *fp);
+
+LIBEXPORT ia_err
+dvs_dump_prods(ia_dvs2_state *dvs2_state, const struct atomisp_dvs2_statistics *dvs_stats);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IA_DVS2_H_ */