mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			463 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			463 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
| /******************************************************************************
 | |
| 
 | |
|   Copyright (C), 2001-2014, Hisilicon Tech. Co., Ltd.
 | |
| 
 | |
|  ******************************************************************************
 | |
|   File Name     : hi_comm_ive.h
 | |
|   Version       : Initial Draft
 | |
|   Author        : Hisilicon multimedia software (IVE) group
 | |
|   Created       : 2011/05/16
 | |
|   Description   :
 | |
|   1.Date        : 2011/05/16
 | |
|     Modification: Created file
 | |
| 
 | |
|   2.Date        : 2013/07/01~2014/08/08
 | |
|     Modification: Add MPI function
 | |
| ******************************************************************************/
 | |
| #ifndef _HI_COMM_IVE_H_
 | |
| #define _HI_COMM_IVE_H_
 | |
| 
 | |
| #include "hi_type.h"
 | |
| #include "hi_errno.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| #if __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| /* -----------------------------------------------*
 | |
|  * The fixed-point data type, will be used to    *
 | |
|  * represent float data in hardware calculations.*
 | |
|  * ----------------------------------------------- */
 | |
| /* --u8bit---------------------------------------- */
 | |
| typedef unsigned char HI_U0Q8;
 | |
| typedef unsigned char HI_U1Q7;
 | |
| typedef unsigned char HI_U5Q3;
 | |
| typedef unsigned char HI_U3Q5;
 | |
| 
 | |
| /* --u16bit--------------------------------------- */
 | |
| typedef unsigned short HI_U0Q16;
 | |
| typedef unsigned short HI_U4Q12;
 | |
| typedef unsigned short HI_U6Q10;
 | |
| typedef unsigned short HI_U8Q8;
 | |
| typedef unsigned short HI_U9Q7;
 | |
| typedef unsigned short HI_U12Q4;
 | |
| typedef unsigned short HI_U14Q2;
 | |
| typedef unsigned short HI_U5Q11;
 | |
| typedef unsigned short HI_U1Q15;
 | |
| typedef unsigned short HI_U2Q14;
 | |
| typedef HI_U6Q10 HI_UFP16;
 | |
| /* --s16bit--------------------------------------- */
 | |
| typedef short HI_S9Q7;
 | |
| typedef short HI_S14Q2;
 | |
| typedef short HI_S1Q15;
 | |
| 
 | |
| /* --u32bit--------------------------------------- */
 | |
| typedef unsigned int HI_U22Q10;
 | |
| typedef unsigned int HI_U25Q7;
 | |
| typedef unsigned int HI_U21Q11;
 | |
| typedef unsigned int HI_U14Q18;
 | |
| typedef unsigned int HI_U8Q24;
 | |
| typedef unsigned int HI_U4Q28;
 | |
| 
 | |
| /* --s32bit--------------------------------------- */
 | |
| typedef int HI_S25Q7;
 | |
| typedef int HI_S16Q16;
 | |
| typedef int HI_S14Q18;
 | |
| typedef int HI_S20Q12;
 | |
| 
 | |
| typedef int HI_S24Q8;
 | |
| 
 | |
| /* -----------------------------------------------*
 | |
|  * The fixed-point data type combine with flag_bits.*
 | |
|  * ----------------------------------------------- */
 | |
| /* 8bits unsigned integer,4bits decimal fraction,4bits flag_bits */
 | |
| typedef unsigned short HI_U8Q4F4;
 | |
| 
 | |
| /* -----------------------------------------------*
 | |
|  * The fixed-point data type, will be used to    *
 | |
|  * represent float data in hardware calculations. linux code style.*
 | |
|  * ----------------------------------------------- */
 | |
| /* --u8bit---------------------------------------- */
 | |
| typedef HI_U0Q8 hi_u0q8;
 | |
| typedef HI_U1Q7 hi_u1q7;
 | |
| typedef HI_U5Q3 hi_u5q3;
 | |
| typedef HI_U3Q5 hi_u3q5;
 | |
| 
 | |
| /* --u16bit--------------------------------------- */
 | |
| typedef HI_U0Q16 hi_u0q16;
 | |
| typedef HI_U4Q12 hi_u4q12;
 | |
| typedef HI_U6Q10 hi_u6q10;
 | |
| typedef HI_U8Q8  hi_u8q8;
 | |
| typedef HI_U9Q7  hi_u9q7;
 | |
| typedef HI_U12Q4 hi_u12q4;
 | |
| typedef HI_U14Q2 hi_u14q2;
 | |
