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__
 |