2026-04-12 17:47:54 +08:00

144 lines
3.5 KiB
C

/*
*******************************************************************************
* Copyright (c) 2010-2021 VATICS Inc. All rights reserved.
*
* +-----------------------------------------------------------------+
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
* | |
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
* | VATICS INC. |
* +-----------------------------------------------------------------+
*
*******************************************************************************
*/
#ifndef FEC_API_H
#define FEC_API_H
#include <sys/stat.h>
#include <iniparser/iniparser.h>
#include <vmf/video_source.h>
#include <vmf/gyro_daemon.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @struct FEC_MODE
* @brief The structure for FEC MODE.
*/
typedef enum
{
FEC_MODE_1O = 0,
FEC_MODE_1R,
FEC_MODE_180_A,
FEC_MODE_180_O,
FEC_MODE_180_T,
FEC_MODE_PT
} FEC_MODE;
/**
* @struct Extra_PT
* @brief The structure for Extra_PT structure
*/
typedef struct
{
unsigned int bExtraPtEn;
unsigned int dwX[4];
unsigned int dwY[4];
} Extra_PT;
typedef struct
{
//! FEC default parameters
unsigned int lens_type;
unsigned int app_type;
float orig_zoom;
Extra_PT orig_extra_pt;
float orig_src_radius;
float orig_dst_radius;
//! p180 all direction mode
float p180a_tilt;
float p180a_zoom;
float p180a_focal;
float p180a_spin;
Extra_PT p180a_extra_pt;
//! p180 one direction mode
float p180o_tilt;
float p180o_zoom;
float p180o_focal;
float p180o_spin;
Extra_PT p180o_extra_pt;
//! p180 two direction mode
float p180t_tilt;
float p180t_zoom;
float p180t_focal;
float p180t_curvature;
float p180t_slope;
float p180t_spin;
//! p180 offset
float p180_dst_offset_x;
float p180_dst_offset_y;
float p180_dst_xy_ratio; //! range: 0.1 ~ 2
//! 1r mode
float m1r_tilt;
float m1r_zoom;
float m1r_focal;
float m1r_pan_wall;
float m1r_tilt_wall;
float m1r_dst_rotate;
Extra_PT m1r_extra_pt;
//! PT mode
char* pszDatFile;
char* pszComplexDatFile;
char* pszMrfDatFile;
} FECDefValue;
/**
* @struct EIS_T
* @brief The structure for EIS structure
*/
typedef struct
{
char* pszCurveNodesPath;
float fGyroDataGain;
unsigned int dwGridSection;
unsigned int dwMaxGridSection;
float fCropRatio;
unsigned int dwImageType;
unsigned int dwProcessMode;
unsigned int dwCoordinateTransform[3];
long long sqwTimeOffset;
unsigned int bImageRotate180;
int sdwReadoutTimeOffset; //! Offset of VIC readout time
float fReadoutTimeRatio; //! Ratio of fusion readout time. Default: 1.0
unsigned int bForceOriRs;
VMF_VSRC_GYRO_CONFIG_T tGyroConfig;
} EIS_T;
int setup_fec_mode(VMF_VSRC_HANDLE_T*, VMF_LAYOUT_T*, FEC_MODE, unsigned int);
int loadFECConfig(HOST_STREAM_INIT_OPT_T*, VMF_VSRC_FRONTEND_CONFIG_T *);
int loadCalibrateConfig(HOST_STREAM_INIT_OPT_T*, VMF_VSRC_FRONTEND_CONFIG_T *);
void free_fec_def_str(void);
#ifdef __cplusplus
}
#endif
#endif