| typedef HI_U5Q11 hi_u5q11;
 | |
| typedef HI_U1Q15 hi_u1q15;
 | |
| typedef HI_U2Q14 hi_u2q14;
 | |
| typedef HI_UFP16 hi_ufp16;
 | |
| /* 8bits unsigned integer,4bits decimal fraction,4bits flag_bits */
 | |
| typedef HI_U8Q4F4 hi_u8q4f4;
 | |
| 
 | |
| /* --s16bit--------------------------------------- */
 | |
| typedef HI_S9Q7  hi_s9q7;
 | |
| typedef HI_S14Q2 hi_s14q2;
 | |
| typedef HI_S1Q15 hi_s1q15;
 | |
| 
 | |
| /* --u32bit--------------------------------------- */
 | |
| typedef HI_U22Q10 hi_u22q10;
 | |
| typedef HI_U25Q7  hi_u25q7;
 | |
| typedef HI_U21Q11 hi_u21q11;
 | |
| typedef HI_U14Q18 hi_u14q18;
 | |
| typedef HI_U8Q24  hi_u8q24;
 | |
| typedef HI_U4Q28  hi_u4q28;
 | |
| 
 | |
| /* --s32bit--------------------------------------- */
 | |
| typedef HI_S25Q7  hi_s25q7;
 | |
| typedef HI_S16Q16 hi_s16q16;
 | |
| typedef HI_S14Q18 hi_s14q18;
 | |
| typedef HI_S20Q12 hi_s20q12;
 | |
| typedef HI_S24Q8  hi_s24q8;
 | |
| 
 | |
| 
 | |
| /* Type of the IVE_IMAGE_S data.Aded by tanbing 2013-7-22 */
 | |
| typedef enum hiIVE_IMAGE_TYPE_E {
 | |
|     IVE_IMAGE_TYPE_U8C1 = 0x0,
 | |
|     IVE_IMAGE_TYPE_S8C1 = 0x1,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_YUV420SP = 0x2, /* YUV420 SemiPlanar */
 | |
|     IVE_IMAGE_TYPE_YUV422SP = 0x3, /* YUV422 SemiPlanar */
 | |
|     IVE_IMAGE_TYPE_YUV420P = 0x4,  /* YUV420 Planar */
 | |
|     IVE_IMAGE_TYPE_YUV422P = 0x5,  /* YUV422 planar */
 | |
| 
 | |
|     IVE_IMAGE_TYPE_S8C2_PACKAGE = 0x6,
 | |
|     IVE_IMAGE_TYPE_S8C2_PLANAR = 0x7,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_S16C1 = 0x8,
 | |
|     IVE_IMAGE_TYPE_U16C1 = 0x9,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_U8C3_PACKAGE = 0xa,
 | |
|     IVE_IMAGE_TYPE_U8C3_PLANAR = 0xb,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_S32C1 = 0xc,
 | |
|     IVE_IMAGE_TYPE_U32C1 = 0xd,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_S64C1 = 0xe,
 | |
|     IVE_IMAGE_TYPE_U64C1 = 0xf,
 | |
| 
 | |
|     IVE_IMAGE_TYPE_BUTT
 | |
| 
 | |
| } IVE_IMAGE_TYPE_E;
 | |
| 
 | |
| /* Definition of the IVE_IMAGE_S. Added by Tan Bing, 2013-7-22. */
 | |
| typedef struct hiIVE_IMAGE_S {
 | |
|     HI_U64 au64PhyAddr[3];   /* RW;The physical address of the image */
 | |
|     HI_U64 au64VirAddr[3];   /* RW;The virtual address of the image */
 | |
|     HI_U32 au32Stride[3];    /* RW;The stride of the image */
 | |
|     HI_U32 u32Width;         /* RW;The width of the image */
 | |
|     HI_U32 u32Height;        /* RW;The height of the image */
 | |
|     IVE_IMAGE_TYPE_E enType; /* RW;The type of the image */
 | |
| } IVE_IMAGE_S;
 | |
| 
 | |
| typedef IVE_IMAGE_S IVE_SRC_IMAGE_S;
 | |
| typedef IVE_IMAGE_S IVE_DST_IMAGE_S;
 | |
| 
 | |
| /*
 | |
| * Definition of the IVE_MEM_INFO_S.This struct special purpose for input or ouput, such as Hist, CCL, ShiTomasi.
 | |
| * Added by Chen Quanfu, 2013-7-23.
 | |
| */
 | |
