164 lines
4.2 KiB
C
164 lines
4.2 KiB
C
#ifndef __EXTEND_INTERFACE_H__
|
|
#define __EXTEND_INTERFACE_H__
|
|
|
|
/******************************************************
|
|
This is the IPC interface to support extended features without NPU involvement.
|
|
Such as: IE operation, auxiliary computation, etc.
|
|
******************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "stdint.h"
|
|
|
|
#ifndef BOOLEAN_DEFINED
|
|
#ifndef boolean
|
|
typedef char boolean;
|
|
#endif
|
|
#define BOOLEAN_DEFINED
|
|
#endif
|
|
|
|
#define MAX_INT_FOR_ALIGN 0x10000000
|
|
|
|
/*************************************************************************
|
|
IE interfaces
|
|
**************************************************************************/
|
|
|
|
#define CFG_IE_MESH_POINTS_ONLINE (DISABLE)
|
|
|
|
typedef enum {
|
|
OPERATION_FAILED = -1, /* Failure in doing operation */
|
|
OPERATION_SUCCESS = 1, /* Operation Succeded */
|
|
OPERATION_INVALID_PARM, /* Inavlid parameter provided */
|
|
OPERATION_NOT_SUPPORTED, /* Parameter/operation not supported */
|
|
OPERATION_ALIGN_32 = MAX_INT_FOR_ALIGN
|
|
} ext_oper_sts_t;
|
|
|
|
typedef enum {
|
|
IE_OPS_MODE_ROTATION = 0x1,
|
|
IE_OPS_MODE_DEWARP = 0x2,
|
|
IE_OPS_MODE_AFFINE = 0x4,
|
|
IE_OPS_MODE_ALIGN_32 = MAX_INT_FOR_ALIGN
|
|
} ie_ops_mode_t;
|
|
|
|
typedef enum {
|
|
IE_ANGLE_OF_ROTATION_0 = 0,
|
|
IE_ANGLE_OF_ROTATION_90 = 1,
|
|
IE_ANGLE_OF_ROTATION_180 = 2,
|
|
IE_ANGLE_OF_ROTATION_270 = 3,
|
|
IE_ANGEL_OF_ROTATE_ALIGN_32 = MAX_INT_FOR_ALIGN
|
|
} ie_angle_of_rotation_t;
|
|
|
|
struct ie_control_points_info {
|
|
uint8_t x;
|
|
uint8_t y;
|
|
};
|
|
|
|
struct ie_control_points {
|
|
uint8_t cols;
|
|
uint8_t rows;
|
|
struct ie_control_points_info infos[64];
|
|
};
|
|
|
|
struct ie_affine_matrix {
|
|
float val[2][3];
|
|
};
|
|
|
|
typedef struct ie_input_img_cfg {
|
|
uint32_t imgfmt;
|
|
uint32_t pad_mode;
|
|
int width;
|
|
int height;
|
|
int stride;
|
|
/* Crop parameters or other purposes */
|
|
int crop_top;
|
|
int crop_bottom;
|
|
int crop_left;
|
|
int crop_right;
|
|
|
|
/* Pad parameters or other purposes */
|
|
int pad_top;
|
|
int pad_bottom;
|
|
int pad_left;
|
|
int pad_right;
|
|
|
|
int flip_face;
|
|
} ie_input_img_cfg_t;
|
|
|
|
typedef struct ie_output_img_cfg {
|
|
uint32_t imgfmt;
|
|
int width;
|
|
int height;
|
|
int stride;
|
|
} ie_output_img_cfg_t;
|
|
|
|
typedef struct ie_ops_params {
|
|
ie_ops_mode_t ops_mode __attribute__((aligned (4)));
|
|
union {
|
|
ie_angle_of_rotation_t angle_of_rotation __attribute__((aligned (4)));
|
|
struct ie_affine_matrix affine;
|
|
#if CFG_IE_MESH_POINTS_ONLINE == ENABLE
|
|
struct ie_control_points ctrlps;
|
|
#endif
|
|
} u;
|
|
} ie_ops_params_t;
|
|
|
|
typedef struct ie_config {
|
|
ie_ops_params_t ops_params;
|
|
ie_input_img_cfg_t input_cfg;
|
|
ie_output_img_cfg_t output_cfg;
|
|
} ie_config_t;
|
|
|
|
typedef struct {
|
|
int frame_seq;
|
|
ie_config_t ie_cfg;
|
|
uint32_t in_buf_addr;
|
|
uint32_t in_buf_len;
|
|
uint32_t out_buf_addr;
|
|
uint32_t out_buf_len;
|
|
} ie_oper_params_t;
|
|
|
|
typedef struct {
|
|
int rslt_type;
|
|
ext_oper_sts_t sts;
|
|
|
|
/* output buf */
|
|
uint32_t out_buf_addr;
|
|
uint32_t out_filled_len;
|
|
|
|
int32_t seq_num;
|
|
} ie_oper_result_t;
|
|
|
|
/*************************************************************************
|
|
Auxilary Computation Interfaces
|
|
**************************************************************************/
|
|
|
|
typedef struct aux_compute_s {
|
|
int compute_type;
|
|
} aux_compute_config_t;
|
|
|
|
typedef struct {
|
|
int frame_seq;
|
|
aux_compute_config_t aux_compute_cfg;
|
|
uint32_t in_buf_addr;
|
|
uint32_t in_buf_len;
|
|
uint32_t out_buf_addr;
|
|
uint32_t out_buf_len;
|
|
} aux_compute_params_t;
|
|
|
|
typedef struct {
|
|
int rslt_type;
|
|
ext_oper_sts_t sts;
|
|
|
|
/* output buf */
|
|
uint32_t out_buf_addr;
|
|
uint32_t out_filled_len;
|
|
|
|
int32_t seq_num;
|
|
} aux_compute_result_t;
|
|
|
|
|
|
#endif
|
|
|