• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef __HI_COMM_SYS_H__
17 #define __HI_COMM_SYS_H__
18 
19 #include "hi_type.h"
20 #include "hi_errno.h"
21 #include "hi_debug.h"
22 #include "hi_comm_video.h"
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* End of #ifdef __cplusplus */
27 
28 #define BIND_DEST_MAXNUM         64
29 #define HI_UNIQUE_ID_NUM         6
30 #define HI_GPS_ACCURACY_LEVEL    3  /* dd/mm/ss */
31 #define HI_GPS_NUMBER_DIMENSION  2  /* numerator/denominator */
32 
33 typedef struct hiVPSS_VENC_WRAP_PARAM_S {
34     HI_BOOL bAllOnline;
35     /*
36      * Input frame rate of VIPROC(linear/Frame mode WDR is the sensor frame rate,
37      * and the line mode WDR is the frame rate after synthesis)
38      */
39     HI_U32 u32FrameRate;
40     HI_U32 u32FullLinesStd; /* Total height of sensor, include of VBlank */
41 
42     SIZE_S stLargeStreamSize; /* VENC Large Stream Size */
43     SIZE_S stSmallStreamSize; /* VENC Small Stream Size */
44 } VPSS_VENC_WRAP_PARAM_S;
45 
46 typedef struct hiMPP_SYS_CONFIG_S {
47     HI_U32 u32Align;
48 } MPP_SYS_CONFIG_S;
49 
50 typedef struct hiSYS_VIRMEM_INFO_S {
51     HI_U64 u64PhyAddr;
52     HI_BOOL bCached;
53 } SYS_VIRMEM_INFO_S;
54 
55 typedef struct hiMPP_BIND_DEST_S {
56     HI_U32 u32Num;
57     MPP_CHN_S astMppChn[BIND_DEST_MAXNUM];
58 } MPP_BIND_DEST_S;
59 
60 typedef enum hiSCALE_RANGE_E {
61     SCALE_RANGE_0 = 0, /* scale range <   8/64 */
62     SCALE_RANGE_1, /* scale range >=  8/64 */
63     SCALE_RANGE_2, /* scale range >= 10/64 */
64     SCALE_RANGE_3, /* scale range >= 15/64 */
65     SCALE_RANGE_4, /* scale range >= 19/64 */
66     SCALE_RANGE_5, /* scale range >= 24/64 */
67     SCALE_RANGE_6, /* scale range >= 29/64 */
68     SCALE_RANGE_7, /* scale range >= 33/64 */
69     SCALE_RANGE_8, /* scale range >= 35/64 */
70     SCALE_RANGE_9, /* scale range >= 38/64 */
71     SCALE_RANGE_10, /* scale range >= 42/64 */
72     SCALE_RANGE_11, /* scale range >= 45/64 */
73     SCALE_RANGE_12, /* scale range >= 48/64 */
74     SCALE_RANGE_13, /* scale range >= 51/64 */
75     SCALE_RANGE_14, /* scale range >= 53/64 */
76     SCALE_RANGE_15, /* scale range >= 55/64 */
77     SCALE_RANGE_16, /* scale range >= 57/64 */
78     SCALE_RANGE_17, /* scale range >= 60/64 */
79     SCALE_RANGE_18, /* scale range >  1     */
80     SCALE_RANGE_BUTT,
81 } SCALE_RANGE_E;
82 
83 typedef enum hiCOEFF_LEVEL_E {
84     COEFF_LEVEL_0 = 0, /* coefficient level 0 */
85     COEFF_LEVEL_1, /* coefficient level 1 */
86     COEFF_LEVEL_2, /* coefficient level 2 */
87     COEFF_LEVEL_3, /* coefficient level 3 */
88     COEFF_LEVEL_4, /* coefficient level 4 */
89     COEFF_LEVEL_5, /* coefficient level 5 */
90     COEFF_LEVEL_6, /* coefficient level 6 */
91     COEFF_LEVEL_7, /* coefficient level 7 */
92     COEFF_LEVEL_8, /* coefficient level 8 */
93     COEFF_LEVEL_9, /* coefficient level 9 */
94     COEFF_LEVEL_10, /* coefficient level 10 */
95     COEFF_LEVEL_11, /* coefficient level 11 */
96     COEFF_LEVEL_12, /* coefficient level 12 */
97     COEFF_LEVEL_13, /* coefficient level 13 */
98     COEFF_LEVEL_14, /* coefficient level 14 */
99     COEFF_LEVEL_15, /* coefficient level 15 */
100     COEFF_LEVEL_16, /* coefficient level 16 */
101     COEFF_LEVEL_17, /* coefficient level 17 */
102     COEFF_LEVEL_18, /* coefficient level 18 */
103     COEFF_LEVEL_BUTT,
104 } COEFF_LEVEL_E;
105 
106 typedef struct hiSCALE_COEFF_LEVEL_S {
107     COEFF_LEVEL_E enHorLum; /* horizontal luminance coefficient level */
108     COEFF_LEVEL_E enHorChr; /* horizontal chrominance coefficient level */
109     COEFF_LEVEL_E enVerLum; /* vertical luminance coefficient level */
110     COEFF_LEVEL_E enVerChr; /* vertical chrominance coefficient level */
111 } SCALE_COEFF_LEVEL_S;
112 
113 typedef struct hiSCALE_RANGE_S {
114     SCALE_RANGE_E enHorizontal;
115     SCALE_RANGE_E enVertical;
116 } SCALE_RANGE_S;
117 
118 typedef struct hiSCALE_COEFF_INFO_S {
119     SCALE_RANGE_S stScaleRange;
120     SCALE_COEFF_LEVEL_S stScaleCoeffLevel;
121 } SCALE_COEFF_INFO_S;
122 
123 typedef struct hiGPS_INFO_S {
124     /* GPS LatitudeRef Indicates whether the latitude is north or south latitude, 'N'/'S', default 'N' */
125     HI_CHAR chGPSLatitudeRef;
126     /*
127      * GPS Latitude is expressed as degrees, minutes and seconds,
128      * a typical format like "dd/1, mm/1, ss/1", default 0/1, 0/1, 0/1
129      */
130     HI_U32 au32GPSLatitude[HI_GPS_ACCURACY_LEVEL][HI_GPS_NUMBER_DIMENSION];
131     /* GPS LongitudeRef Indicates whether the longitude is east or west longitude, 'E'/'W', default 'E' */
132     HI_CHAR chGPSLongitudeRef;
133     /*
134      * GPS Longitude is expressed as degrees, minutes and seconds, a typical format
135      * like "dd/1, mm/1, ss/1", default 0/1, 0/1, 0/1
136      */
137     HI_U32 au32GPSLongitude[HI_GPS_ACCURACY_LEVEL][HI_GPS_NUMBER_DIMENSION];
138     /* GPS AltitudeRef Indicates the reference altitude used, 0 - above sea level,1 - below sea level default 0 */
139     HI_U8 u8GPSAltitudeRef;
140     /*
141      * GPS AltitudeRef Indicates the altitude based on the reference u8GPSAltitudeRef,
142      * the reference unit is meters, default 0/1
143      */
144     HI_U32 au32GPSAltitude[HI_GPS_NUMBER_DIMENSION];
145 } GPS_INFO_S;
146 
147 typedef enum hiVI_VPSS_MODE_E {
148     VI_OFFLINE_VPSS_OFFLINE = 0,
149     VI_OFFLINE_VPSS_ONLINE,
150     VI_ONLINE_VPSS_OFFLINE,
151     VI_ONLINE_VPSS_ONLINE,
152     VI_PARALLEL_VPSS_OFFLINE,
153     VI_PARALLEL_VPSS_PARALLEL,
154     VI_VPSS_MODE_BUTT
155 } VI_VPSS_MODE_E;
156 
157 typedef struct hiVI_VPSS_MODE_S {
158     VI_VPSS_MODE_E aenMode[VI_MAX_PIPE_NUM];
159 } VI_VPSS_MODE_S;
160 
161 typedef struct hiRAW_FRAME_COMPRESS_PARAM_S {
162     HI_U32 u32CompRatio_10Bit; /* compression ratio of 10 bit */
163     HI_U32 u32CompRatio_12Bit; /* compression ratio of 12 bit */
164     HI_U32 u32CompRatio_14Bit; /* compression ratio of 14 bit */
165 } RAW_FRAME_COMPRESS_PARAM_S;
166 
167 typedef struct hiHI_UNIQUE_ID_S {
168     HI_U32 u32Id[HI_UNIQUE_ID_NUM];
169 } HI_UNIQUE_ID_S;
170 
171 #define HI_ERR_SYS_NULL_PTR      HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
172 #define HI_ERR_SYS_NOTREADY      HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
173 #define HI_ERR_SYS_NOT_PERM      HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
174 #define HI_ERR_SYS_NOMEM         HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
175 #define HI_ERR_SYS_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
176 #define HI_ERR_SYS_BUSY          HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
177 #define HI_ERR_SYS_NOT_SUPPORT   HI_DEF_ERR(HI_ID_SYS, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
178 
179 #ifdef __cplusplus
180 }
181 #endif /* __cplusplus */
182 
183 #endif /* __HI_COMM_SYS_H__ */
184