| typedef struct hiIVE_MEM_INFO_S {
 | |
|     HI_U64 u64PhyAddr; /* RW;The physical address of the memory */
 | |
|     HI_U64 u64VirAddr; /* RW;The virtual address of the memory */
 | |
|     HI_U32 u32Size;    /* RW;The size of memory */
 | |
| } IVE_MEM_INFO_S;
 | |
| typedef IVE_MEM_INFO_S IVE_SRC_MEM_INFO_S;
 | |
| typedef IVE_MEM_INFO_S IVE_DST_MEM_INFO_S;
 | |
| 
 | |
| /* Data struct ,created by Chen Quanfu 2013-07-19 */
 | |
| typedef struct hiIVE_DATA_S {
 | |
|     HI_U64 u64PhyAddr; /* RW;The physical address of the data */
 | |
|     HI_U64 u64VirAddr; /* RW;The virtaul address of the data */
 | |
| 
 | |
|     HI_U32 u32Stride; /* RW;The stride of 2D data by byte */
 | |
|     HI_U32 u32Width;  /* RW;The width of 2D data by byte */
 | |
|     HI_U32 u32Height; /* RW;The height of 2D data by byte */
 | |
| 
 | |
|     HI_U32 u32Reserved;
 | |
| } IVE_DATA_S;
 | |
| typedef IVE_DATA_S IVE_SRC_DATA_S;
 | |
| typedef IVE_DATA_S IVE_DST_DATA_S;
 | |
| 
 | |
| /* Definition of the union of IVE_8BIT_U.Added by Tan Bing, 2013-7-22. */
 | |
| typedef union hiIVE_8BIT_U {
 | |
|     HI_S8 s8Val;
 | |
|     HI_U8 u8Val;
 | |
| } IVE_8BIT_U;
 | |
| 
 | |
| /* Definition of u16 point */
 | |
| typedef struct hiIVE_POINT_U16_S {
 | |
|     HI_U16 u16X; /* RW;The X coordinate of the point */
 | |
|     HI_U16 u16Y; /* RW;The Y coordinate of the point */
 | |
| } IVE_POINT_U16_S;
 | |
| 
 | |
| /*
 | |
| * Definition of s16 point
 | |
| */
 | |
| typedef struct hiIVE_POINT_S16_S {
 | |
|     HI_U16 s16X; /* RW;The X coordinate of the point */
 | |
|     HI_U16 s16Y; /* RW;The Y coordinate of the point */
 | |
| } IVE_POINT_S16_S;
 | |
| 
 | |
| /*
 | |
| * Float point represented by Fixed-point SQ25.7
 | |
| */
 | |
| typedef struct hiIVE_POINT_S25Q7_S {
 | |
|     HI_S25Q7 s25q7X; /* RW;The X coordinate of the point */
 | |
|     HI_S25Q7 s25q7Y; /* RW;The Y coordinate of the point */
 | |
| } IVE_POINT_S25Q7_S;
 | |
| 
 | |
| /*
 | |
| * Point u14q2
 | |
| */
 | |
| typedef struct hiIVE_POINT_U14Q2_S {
 | |
|     HI_U14Q2 u14q2X;
 | |
|     HI_U14Q2 u14q2Y;
 | |
| } IVE_POINT_U14Q2_S;
 | |
| 
 | |
| /* Definition of rectangle */
 | |
| typedef struct hiIVE_RECT_U16_S {
 | |
|     HI_U16 u16X;      /* RW;The location of X axis of the rectangle */
 | |
|     HI_U16 u16Y;      /* RW;The location of Y axis of the rectangle */
 | |
|     HI_U16 u16Width;  /* RW;The width of the rectangle */
 | |
|     HI_U16 u16Height; /* RW;The height of the rectangle */
 | |
| } IVE_RECT_U16_S;
 | |
| 
 | |
| typedef struct hiIVE_RECT_U32_S {
 | |
|     HI_U32 u32X;      /* RW;The location of X axis of the rectangle */
 | |
|     HI_U32 u32Y;      /* RW;The location of Y axis of the rectangle */
 | |
|     HI_U32 u32Width;  /* RW;The width of the rectangle */
 | |
|     HI_U32 u32Height; /* RW;The height of the rectangle */
 | |
| } IVE_RECT_U32_S;
 | |
| 
 | |
| typedef struct hiIVE_RECT_S24Q8_S {
 | |
|     HI_S24Q8 s24q8X;
 | |
|     HI_S24Q8 s24q8Y;
 | |
|     HI_U32 u32Width;
 | |
|     HI_U32 u32Height;
 | |
| } IVE_RECT_S24Q8_S;
 | |
