#ifndef _EZNN_API_H_
#define _EZNN_API_H_

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#ifndef MAX_CLASSIFICATION_DET_NUM
#define MAX_CLASSIFICATION_DET_NUM 256
#endif


typedef enum EzaxImageFormat_e {
	EZAX_YUV420_SP = 0x02,
	EZAX_YVU420_SP = 0x04,
	EZAX_BGRA  = 0x09,
} ezax_img_fmt_e;


typedef struct ezax_imres
{
	/* picture resolution */
	int w; int h;
}ezax_imres_t;


typedef struct ezax_freq
{
	/*dev_id; freq*/
	int id; int freq;
}ezax_freq_t;


typedef struct ezax_rt
{
	/* left top */
	int x0;	int y0;
	/* right bottom */
	int x1;	int y1;
	/* class */
	int c;
	/* score */
	float s;
	/* id */
	int id;
	/* area */
	int area;
	/* exit */
	int exist;
	/* input extern information such as ezax_face_kpts_t */
	void *in_ex_inform;
	/* output extern information*/
	void *out_ex_inform;
	/* rsved */
	int rev;
}ezax_rt_t;


typedef struct ezax_boxes
{
	/* roi boxes */
	ezax_rt_t *pRect;
	/* rect num */
	int num;
	/* */
	unsigned int nUID;
	/* rzv inform */
	void *rzv;
}ezax_boxes_t;


typedef struct ezax_img_handle {
	/* vir addr*/
	void *pVir;
	void *pVir_UV;
	/* phy addr*/
	unsigned int pPhy;
	unsigned int pPhy_UV;
	/* size */
	int sz;
	/* fmt */
	int fmt;
	/* iw */
	int w;
	/* ih */
	int h;
	/* channels */
	int c;
	/* wstride */
	int stride;
	/* color matrixs */
	int csc_mode;
} ezax_img_handle_t;

typedef struct ezax_img
{
	/* img_handle */
	ezax_img_handle_t img_handle;
	/* valid roi */
	ezax_rt_t roi;
	/* input extern information such as ezax_face_kpts_t*/
	unsigned int nUID;
	/* reved */
	unsigned int rzv;
}ezax_img_t;


typedef struct ezax_img_batch
{
	/* batch images */
	ezax_img_t *pImg;
	/* batch num */
	unsigned int nNum;
}ezax_img_batch_t;


typedef struct ezax_img_rois
{
	/* img_handle */
	ezax_img_handle_t img_handle;
	/* valid roi */
	ezax_rt_t *roi;
	/* roi num */
	int roi_num;
	/* */
	unsigned int nUID;
	/* reserved */
	unsigned int rzv;
}ezax_img_rois_t;


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif
