321 lines
12 KiB
C
321 lines
12 KiB
C
#ifndef __DVS_APP_H__
|
||
#define __DVS_APP_H__
|
||
|
||
#include <stdint.h>
|
||
|
||
#include "rk_aiq_mems_sensor.h"
|
||
|
||
/*
|
||
* @enum rk_dvs_format_type_t
|
||
* @brief Specify the format of input image
|
||
*/
|
||
typedef enum {
|
||
RK_DVS_PIXEL_FMT_GRAY, /**< Gray */
|
||
RK_DVS_PIXEL_FMT_NV21, /**< NV21 */
|
||
RK_DVS_PIXEL_FMT_NV12, /**< NV12 */
|
||
RK_DVS_PIXEL_FMT_NUM,
|
||
} rk_dvs_format_type_t;
|
||
|
||
#if 0
|
||
typedef struct sensor_vec_s {
|
||
union {
|
||
double v[3];
|
||
struct {
|
||
double x;
|
||
double y;
|
||
double z;
|
||
};
|
||
};
|
||
} sensor_vec_t;
|
||
|
||
typedef struct uncalib_event_s {
|
||
union {
|
||
double uncalib[3];
|
||
struct {
|
||
double x_uncalib;
|
||
double y_uncalib;
|
||
double z_uncalib;
|
||
};
|
||
};
|
||
union {
|
||
double bias[3];
|
||
struct {
|
||
double x_bias;
|
||
double y_bias;
|
||
double z_bias;
|
||
};
|
||
};
|
||
} uncalib_event_t;
|
||
|
||
typedef sensor_vec_t gyro_data_t;
|
||
typedef sensor_vec_t accel_data_t;
|
||
typedef int temperature_data_t;
|
||
|
||
typedef struct sensor_vec_all_s {
|
||
gyro_data_t gyro;
|
||
accel_data_t accel;
|
||
temperature_data_t temperature;
|
||
} sensor_vec_all_t;
|
||
|
||
typedef struct mems_sensor_event_s {
|
||
uint64_t id;
|
||
uint64_t timestamp_us;
|
||
union {
|
||
double data[16];
|
||
accel_data_t accel;
|
||
gyro_data_t gyro;
|
||
temperature_data_t temperature;
|
||
sensor_vec_all_t all;
|
||
|
||
uncalib_event_t uncalib_gyro;
|
||
uncalib_event_t uncalib_accel;
|
||
};
|
||
} mems_sensor_event_t;
|
||
#endif
|
||
|
||
struct dvsImageSize {
|
||
int width;
|
||
int height;
|
||
};
|
||
|
||
// initial params
|
||
struct initialParams {
|
||
rk_dvs_format_type_t image_format; // input image format
|
||
dvsImageSize input_image_size; // input image size
|
||
dvsImageSize output_image_size; // output image size
|
||
int image_buffer_number; // number of image buffer
|
||
int image_stride; // input image width width extra invalid pixels
|
||
int auto_scaling; // output image will be upscale
|
||
double clip_ratio_x; // clip ratio in x direction
|
||
double clip_ratio_y; // clip ratio in y direction
|
||
};
|
||
|
||
struct dvsMetaData {
|
||
int iso_speed; // iso speed
|
||
double exp_time; // exposure time. unit: second.
|
||
double
|
||
rolling_shutter_skew; // unit: second. Duration between the start of exposure for the first
|
||
// row of the image sensor,and the start of exposure for one past the
|
||
double zoom_ratio; // zoom ratio
|
||
uint64_t timestamp_sof_us; // sof time
|
||
};
|
||
|
||
// input image params
|
||
struct imageData {
|
||
int buffer_index; // image buffer index
|
||
int frame_index; // image index
|
||
int pyramid_number; // pyramid number,Range[0-4](1/2,1/4,1/8,1/16)
|
||
int* pyramid_stride; // pyramid image stride
|
||
uint8_t** pdata_pyramid; // pyramid image
|
||
uint8_t* pdata_original; // original image
|
||
dvsMetaData meta_data; // image meta data
|
||
};
|
||
|
||
//输出结构体
|
||
struct meshxyFEC {
|
||
int mesh_buffer_index; // mesh index
|
||
int image_buffer_index; // mesh表对应图像buffer的index
|
||
int image_index; // mesh表对应图像的index
|
||
int is_skip; //是否跳帧,0:不跳帧;1:跳帧,跳帧时,输出的mesh表为上一帧的mesh表
|
||
unsigned long mesh_size; // mesh表的长度
|
||
// FEC所需的四个小表
|
||
unsigned short* pMeshXI;
|
||
unsigned char* pMeshXF;
|
||
unsigned short* pMeshYI;
|
||
unsigned char* pMeshYF;
|
||
};
|
||
|
||
//接口结构体
|
||
struct dvsEngine {
|
||
void* private_data; // dvs库所需参数
|
||
};
|
||
|
||
extern "C" {
|
||
|
||
typedef int (*dvsFrameCallBackFEC)(struct dvsEngine* engine, meshxyFEC* mesh_fec);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsRegisterRemap()
|
||
* Author: lmp
|
||
* Description: callback function
|
||
* Input: engine: Engine instance pointer
|
||
* callback: callback function
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsRegisterRemap(struct dvsEngine* engine, dvsFrameCallBackFEC callback);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsPrepare()
|
||
* Author: lmp
|
||
* Description: Prepare dvs engine environment
|
||
* Input: engine: Engine instance pointer
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsPrepare(struct dvsEngine* engine);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : getMeshSize()
|
||
* Author: lmp
|
||
* Description: get mesh size
|
||
* Input: image_height: image height
|
||
* image_width: image width
|
||
* mesh_size: mesh size
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
void getMeshSize(int image_height, int image_width, int* mesh_size);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : getOriginalMeshXY()
|
||
* Author: lmp
|
||
* Description: get original mesh
|
||
* Input: image_height: image height
|
||
* image_width: image width
|
||
* clip_ratio_x:
|
||
* clip_ratio_y:
|
||
* Output: meshxyFEC: mesh
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/04/08 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
void getOriginalMeshXY(int image_width, int image_height, double clip_ratio_x, double clip_ratio_y,
|
||
meshxyFEC* pmesh_fec);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsPutImageFrame()
|
||
* Author: lmp
|
||
* Description: put image in dvs
|
||
* Input: engine: Engine instance pointer
|
||
* pimage_data: image_data
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsPutImageFrame(struct dvsEngine* engine, struct imageData* pimage_data);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsPutImageFrame()
|
||
* Author: lmp
|
||
* Description: put image in dvs
|
||
* Input: engine: Engine instance pointer
|
||
* pmesh_fec: fec mesh
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsPutMesh(struct dvsEngine* engine, struct meshxyFEC* pmesh_fec);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsPutImuFrame()
|
||
* Author: lmp
|
||
* Description: put imu data in dvs
|
||
* Input: engine: Engine instance pointer
|
||
* pimu_data: imu data
|
||
* buff_number: imu buffer number
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsPutImuFrame(struct dvsEngine* engine, mems_sensor_event_s* pimu_data, int buff_number);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsInitFromXmlFile()
|
||
* Author: lmp
|
||
* Description: initialize dvs from xml
|
||
* Input: engine: Engine instance pointer
|
||
* path: xml path
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsInitFromXmlFile(struct dvsEngine* engine, const char* path);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsInitFromFile()
|
||
* Author: lmp
|
||
* Description: initialize dvs from struct
|
||
* Input: engine: Engine instance pointer
|
||
* init_params: initial params struct
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 17/03/31 2.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsInitParams(struct dvsEngine* engine, struct initialParams* init_params);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsStart()
|
||
* Author: lmp
|
||
* Description: start dvs
|
||
* Input: engine: Engine instance pointer
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsStart(struct dvsEngine* engine);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsRequestStop()
|
||
* Author: lmp
|
||
* Description: request dvs stop
|
||
* Input: engine: Engine instance pointer
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsRequestStop(struct dvsEngine* engine);
|
||
|
||
/*************************************************************************************************
|
||
* Copyright (C),2021, Fuzhou Rockchip Co.,Ltd.
|
||
* Function name : dvsDeinit()
|
||
* Author: lmp
|
||
* Description: finish dvs
|
||
* Input: engine: Engine instance pointer
|
||
* Return: ??
|
||
* History:
|
||
* <author> <time> <version> <desc>
|
||
* lmp 15/03/21 1.0 org
|
||
*
|
||
*************************************************************************************************/
|
||
int dvsDeinit(struct dvsEngine* engine);
|
||
}
|
||
|
||
#endif // __DVS_APP_H__
|