| 
 | |
| typedef struct hiIVE_LOOK_UP_TABLE_S {
 | |
|     IVE_MEM_INFO_S stTable;
 | |
|     HI_U16 u16ElemNum; /* RW;LUT's elements number */
 | |
| 
 | |
|     HI_U8 u8TabInPreci;
 | |
|     HI_U8 u8TabOutNorm;
 | |
| 
 | |
|     HI_S32 s32TabInLower; /* RW;LUT's original input lower limit */
 | |
|     HI_S32 s32TabInUpper; /* RW;LUT's original input upper limit */
 | |
| } IVE_LOOK_UP_TABLE_S;
 | |
| 
 | |
| /* Blob type */
 | |
| typedef enum hiIVE_BLOB_TYPE_E {
 | |
|     IVE_BLOB_TYPE_S32 = 0x0,
 | |
| 
 | |
|     IVE_BLOB_TYPE_U8 = 0x1,
 | |
| 
 | |
|     /* channel = 3 */
 | |
|     IVE_BLOB_TYPE_YVU420SP = 0x2,
 | |
|     /* channel = 3 */
 | |
|     IVE_BLOB_TYPE_YVU422SP = 0x3,
 | |
| 
 | |
|     IVE_BLOB_TYPE_VEC_S32 = 0x4,
 | |
| 
 | |
|     IVE_BLOB_TYPE_SEQ_S32 = 0x5,
 | |
| 
 | |
|     IVE_BLOB_TYPE_U16 = 0x6,
 | |
| 
 | |
|     IVE_BLOB_TYPE_S8 = 0x7,
 | |
| 
 | |
|     IVE_BLOB_TYPE_F32 = 0x8,
 | |
| 
 | |
|     IVE_BLOB_TYPE_BUTT
 | |
| } IVE_BLOB_TYPE_E;
 | |
| 
 | |
| /****************************** Blob struct ******************************
 | |
| In Caffe, the blob contain shape info as the following order:
 | |
| Image\FeatureMap:               N       C       H       W
 | |
| FC(normal vector):              N       C
 | |
| RNN\LSTM(Recurrent) vector:     T       N       D
 | |
| 
 | |
| The relationship of the following blob struct with Caffe blob is as follows:
 | |
| Image\FeatureMap:               Num    Chn    Height   With
 | |
| FC(VEC_S32):                    Num    Width
 | |
| RNN\LSTM(SEQ_S32) vector:       Step   Num     Dim
 | |
| The stride, which measuring unit is byte, is always algined by the width or
 | |
| dim direction.
 | |
| **************************************************************************/
 | |
| typedef struct hiIVE_BLOB_S {
 | |
|     IVE_BLOB_TYPE_E enType; /* Blob type */
 | |
|     HI_U32 u32Stride;       /* Stride, a line bytes num */
 | |
| 
 | |
|     HI_U64 u64VirAddr; /* virtual addr */
 | |
|     HI_U64 u64PhyAddr; /* physical addr */
 | |
| 
 | |
|     HI_U32 u32Num; /* N: frame num or sequence num,correspond to caffe blob's n */
 | |
|     union {
 | |
|         struct {
 | |
|             HI_U32 u32Width;  /* W: frame width, correspond to caffe blob's w */
 | |
|             HI_U32 u32Height; /* H: frame height, correspond to caffe blob's h */
 | |
|             HI_U32 u32Chn;    /* C: frame channel,correspond to caffe blob's c */
 | |
|         } stWhc;
 | |
|         struct {
 | |
|             HI_U32 u32Dim;         /* D: vecotr dimension */
 | |
|             HI_U64 u64VirAddrStep; /* T: virtual adress of   time steps array in each sequence */
 | |
|         } stSeq;
 | |
|     } unShape;
 | |
| 
 | |
| } IVE_BLOB_S;
 | |
| 
 | |
| typedef IVE_BLOB_S IVE_SRC_BLOB_S;
 | |
| typedef IVE_BLOB_S IVE_DST_BLOB_S;
 | |
| 
 | |
| typedef enum hiEN_IVE_ERR_CODE_E {
 | |
|     ERR_IVE_SYS_TIMEOUT = 0x40,   /* IVE process timeout */
 | |
|     ERR_IVE_QUERY_TIMEOUT = 0x41, /* IVE query timeout */
 | |
|     ERR_IVE_OPEN_FILE = 0x42,     /* IVE open file error */
 | |
|     ERR_IVE_READ_FILE = 0x43,     /* IVE read file error */
 | |
|     ERR_IVE_WRITE_FILE = 0x44,    /* IVE write file error */
 | |
|     ERR_IVE_BUS_ERR = 0x45,
 | |
| 
 | |
|     ERR_IVE_BUTT
 | |
| } EN_IVE_ERR_CODE_E;
 | |
| 
 | |
| typedef enum hiEN_FD_ERR_CODE_E {
 | |
|     ERR_FD_SYS_TIMEOUT = 0x40,   /* FD process timeout */
 | |
|     ERR_FD_CFG = 0x41,           /* FD configuration error */
 | |
|     ERR_FD_FACE_NUM_OVER = 0x42, /* FD candidate face number over */
 | |
|     ERR_FD_OPEN_FILE = 0x43,     /* FD open file error */
 | |
|     ERR_FD_READ_FILE = 0x44,     /* FD read file error */
 | |
|     ERR_FD_WRITE_FILE = 0x45,    /* FD write file error */
 | |
| 
 | |
|     ERR_FD_BUTT
 | |
| } EN_FD_ERR_CODE_E;
 | |
| 
 | |
| /************************************************IVE error code ***********************************/
 | |
| /* Invalid device ID */
 | |
| #define HI_ERR_IVE_INVALID_DEVID HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
 | |
| /* Invalid channel ID */
 | |
| #define HI_ERR_IVE_INVALID_CHNID HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
 | |
| /* At least one parameter is illegal. For example, an illegal enumeration value exists. */
 | |
| #define HI_ERR_IVE_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
 | |
| /* The channel exists. */
 | |
| #define HI_ERR_IVE_EXIST HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST)
 | |
| /* The UN exists. */
 | |
| #define HI_ERR_IVE_UNEXIST HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
 | |
| /* A null point is used. */
 | |
| #define HI_ERR_IVE_NULL_PTR HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
 | |
| /* Try to enable or initialize the system, device, or channel before configuring attributes. */
 | |
| #define HI_ERR_IVE_NOT_CONFIG HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
 | |
| /* The operation is not supported currently. */
 | |
| #define HI_ERR_IVE_NOT_SURPPORT HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
 | |
| /* The operation, changing static attributes for example, is not permitted. */
 | |
| #define HI_ERR_IVE_NOT_PERM HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
 | |
| /* A failure caused by the malloc memory occurs. */
 | |
| #define HI_ERR_IVE_NOMEM HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
 | |
| /* A failure caused by the malloc buffer occurs. */
 | |
| #define HI_ERR_IVE_NOBUF HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
 | |
| /* The buffer is empty. */
 | |
| #define HI_ERR_IVE_BUF_EMPTY HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
 | |
| /* No buffer is provided for storing new data. */
 | |
| #define HI_ERR_IVE_BUF_FULL HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
 | |
| /* The system is not ready because it may be not initialized or loaded.
 | |
|  * The error code is returned when a device file fails to be opened. */
 | |
| #define HI_ERR_IVE_NOTREADY HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
 | |
| /* The source address or target address is incorrect during the operations such as calling 
 | |
| copy_from_user or copy_to_user. */
 | |
| #define HI_ERR_IVE_BADADDR HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_BADADDR)
 | |
| /* The resource is busy during the operations such as destroying a VENC channel 
 | |
| without deregistering it. */
 | |
| #define HI_ERR_IVE_BUSY HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
 | |
| /* IVE process timeout: 0xA01D8040 */
 | |
| #define HI_ERR_IVE_SYS_TIMEOUT HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_SYS_TIMEOUT)
 | |
| /* IVE query timeout: 0xA01D8041 */
 | |
| #define HI_ERR_IVE_QUERY_TIMEOUT HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_QUERY_TIMEOUT)
 | |
| /* IVE open file error: 0xA01D8042 */
 | |
| #define HI_ERR_IVE_OPEN_FILE HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_OPEN_FILE)
 | |
| /* IVE read file error: 0xA01D8043 */
 | |
| #define HI_ERR_IVE_READ_FILE HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_READ_FILE)
 | |
| /* IVE read file error: 0xA01D8044 */
 | |
| #define HI_ERR_IVE_WRITE_FILE HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_WRITE_FILE)
 | |
| /* IVE Bus error: 0xA01D8045 */
 | |
| #define HI_ERR_IVE_BUS_ERR HI_DEF_ERR(HI_ID_IVE, EN_ERR_LEVEL_ERROR, ERR_IVE_BUS_ERR)
 | |
| 
 | |
| /************************************************FD error code ***********************************/
 | |
| /* Invalid device ID */
 | |
| #define HI_ERR_FD_INVALID_DEVID HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
 | |
| /* Invalid channel ID */
 | |
| #define HI_ERR_FD_INVALID_CHNID HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
 | |
| /* At least one parameter is illegal. For example, an illegal enumeration value exists. */
 | |
| #define HI_ERR_FD_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
 | |
| /* The channel exists. */
 | |
| #define HI_ERR_FD_EXIST HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST)
 | |
| /* The UN exists. */
 | |
| #define HI_ERR_FD_UNEXIST HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
 | |
| /* A null point is used. */
 | |
| #define HI_ERR_FD_NULL_PTR HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
 | |
| /* Try to enable or initialize the system, device, or channel before configuring attributes. */
 | |
| #define HI_ERR_FD_NOT_CONFIG HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
 | |
| /* The operation is not supported currently. */
 | |
| #define HI_ERR_FD_NOT_SURPPORT HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
 | |
| /* The operation, changing static attributes for example, is not permitted. */
 | |
| #define HI_ERR_FD_NOT_PERM HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
 | |
| /* A failure caused by the malloc memory occurs. */
 | |
| #define HI_ERR_FD_NOMEM HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
 | |
| /* A failure caused by the malloc buffer occurs. */
 | |
| #define HI_ERR_FD_NOBUF HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
 | |
| /* The buffer is empty. */
 | |
| #define HI_ERR_FD_BUF_EMPTY HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
 | |
| /* No buffer is provided for storing new data. */
 | |
| #define HI_ERR_FD_BUF_FULL HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
 | |
| /* The system is not ready because it may be not initialized or loaded.
 | |
|  * The error code is returned when a device file fails to be opened. */
 | |
| #define HI_ERR_FD_NOTREADY HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
 | |
| /* The source address or target address is incorrect during the operations such as calling 
 | |
| copy_from_user or copy_to_user. */
 | |
| #define HI_ERR_FD_BADADDR HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_BADADDR)
 | |
| /* The resource is busy during the operations such as destroying a VENC channel 
 | |
| without deregistering it. */
 | |
| #define HI_ERR_FD_BUSY HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
 | |
| /* FD process timeout:         0xA02F8040 */
 | |
| #define HI_ERR_FD_SYS_TIMEOUT HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_SYS_TIMEOUT)
 | |
| /* FD configuration error:     0xA02F8041 */
 | |
| #define HI_ERR_FD_CFG HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_CFG)
 | |
| /* FD candidate face number over: 0xA02F8042 */
 | |
| #define HI_ERR_FD_FACE_NUM_OVER HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_FACE_NUM_OVER)
 | |
| /* FD open file error: 0xA02F8043 */
 | |
| #define HI_ERR_FD_OPEN_FILE HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_OPEN_FILE)
 | |
| /* FD read file error: 0xA02F8044 */
 | |
| #define HI_ERR_FD_READ_FILE HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_READ_FILE)
 | |
| /* FD read file error: 0xA02F8045 */
 | |
| #define HI_ERR_FD_WRITE_FILE HI_DEF_ERR(HI_ID_FD, EN_ERR_LEVEL_ERROR, ERR_FD_WRITE_FILE)
 | |
| 
 | |
| /************************************************ODT error code ***********************************/
 | |
| /* ODT Invalid channel ID: 0xA0308002 */
 | |
| #define HI_ERR_ODT_INVALID_CHNID HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
 | |
| /* ODT exist: 0xA0308004 */
 | |
| #define HI_ERR_ODT_EXIST HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST)
 | |
| /* ODT unexist: 0xA0308005 */
 | |
| #define HI_ERR_ODT_UNEXIST HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
 | |
| /* ODT The operation, changing static attributes for example, is not permitted: 0xA0308009 */
 | |
| #define HI_ERR_ODT_NOT_PERM HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
 | |
| /* ODT the system is not ready because it may be not initialized: 0xA0308010 */
 | |
| #define HI_ERR_ODT_NOTREADY HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
 | |
| /* ODT busy: 0xA0308012 */
 | |
| #define HI_ERR_ODT_BUSY HI_DEF_ERR(HI_ID_ODT, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
 | |
| #ifdef __cplusplus
 | |
| #if __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif
 | |
| #endif /* __HI_COMM_IVE_H__ */
 | |
| 
 |