Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | /** |
2 | * @file | |
3 | * venc_drv_if_public.h | |
4 | * | |
5 | * @par Project: | |
6 | * Video | |
7 | * | |
8 | * @par Description: | |
9 | * Video Encoder Driver Interface for external use | |
10 | * | |
11 | * @par Author: | |
12 | * Jackal Chen (mtk02532) | |
13 | * | |
14 | * @par $Revision: #1 $ | |
15 | * @par $Modtime:$ | |
16 | * @par $Log:$ | |
17 | * | |
18 | */ | |
19 | ||
20 | #ifndef _VENC_DRV_IF_PUBLIC_H_ | |
21 | #define _VENC_DRV_IF_PUBLIC_H_ | |
22 | ||
23 | #ifdef __cplusplus | |
24 | extern "C" { | |
25 | #endif | |
26 | ||
27 | #include "val_types_public.h" | |
28 | ||
29 | ||
30 | /** | |
31 | * @par Enumeration | |
32 | * VENC_DRV_QUERY_TYPE_T | |
33 | * @par Description | |
34 | * This is the item used for query driver | |
35 | */ | |
36 | typedef enum __VENC_DRV_QUERY_TYPE_T | |
37 | { | |
38 | VENC_DRV_QUERY_TYPE_NONE, ///< Default value (not used) | |
39 | VENC_DRV_QUERY_TYPE_VIDEO_FORMAT, ///< Query the driver capability | |
40 | VENC_DRV_QUERY_TYPE_VIDEO_PROPERTY, ///< Query the video property | |
41 | VENC_DRV_QUERY_TYPE_VIDEO_PROPERTY_LIST, ///< Query the video property list | |
42 | VENC_DRV_QUERY_TYPE_PROPERTY, ///< Get the driver property | |
43 | VENC_DRV_QUERY_TYPE_MCI_SUPPORTED, ///< Query if the codec support MCI | |
44 | VENC_DRV_QUERY_TYPE_CHIP_NAME, ///< Query chip name | |
45 | VENC_DRV_QUERY_TYPE_INPUT_BUF_LIMIT, ///< Query input buffer stride and sliceheight | |
46 | VENC_DRV_QUERY_TYPE_NORMAL_PRIO, ///< Query if recorder scenario adjust to normal priority, for 6571. | |
47 | VENC_DRV_QUERY_TYPE_VIDEO_CAMCORDER_CAP, ///< Query spec. for MediaProfile | |
48 | VENC_DRV_QUERY_TYPE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_QUERY_TYPE_T value | |
49 | } | |
50 | VENC_DRV_QUERY_TYPE_T; | |
51 | ||
52 | ||
53 | /** | |
54 | * @par Enumeration | |
55 | * VENC_DRV_YUV_FORMAT_T | |
56 | * @par Description | |
57 | * This is the item used for input YUV buffer format | |
58 | */ | |
59 | typedef enum __VENC_DRV_YUV_FORMAT_T | |
60 | { | |
61 | VENC_DRV_YUV_FORMAT_NONE, ///< Default value (not used) | |
62 | VENC_DRV_YUV_FORMAT_GRAY, ///< GRAY YUV format | |
63 | VENC_DRV_YUV_FORMAT_422, ///< 422 YUV format | |
64 | VENC_DRV_YUV_FORMAT_420, ///< 420 YUV format | |
65 | VENC_DRV_YUV_FORMAT_411, ///< 411 YUV format | |
66 | VENC_DRV_YUV_FORMAT_YV12, ///< Android YV12 (16/16/16) YUV format | |
67 | VENC_DRV_YUV_FORMAT_NV12, ///< NV12 YUV format | |
68 | VENC_DRV_YUV_FORMAT_NV21, ///< NV21 YUV format | |
69 | VENC_DRV_YUV_FORMAT_BLK16X32, ///< Block 16x32 YUV format | |
70 | VENC_DRV_YUV_FORMAT_BLK64X32, ///< Block 64x32 YUV format | |
71 | VENC_DRV_YUV_FORMAT_YV12_1688, ///< YV12 YUV format | |
72 | VENC_DRV_YUV_FORMAT_MAX = 0xFFFFFFFF ///< Max VENC_DRV_YUV_FORMAT_T value | |
73 | } VENC_DRV_YUV_FORMAT_T; | |
74 | ||
75 | ||
76 | /** | |
77 | * @par Enumeration | |
78 | * VENC_DRV_VIDEO_FORMAT_T | |
79 | * @par Description | |
80 | * This is the item used for encode video format | |
81 | */ | |
82 | typedef enum __VENC_DRV_VIDEO_FORMAT_T | |
83 | { | |
84 | VENC_DRV_VIDEO_FORMAT_NONE, ///< Default value (not used) | |
85 | VENC_DRV_VIDEO_FORMAT_MPEG4, ///< MPEG4 video format | |
86 | VENC_DRV_VIDEO_FORMAT_MPEG4_1080P, ///< MPEG4 video format for 1080p | |
87 | VENC_DRV_VIDEO_FORMAT_MPEG4_SHORT, ///< MPEG4_SHORT (H.263 baseline profile) video format | |
88 | VENC_DRV_VIDEO_FORMAT_H263, ///< H.263 video format | |
89 | VENC_DRV_VIDEO_FORMAT_H264, ///< H.264 video format | |
90 | VENC_DRV_VIDEO_FORMAT_H264_VGA, ///< H.264 video format for VGA | |
91 | VENC_DRV_VIDEO_FORMAT_WMV9, ///< WMV9 video format | |
92 | VENC_DRV_VIDEO_FORMAT_VC1, ///< VC1 video format | |
93 | VENC_DRV_VIDEO_FORMAT_VP8, ///< VP8 video format | |
94 | VENC_DRV_VIDEO_FORMAT_JPEG, ///< JPEG picture format | |
95 | VENC_DRV_VIDEO_FORMAT_HEVC, ///< HEVC video format | |
96 | VENC_DRV_VIDEO_FORMAT_H264SEC, ///<: Secure H.264 | |
97 | VENC_DRV_VIDEO_FORMAT_MAX = 0xFFFFFFFF ///< Max VENC_DRV_VIDEO_FORMAT_T value | |
98 | } VENC_DRV_VIDEO_FORMAT_T; | |
99 | ||
100 | ||
101 | /** | |
102 | * @par Enumeration | |
103 | * VENC_DRV_FRAME_RATE_T | |
104 | * @par Description | |
105 | * This is the item used for encode frame rate | |
106 | */ | |
107 | typedef enum __VENC_DRV_FRAME_RATE_T | |
108 | { | |
109 | VENC_DRV_FRAME_RATE_NONE = 0, ///< Default value (not used) | |
110 | VENC_DRV_FRAME_RATE_7_5 = 75, ///< 7.5 | |
111 | VENC_DRV_FRAME_RATE_10 = 10, ///< 10 | |
112 | VENC_DRV_FRAME_RATE_15 = 15, ///< 15 | |
113 | VENC_DRV_FRAME_RATE_20 = 20, ///< 20 | |
114 | VENC_DRV_FRAME_RATE_24 = 24, ///< 24 | |
115 | VENC_DRV_FRAME_RATE_25 = 25, ///< 25 | |
116 | VENC_DRV_FRAME_RATE_29_97 = 2997, ///< 29.97 | |
117 | VENC_DRV_FRAME_RATE_30 = 30, ///< 30 | |
118 | VENC_DRV_FRAME_RATE_60 = 60, ///< 60 | |
119 | VENC_DRV_FRAME_RATE_120 = 120, ///< 120 | |
120 | VENC_DRV_FRAME_RATE_180 = 180, ///< 180 | |
121 | VENC_DRV_FRAME_RATE_240 = 240, ///< 240 | |
122 | VENC_DRV_FRAME_RATE_480 = 480, ///< 480 | |
123 | VENC_DRV_FRAME_RATE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_FRAME_RATE_T value | |
124 | } VENC_DRV_FRAME_RATE_T; | |
125 | ||
126 | ||
127 | /** | |
128 | * @par Enumeration | |
129 | * VENC_DRV_START_OPT_T | |
130 | * @par Description | |
131 | * This is the item used for encode frame type | |
132 | */ | |
133 | typedef enum __VENC_DRV_START_OPT_T | |
134 | { | |
135 | VENC_DRV_START_OPT_NONE, ///< Default value (not used) | |
136 | VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER, ///< Encode a Sequence header | |
137 | VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER_H264_SPS, ///< Encode a Sequence header H264 SPS | |
138 | VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER_H264_PPS, ///< Encode a Sequence header H264 PPS | |
139 | VENC_DRV_START_OPT_ENCODE_FRAME, ///< Encode a frame | |
140 | VENC_DRV_START_OPT_ENCODE_KEY_FRAME, ///< Encode a key frame | |
141 | VENC_DRV_START_OPT_ENCODE_FINAL, ///< Final encode (Only use to encode final frame) | |
142 | VENC_DRV_START_OPT_ENCODE_DUMMY_NAL, ///< Encode a dummy NAL for WFD | |
143 | VENC_DRV_START_OPT_MAX = 0xFFFFFFFF ///< Max VENC_DRV_START_OPT_T value | |
144 | } VENC_DRV_START_OPT_T; | |
145 | ||
146 | ||
147 | /** | |
148 | * @par Enumeration | |
149 | * VENC_DRV_MESSAGE_T | |
150 | * @par Description | |
151 | * This is the item used for encode frame status | |
152 | */ | |
153 | typedef enum __VENC_DRV_MESSAGE_T | |
154 | { | |
155 | VENC_DRV_MESSAGE_NONE, ///< Default value (not used) | |
156 | VENC_DRV_MESSAGE_OK, ///< Encode ok | |
157 | VENC_DRV_MESSAGE_ERR, ///< Encode error | |
158 | VENC_DRV_MESSAGE_TIMEOUT, ///< Encode timeout | |
159 | VENC_DRV_MESSAGE_PARTIAL, ///< Encode partial frame (ok means EOF) | |
160 | VENC_DRV_MESSAGE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_MESSAGE_T value | |
161 | } VENC_DRV_MESSAGE_T; | |
162 | ||
163 | ||
164 | /** | |
165 | * @par Enumeration | |
166 | * VENC_DRV_H264_VIDEO_PROFILE_T | |
167 | * @par Description | |
168 | * This is the item used for h.264 encoder profile capability | |
169 | */ | |
170 | typedef enum __VENC_DRV_H264_VIDEO_PROFILE_T | |
171 | { | |
172 | VENC_DRV_H264_VIDEO_PROFILE_UNKNOWN = 0, ///< Default value (not used) | |
173 | VENC_DRV_H264_VIDEO_PROFILE_BASELINE = (1 << 0), ///< Baseline | |
174 | VENC_DRV_H264_VIDEO_PROFILE_CONSTRAINED_BASELINE = (1 << 1), ///< Constrained Baseline | |
175 | VENC_DRV_H264_VIDEO_PROFILE_MAIN = (1 << 2), ///< Main | |
176 | VENC_DRV_H264_VIDEO_PROFILE_EXTENDED = (1 << 3), ///< Extended | |
177 | VENC_DRV_H264_VIDEO_PROFILE_HIGH = (1 << 4), ///< High | |
178 | VENC_DRV_H264_VIDEO_PROFILE_HIGH_10 = (1 << 5), ///< High 10 | |
179 | VENC_DRV_H264_VIDEO_PROFILE_HIGH422 = (1 << 6), ///< High 422 | |
180 | VENC_DRV_H264_VIDEO_PROFILE_HIGH444 = (1 << 7), ///< High 444 | |
181 | VENC_DRV_H264_VIDEO_PROFILE_HIGH_10_INTRA = (1 << 8), ///< High 10 Intra (Amendment 2) | |
182 | VENC_DRV_H264_VIDEO_PROFILE_HIGH422_INTRA = (1 << 9), ///< High 422 Intra (Amendment 2) | |
183 | VENC_DRV_H264_VIDEO_PROFILE_HIGH444_INTRA = (1 << 10), ///< High 444 Intra (Amendment 2) | |
184 | VENC_DRV_H264_VIDEO_PROFILE_CAVLC444_INTRA = (1 << 11), ///< CAVLC 444 Intra (Amendment 2) | |
185 | VENC_DRV_H264_VIDEO_PROFILE_HIGH444_PREDICTIVE = (1 << 12), ///< High 444 Predictive (Amendment 2) | |
186 | VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_BASELINE = (1 << 13), ///< Scalable Baseline (Amendment 3) | |
187 | VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_HIGH = (1 << 14), ///< Scalable High (Amendment 3) | |
188 | VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_HIGH_INTRA = (1 << 15), ///< Scalable High Intra (Amendment 3) | |
189 | VENC_DRV_H264_VIDEO_PROFILE_MULTIVIEW_HIGH = (1 << 16), ///< Multiview High (Corrigendum 1 (2009)) | |
190 | VENC_DRV_H264_VIDEO_PROFILE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_H264_VIDEO_PROFILE_T value | |
191 | } VENC_DRV_H264_VIDEO_PROFILE_T; | |
192 | ||
193 | ||
194 | /** | |
195 | * @par Enumeration | |
196 | * VENC_DRV_HEVC_VIDEO_PROFILE_T | |
197 | * @par Description | |
198 | * This is the item used for hevc encoder profile capability | |
199 | */ | |
200 | typedef enum __VENC_DRV_HEVC_VIDEO_PROFILE_T | |
201 | { | |
202 | VENC_DRV_HEVC_VIDEO_PROFILE_UNKNOWN = 0, ///< Default value (not used) | |
203 | VENC_DRV_HEVC_VIDEO_PROFILE_BASELINE = (1 << 0), ///< Baseline | |
204 | VENC_DRV_HEVC_VIDEO_PROFILE_CONSTRAINED_BASELINE = (1 << 1), ///< Constrained Baseline | |
205 | VENC_DRV_HEVC_VIDEO_PROFILE_MAIN = (1 << 2), ///< Main | |
206 | VENC_DRV_HEVC_VIDEO_PROFILE_EXTENDED = (1 << 3), ///< Extended | |
207 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH = (1 << 4), ///< High | |
208 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH_10 = (1 << 5), ///< High 10 | |
209 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH422 = (1 << 6), ///< High 422 | |
210 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444 = (1 << 7), ///< High 444 | |
211 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH_10_INTRA = (1 << 8), ///< High 10 Intra (Amendment 2) | |
212 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH422_INTRA = (1 << 9), ///< High 422 Intra (Amendment 2) | |
213 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444_INTRA = (1 << 10), ///< High 444 Intra (Amendment 2) | |
214 | VENC_DRV_HEVC_VIDEO_PROFILE_CAVLC444_INTRA = (1 << 11), ///< CAVLC 444 Intra (Amendment 2) | |
215 | VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444_PREDICTIVE = (1 << 12), ///< High 444 Predictive (Amendment 2) | |
216 | VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_BASELINE = (1 << 13), ///< Scalable Baseline (Amendment 3) | |
217 | VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_HIGH = (1 << 14), ///< Scalable High (Amendment 3) | |
218 | VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_HIGH_INTRA = (1 << 15), ///< Scalable High Intra (Amendment 3) | |
219 | VENC_DRV_HEVC_VIDEO_PROFILE_MULTIVIEW_HIGH = (1 << 16), ///< Multiview High (Corrigendum 1 (2009)) | |
220 | VENC_DRV_HEVC_VIDEO_PROFILE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_HEVC_VIDEO_PROFILE_T value | |
221 | } VENC_DRV_HEVC_VIDEO_PROFILE_T; | |
222 | ||
223 | ||
224 | /** | |
225 | * @par Enumeration | |
226 | * VENC_DRV_MPEG_VIDEO_PROFILE_T | |
227 | * @par Description | |
228 | * This is the item used for h.263, mpeg2, mpeg4 encoder profile capability | |
229 | */ | |
230 | typedef enum __VENC_DRV_MPEG_VIDEO_PROFILE_T | |
231 | { | |
232 | VENC_DRV_MPEG_VIDEO_PROFILE_UNKNOWN = 0, ///< Default value (not used) | |
233 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_0 = (1 << 0), ///< H.263 0 | |
234 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_1 = (1 << 1), ///< H.263 1 | |
235 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_2 = (1 << 2), ///< H.263 2 | |
236 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_3 = (1 << 3), ///< H.263 3 | |
237 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_4 = (1 << 4), ///< H.263 4 | |
238 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_5 = (1 << 5), ///< H.263 5 | |
239 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_6 = (1 << 6), ///< H.263 6 | |
240 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_7 = (1 << 7), ///< H.263 7 | |
241 | VENC_DRV_MPEG_VIDEO_PROFILE_H263_8 = (1 << 8), ///< H.263 8 | |
242 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SIMPLE = (1 << 9), ///< MPEG2 Simple | |
243 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_MAIN = (1 << 10), ///< MPEG2 Main | |
244 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SNR = (1 << 11), ///< MPEG2 SNR | |
245 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SPATIAL = (1 << 12), ///< MPEG2 Spatial | |
246 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_HIGH = (1 << 13), ///< MPEG2 High | |
247 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG4_SIMPLE = (1 << 14), ///< MPEG4 Simple | |
248 | VENC_DRV_MPEG_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE = (1 << 15), ///< MPEG4 Advanced Simple | |
249 | VENC_DRV_MPEG_VIDEO_PROFILE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_MPEG_VIDEO_PROFILE_T value | |
250 | } VENC_DRV_MPEG_VIDEO_PROFILE_T; | |
251 | ||
252 | ||
253 | /** | |
254 | * @par Enumeration | |
255 | * VENC_DRV_MS_VIDEO_PROFILE_T | |
256 | * @par Description | |
257 | * This is the item used for MS encoder profile capability | |
258 | */ | |
259 | typedef enum __VENC_DRV_MS_VIDEO_PROFILE_T | |
260 | { | |
261 | VENC_DRV_MS_VIDEO_PROFILE_UNKNOWN = 0, ///< Default value (not used) | |
262 | VENC_DRV_MS_VIDEO_PROFILE_VC1_SIMPLE = (1 << 0), ///< VC1 Simple | |
263 | VENC_DRV_MS_VIDEO_PROFILE_VC1_MAIN = (1 << 1), ///< VC1 Main | |
264 | VENC_DRV_MS_VIDEO_PROFILE_VC1_ADVANCED = (1 << 2), ///< VC1 Advanced | |
265 | VENC_DRV_MS_VIDEO_PROFILE_WMV9_SIMPLE = (1 << 3), ///< WMV9 Simple | |
266 | VENC_DRV_MS_VIDEO_PROFILE_WMV9_MAIN = (1 << 4), ///< WMV9 Main | |
267 | VENC_DRV_MS_VIDEO_PROFILE_WMV9_COMPLEX = (1 << 5), ///< WMV9 Complex | |
268 | VENC_DRV_MS_VIDEO_PROFILE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_MS_VIDEO_PROFILE_T value | |
269 | } VENC_DRV_MS_VIDEO_PROFILE_T; | |
270 | ||
271 | ||
272 | /** | |
273 | * @par Enumeration | |
274 | * VENC_DRV_VIDEO_LEVEL_T | |
275 | * @par Description | |
276 | * This is the item used for encoder level capability | |
277 | */ | |
278 | typedef enum __VENC_DRV_VIDEO_LEVEL_T | |
279 | { | |
280 | VENC_DRV_VIDEO_LEVEL_UNKNOWN = 0, ///< Default value (not used) | |
281 | VENC_DRV_VIDEO_LEVEL_0, ///< VC1 | |
282 | VENC_DRV_VIDEO_LEVEL_1, ///< H264, HEVC, VC1, MPEG4 | |
283 | VENC_DRV_VIDEO_LEVEL_1b, ///< H264, HEVC | |
284 | VENC_DRV_VIDEO_LEVEL_1_1, ///< H264, HEVC | |
285 | VENC_DRV_VIDEO_LEVEL_1_2, ///< H264, HEVC | |
286 | VENC_DRV_VIDEO_LEVEL_1_3, ///< H264, HEVC | |
287 | VENC_DRV_VIDEO_LEVEL_2, ///< H264, HEVC, VC1, MPEG4 | |
288 | VENC_DRV_VIDEO_LEVEL_2_1, ///< H264, HEVC | |
289 | VENC_DRV_VIDEO_LEVEL_2_2, ///< H264, HEVC | |
290 | VENC_DRV_VIDEO_LEVEL_3, ///< H264, HEVC, VC1, MPEG4 | |
291 | VENC_DRV_VIDEO_LEVEL_3_1, ///< H264, HEVC | |
292 | VENC_DRV_VIDEO_LEVEL_3_2, ///< H264, HEVC | |
293 | VENC_DRV_VIDEO_LEVEL_4, ///< H264, HEVC, VC1 | |
294 | VENC_DRV_VIDEO_LEVEL_4_1, ///< H264, HEVC | |
295 | VENC_DRV_VIDEO_LEVEL_4_2, ///< H264, HEVC | |
296 | VENC_DRV_VIDEO_LEVEL_5, ///< H264, HEVC, HEVC | |
297 | VENC_DRV_VIDEO_LEVEL_5_1, ///< H264, HEVC | |
298 | VENC_DRV_VIDEO_LEVEL_LOW, ///< VC1, MPEG2 | |
299 | VENC_DRV_VIDEO_LEVEL_MEDIUM, ///< VC1, MPEG2 | |
300 | VENC_DRV_VIDEO_LEVEL_HIGH1440, ///< MPEG2 | |
301 | VENC_DRV_VIDEO_LEVEL_HIGH, ///< VC1, MPEG2 | |
4b9e9796 S |
302 | VENC_DRV_VIDEO_LEVEL_6, ///< H263 |
303 | VENC_DRV_VIDEO_LEVEL_7, ///< H263 | |
6fa3eb70 S |
304 | VENC_DRV_VIDEO_LEVEL_MAX = 0xFFFFFFFF ///< Max VENC_DRV_VIDEO_LEVEL_T value |
305 | } VENC_DRV_VIDEO_LEVEL_T; | |
306 | ||
307 | ||
308 | /** | |
309 | * @par Enumeration | |
310 | * VENC_DRV_RESOLUTION_T | |
311 | * @par Description | |
312 | * This is the item used for encoder resolution capability | |
313 | */ | |
314 | typedef enum __VENC_DRV_RESOLUTION_T | |
315 | { | |
316 | VENC_DRV_RESOLUTION_UNKNOWN = 0, ///< Default value (not used) | |
317 | VENC_DRV_RESOLUTION_SUPPORT_QCIF, ///< CIF | |
318 | VENC_DRV_RESOLUTION_SUPPORT_QVGA, ///< QVGA | |
319 | VENC_DRV_RESOLUTION_SUPPORT_CIF, ///< QCIF | |
320 | VENC_DRV_RESOLUTION_SUPPORT_HVGA, ///< HVGA: 480x320 | |
321 | VENC_DRV_RESOLUTION_SUPPORT_VGA, ///< VGA: 640x480 | |
322 | VENC_DRV_RESOLUTION_SUPPORT_480I, ///< 480I | |
323 | VENC_DRV_RESOLUTION_SUPPORT_480P, ///< 480P | |
324 | VENC_DRV_RESOLUTION_SUPPORT_576I, ///< 576I | |
325 | VENC_DRV_RESOLUTION_SUPPORT_576P, ///< 480P | |
326 | VENC_DRV_RESOLUTION_SUPPORT_FWVGA, ///< FWVGA: 864x480 | |
327 | VENC_DRV_RESOLUTION_SUPPORT_720I, ///< 720I | |
328 | VENC_DRV_RESOLUTION_SUPPORT_720P, ///< 720P | |
329 | VENC_DRV_RESOLUTION_SUPPORT_1080I, ///< 1080I | |
330 | VENC_DRV_RESOLUTION_SUPPORT_1080P, ///< 1080P | |
331 | VENC_DRV_RESOLUTION_SUPPORT_2160P, ///< 2160P | |
332 | VENC_DRV_RESOLUTION_SUPPORT_MAX = 0xFFFFFFFF ///< Max VENC_DRV_RESOLUTION_T value | |
333 | } VENC_DRV_RESOLUTION_T; | |
334 | ||
335 | ||
336 | /** | |
337 | * @par Enumeration | |
338 | * VENC_DRV_SET_TYPE_T | |
339 | * @par Description | |
340 | * This is the input parameter for eVEncDrvSetParam() | |
341 | */ | |
342 | typedef enum __VENC_DRV_SET_TYPE_T | |
343 | { | |
344 | VENC_DRV_SET_TYPE_UNKONW = 0, ///< Default value (not used) | |
345 | VENC_DRV_SET_TYPE_RST, ///< Set reset | |
346 | VENC_DRV_SET_TYPE_CB, ///< Set callback function | |
347 | VENC_DRV_SET_TYPE_PARAM_RC, ///< Set rate control parameter | |
348 | VENC_DRV_SET_TYPE_PARAM_ME, ///< Set motion estimation parameter | |
349 | VENC_DRV_SET_TYPE_PARAM_EIS, ///< Set EIS parameter | |
350 | VENC_DRV_SET_TYPE_PARAM_ENC, ///< Set encoder parameters such as I-frame period, etc. | |
351 | VENC_DRV_SET_TYPE_STATISTIC_ON, ///< Enable statistic function | |
352 | VENC_DRV_SET_TYPE_STATISTIC_OFF, ///< Disable statistic function | |
353 | VENC_DRV_SET_TYPE_SET_OMX_TIDS, ///< Set OMX thread IDs | |
354 | VENC_DRV_SET_TYPE_MPEG4_SHORT, ///< Set MPEG4 short header mode | |
355 | VENC_DRV_SET_TYPE_FORCE_INTRA_ON, ///< Set Force Intra Frame on | |
356 | VENC_DRV_SET_TYPE_FORCE_INTRA_OFF, ///< Set Force Intra Frame off | |
357 | VENC_DRV_SET_TYPE_TIME_LAPSE, ///< Set time lapse | |
358 | VENC_DRV_SET_TYPE_ALLOC_WORK_BUF, ///< Set to alloc working buffer | |
359 | VENC_DRV_SET_TYPE_DUMP_WORK_BUF, ///< Set to dump working buffer | |
360 | VENC_DRV_SET_TYPE_FREE_WORK_BUF, ///< Set to free working buffer | |
361 | VENC_DRV_SET_TYPE_ADJUST_BITRATE, ///< Set to adjust bitrate | |
362 | VENC_DRV_SET_TYPE_I_FRAME_INTERVAL, ///< Set I Frame interval | |
363 | VENC_DRV_SET_TYPE_WFD_MODE, ///< Set Wifi-Display Mode | |
364 | VENC_DRV_SET_TYPE_RECORD_SIZE, ///< Ser record size | |
365 | VENC_DRV_SET_TYPE_USE_MCI_BUF, ///< Set to use MCI buffer | |
366 | VENC_DRV_SET_TYPE_ADJUST_FRAMERATE, ///< Set frame rate | |
367 | VENC_DRV_SET_TYPE_INIT_QP, ///< Set init QP | |
368 | VENC_DRV_SET_TYPE_SKIP_FRAME, ///< Set skip one frame | |
369 | VENC_DRV_SET_TYPE_SCENARIO, ///< Set VENC Scenario | |
370 | VENC_DRV_SET_TYPE_PREPEND_HEADER, ///< Set prepend SPS/PPS before IDR | |
371 | VENC_DRV_SET_TYPE_SLOW_MOTION_ENCODE, ///< Set to Slow Motion Video Recording for header or frame | |
372 | VENC_DRV_SET_TYPE_SLOW_MOTION_POST_PROC, ///< Set to Slow Motion Video Recording for encoded bs with post processing | |
373 | VENC_DRV_SET_TYPE_SLOW_MOTION_LOCK_HW, ///< Set to Slow Motion Video Recording for Lock HW | |
374 | VENC_DRV_SET_TYPE_SLOW_MOTION_UNLOCK_HW, ///< Set to Slow Motion Video Recording for UnLock HW | |
375 | VENC_DRV_SET_TYPE_NONREFP, ///< Set Enable/Disable Non reference P frame | |
376 | VENC_DRV_SET_TYPE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_SET_TYPE_T value | |
377 | } VENC_DRV_SET_TYPE_T; | |
378 | ||
379 | ||
380 | /** | |
381 | * @par Enumeration | |
382 | * VENC_DRV_GET_TYPE_T | |
383 | * @par Description | |
384 | * This is the input parameter for eVEncDrvGetParam() | |
385 | */ | |
386 | typedef enum __VENC_DRV_GET_TYPE_T | |
387 | { | |
388 | VENC_DRV_GET_TYPE_UNKONW = 0, ///< Default value (not used) | |
389 | VENC_DRV_GET_TYPE_PARAM_RC, ///< Get rate control parameter | |
390 | VENC_DRV_GET_TYPE_PARAM_ME, ///< Get motion estimation parameter | |
391 | VENC_DRV_GET_TYPE_PARAM_EIS, ///< Get EIS parameter | |
392 | VENC_DRV_GET_TYPE_PARAM_ENC, ///< Get encoder parameters such as I-frame period, etc. | |
393 | VENC_DRV_GET_TYPE_STATISTIC, ///< Get statistic. | |
394 | VENC_DRV_GET_TYPE_GET_CPU_LOADING_INFO, ///< query the cpu loading info from kernel driver | |
395 | VENC_DRV_GET_TYPE_GET_YUV_FORMAT, ///< Get YUV format | |
396 | VENC_DRV_GET_TYPE_GET_CODEC_TIDS, | |
397 | /* for DirectLink Meta Mode + */ | |
398 | VENC_DRV_GET_TYPE_ALLOC_META_HANDLE_LIST, ///< Alloc a handle to store meta handle list | |
399 | VENC_DRV_GET_TYPE_GET_BUF_INFO_FROM_META_HANDLE, ///< Get buffer virtual address from meta buffer handle | |
400 | VENC_DRV_GET_TYPE_FREE_META_HANDLE_LIST, ///< free a handle allocated from VENC_DRV_GET_TYPE_ALLOC_META_HANDLE_LIST | |
401 | /* for DirectLink Meta Mode - */ | |
402 | VENC_DRV_GET_TYPE_MAX = 0xFFFFFFFF ///< Max VENC_DRV_GET_TYPE_MAX value | |
403 | } VENC_DRV_GET_TYPE_T; | |
404 | ||
405 | ||
406 | /** | |
407 | * @par Enumeration | |
408 | * VENC_DRV_MRESULT_T | |
409 | * @par Description | |
410 | * This is the return value for eVEncDrvXXX() | |
411 | */ | |
412 | typedef enum __VENC_DRV_MRESULT_T | |
413 | { | |
414 | VENC_DRV_MRESULT_OK = 0, ///< Return Success | |
415 | VENC_DRV_MRESULT_FAIL, ///< Return Fail | |
416 | VENC_DRV_MRESULT_MAX = 0x0FFFFFFF ///< Max VENC_DRV_MRESULT_T value | |
417 | } VENC_DRV_MRESULT_T; | |
418 | ||
419 | ||
420 | /** | |
421 | * @par Enumeration | |
422 | * VENC_DRV_SCENARIO_T | |
423 | * @par Description | |
424 | * This is the scenario for VENC scenario | |
425 | */ | |
426 | typedef enum __VENC_DRV_SCENARIO_T | |
427 | { | |
428 | VENC_DRV_SCENARIO_CAMERA_REC = 1, ///< Camera recording | |
429 | VENC_DRV_SCENARIO_LIVEPHOTO_CAPTURE = (1 << 1), ///< LivePhoto recording | |
430 | VENC_DRV_SCENARIO_LIVEPHOTO_EFFECT = (1 << 2), ///< LivePhoto effect transcoding | |
431 | VENC_DRV_SCENARIO_CAMERA_REC_SLOW_MOTION = (1 << 3), ///< Camera recording with slow motion | |
432 | VENC_DRV_SCENARIO_SCREEN_REC = (1 << 4), ///< Screen recording | |
433 | } VENC_DRV_SCENARIO_T; | |
434 | ||
435 | ||
436 | /** | |
437 | * @par Structure | |
438 | * VENC_DRV_QUERY_VIDEO_FORMAT_T | |
439 | * @par Description | |
440 | * This is a input parameter for eVEncDrvQueryCapability() | |
441 | */ | |
442 | typedef struct __VENC_DRV_QUERY_VIDEO_FORMAT_T | |
443 | { | |
444 | VENC_DRV_VIDEO_FORMAT_T eVideoFormat; ///< [OUT] video format capability | |
445 | VAL_UINT32_T u4Profile; ///< [OUT] video profile capability (VENC_DRV_H264_VIDEO_PROFILE_T, VENC_DRV_MPEG_VIDEO_PROFILE_T, VENC_DRV_MS_VIDEO_PROFILE_T) | |
446 | VENC_DRV_VIDEO_LEVEL_T eLevel; ///< [OUT] video level capability | |
447 | VENC_DRV_RESOLUTION_T eResolution; ///< [OUT] video resolution capability | |
448 | VAL_UINT32_T u4Width; ///< [OUT] video width capability | |
449 | VAL_UINT32_T u4Height; ///< [OUT] video height capability | |
450 | VAL_UINT32_T u4Bitrate; ///< [OUT] video bitrate capability | |
451 | VAL_UINT32_T u4FrameRate; ///< [OUT] video FrameRate capability, 15, 30,... | |
452 | } VENC_DRV_QUERY_VIDEO_FORMAT_T; | |
453 | ||
454 | /** | |
455 | * @par Structure | |
456 | * P_VENC_DRV_QUERY_VIDEO_FORMAT_T | |
457 | * @par Description | |
458 | * This is the pointer of VENC_DRV_QUERY_VIDEO_FORMAT_T | |
459 | */ | |
460 | typedef VENC_DRV_QUERY_VIDEO_FORMAT_T *P_VENC_DRV_QUERY_VIDEO_FORMAT_T; | |
461 | ||
462 | ||
463 | /** | |
464 | * @par Structure | |
465 | * VENC_DRV_QUERY_INPUT_BUF_LIMIT | |
466 | * @par Description | |
467 | * This is a input parameter for eVEncDrvQueryCapability() | |
468 | */ | |
469 | typedef struct __VENC_DRV_QUERY_INPUT_BUF_LIMIT | |
470 | { | |
471 | VENC_DRV_VIDEO_FORMAT_T eVideoFormat; ///< [IN] video format | |
472 | VAL_UINT32_T u4Width; ///< [IN] video width | |
473 | VAL_UINT32_T u4Height; ///< [IN] video height | |
474 | VAL_UINT32_T u4Stride; ///< [OUT] video stride | |
475 | VAL_UINT32_T u4SliceHeight; ///< [OUT] video sliceheight | |
476 | VENC_DRV_SCENARIO_T eScenario; ///< [IN] venc scenario | |
477 | } VENC_DRV_QUERY_INPUT_BUF_LIMIT; | |
478 | ||
479 | ||
480 | /** | |
481 | * @par Structure | |
482 | * VENC_DRV_PARAM_ENC_T | |
483 | * @par Description | |
484 | * This is the encoder settings and used as input or output parameter for eVEncDrvSetParam() or eVEncDrvGetParam() | |
485 | */ | |
486 | typedef struct __VENC_DRV_PARAM_ENC_T | |
487 | { | |
488 | VENC_DRV_YUV_FORMAT_T eVEncFormat; ///< [IN/OUT] YUV format | |
489 | VAL_UINT32_T u4Profile; ///< [IN/OUT] Profile | |
490 | VAL_UINT32_T u4Level; ///< [IN/OUT] Level | |
491 | VAL_UINT32_T u4Width; ///< [IN/OUT] Image Width | |
492 | VAL_UINT32_T u4Height; ///< [IN/OUT] Image Height | |
493 | VAL_UINT32_T u4BufWidth; ///< [IN/OUT] Buffer Width | |
494 | VAL_UINT32_T u4BufHeight; ///< [IN/OUT] Buffer Heigh | |
495 | VAL_UINT32_T u4NumPFrm; ///< [IN/OUT] The number of P frame between two I frame. | |
496 | VAL_UINT32_T u4NumBFrm; ///< [IN/OUT] The number of B frame between two reference frame. | |
497 | VENC_DRV_FRAME_RATE_T eFrameRate; ///< [IN/OUT] Frame rate | |
498 | VAL_BOOL_T fgInterlace; ///< [IN/OUT] Interlace coding. | |
499 | VAL_VOID_T *pvExtraEnc; ///< [IN/OUT] For VENC_DRV_PARAM_ENC_H264_T or ... | |
500 | VAL_MEMORY_T rExtraEncMem; ///< [IN/OUT] Extra Encoder Memory Info | |
501 | VAL_BOOL_T fgUseMCI; ///< [IN/OUT] Use MCI | |
502 | VAL_BOOL_T fgMultiSlice; ///< [IN/OUT] Is multi-slice bitstream ? | |
503 | } VENC_DRV_PARAM_ENC_T; | |
504 | ||
505 | /** | |
506 | * @par Structure | |
507 | * P_VENC_DRV_PARAM_ENC_T | |
508 | * @par Description | |
509 | * This is the pointer of VENC_DRV_PARAM_ENC_T | |
510 | */ | |
511 | typedef VENC_DRV_PARAM_ENC_T *P_VENC_DRV_PARAM_ENC_T; | |
512 | ||
513 | ||
514 | /** | |
515 | * @par Structure | |
516 | * VENC_DRV_PARAM_ENC_EXTRA_T | |
517 | * @par Description | |
518 | * This is the encoder settings and used as input or output parameter for eVEncDrvSetParam() or eVEncDrvGetParam() | |
519 | */ | |
520 | typedef struct __VENC_DRV_PARAM_ENC_EXTRA_T | |
521 | { | |
522 | VAL_UINT32_T u4IntraFrameRate; ///< [IN/OUT] Intra frame rate | |
523 | VAL_UINT32_T u4BitRate; ///< [IN/OUT] BitRate kbps | |
524 | VAL_UINT32_T u4FrameRateQ16; ///< [IN/OUT] Frame rate in Q16 format | |
525 | VAL_UINT32_T u4UseMBAFF; ///< [IN/OUT] Use MBAFF | |
526 | } VENC_DRV_PARAM_ENC_EXTRA_T; | |
527 | ||
528 | /** | |
529 | * @par Structure | |
530 | * P_VENC_DRV_PARAM_ENC_EXTRA_T | |
531 | * @par Description | |
532 | * This is the pointer of VENC_DRV_PARAM_ENC_EXTRA_T | |
533 | */ | |
534 | typedef VENC_DRV_PARAM_ENC_EXTRA_T *pVENC_DRV_PARAM_ENC_EXTRA_T; | |
535 | ||
536 | ||
537 | #define VENC_DRV_VDO_PROP_LIST_MAX (64) | |
538 | ||
539 | /** | |
540 | * @par Structure | |
541 | * VENC_DRV_VIDEO_PROPERTY_T | |
542 | * @par Description | |
543 | * This is used to get the "target bitrate" according to "resolution and frame rate" | |
544 | */ | |
545 | typedef struct __VENC_DRV_VIDEO_PROPERTY_T | |
546 | { | |
547 | VENC_DRV_VIDEO_FORMAT_T eVideoFormat; | |
548 | VAL_UINT32_T u4Width; | |
549 | VAL_UINT32_T u4Height; | |
550 | VAL_UINT32_T u4FrameRate; | |
551 | VAL_UINT32_T u4BitRate; // used for query table | |
552 | VAL_BOOL_T fgPropIsValid; | |
553 | } VENC_DRV_VIDEO_PROPERTY_T; | |
554 | ||
555 | /** | |
556 | * @par Structure | |
557 | * P_VENC_DRV_VIDEO_PROPERTY_T | |
558 | * @par Description | |
559 | * This is the pointer of VENC_DRV_VIDEO_PROPERTY_T | |
560 | */ | |
561 | typedef VENC_DRV_VIDEO_PROPERTY_T *P_VENC_DRV_VIDEO_PROPERTY_T; | |
562 | ||
563 | ||
564 | /** | |
565 | * @par Structure | |
566 | * VENC_DRV_TIMESTAMP_T | |
567 | * @par Description | |
568 | * This is timestamp information and used as items for VENC_DRV_PARAM_FRM_BUF_T and VENC_DRV_PARAM_BS_BUF_T | |
569 | */ | |
570 | typedef struct __VENC_DRV_TIMESTAMP_T | |
571 | { | |
572 | VAL_UINT32_T u4TimeStamp[2]; ///< [IN] Timestamp information | |
573 | } VENC_DRV_TIMESTAMP_T; | |
574 | ||
575 | /** | |
576 | * @par Structure | |
577 | * P_VENC_DRV_TIMESTAMP_T | |
578 | * @par Description | |
579 | * This is the pointer of VENC_DRV_TIMESTAMP_T | |
580 | */ | |
581 | typedef VENC_DRV_TIMESTAMP_T *P_VENC_DRV_TIMESTAMP_T; | |
582 | ||
583 | ||
584 | /** | |
585 | * @par Structure | |
586 | * VENC_DRV_EIS_INPUT_T | |
587 | * @par Description | |
588 | * This is EIS information and used as items for VENC_DRV_PARAM_FRM_BUF_T | |
589 | */ | |
590 | typedef struct __VENC_DRV_EIS_INPUT_T | |
591 | { | |
592 | VAL_UINT32_T u4X; ///< [IN] Start coordination X | |
593 | VAL_UINT32_T u4Y; ///< [IN] Start coordination Y | |
594 | } VENC_DRV_EIS_INPUT_T; | |
595 | ||
596 | /** | |
597 | * @par Structure | |
598 | * P_VENC_DRV_EIS_INPUT_T | |
599 | * @par Description | |
600 | * This is the pointer of VENC_DRV_EIS_INPUT_T | |
601 | */ | |
602 | typedef VENC_DRV_EIS_INPUT_T *P_VENC_DRV_EIS_INPUT_T; | |
603 | ||
604 | ||
605 | /** | |
606 | * @par Structure | |
607 | * VENC_DRV_PARAM_FRM_BUF_T | |
608 | * @par Description | |
609 | * This is frame buffer information and used as input parameter for eVEncDrvEncode() | |
610 | */ | |
611 | typedef struct __VENC_DRV_PARAM_FRM_BUF_T | |
612 | { | |
613 | VAL_MEM_ADDR_T rFrmBufAddr; ///< [IN] Frame buffer address | |
614 | VAL_MEM_ADDR_T rCoarseAddr; ///< [IN] Coarse address | |
615 | VENC_DRV_TIMESTAMP_T rTimeStamp; ///< [IN] Timestamp information | |
616 | VENC_DRV_EIS_INPUT_T rEISInput; ///< [IN] EIS information | |
617 | VAL_UINT32_T rSecMemHandle; ///< [IN/OUT] security memory handle for SVP | |
618 | } VENC_DRV_PARAM_FRM_BUF_T; | |
619 | ||
620 | /** | |
621 | * @par Structure | |
622 | * P_VENC_DRV_PARAM_FRM_BUF_T | |
623 | * @par Description | |
624 | * This is the pointer of VENC_DRV_PARAM_FRM_BUF_T | |
625 | */ | |
626 | typedef VENC_DRV_PARAM_FRM_BUF_T *P_VENC_DRV_PARAM_FRM_BUF_T; | |
627 | ||
628 | ||
629 | /** | |
630 | * @par Structure | |
631 | * VENC_DRV_PARAM_BS_BUF_T | |
632 | * @par Description | |
633 | * This is bitstream buffer information and used as input parameter for\n | |
634 | * eVEncDrvEncode()\n | |
635 | */ | |
636 | typedef struct __VENC_DRV_PARAM_BS_BUF_T | |
637 | { | |
638 | VAL_MEM_ADDR_T rBSAddr; ///< [IN] Bitstream buffer address | |
639 | VAL_ULONG_T u4BSStartVA; ///< [IN] Bitstream fill start address | |
640 | VAL_ULONG_T u4BSSize; ///< [IN] Bitstream size (filled bitstream in bytes) | |
641 | VENC_DRV_TIMESTAMP_T rTimeStamp; ///< [IN] Time stamp information | |
642 | VAL_UINT32_T rSecMemHandle; ///< [IN/OUT] security memory handle for SVP | |
643 | } VENC_DRV_PARAM_BS_BUF_T; | |
644 | ||
645 | /** | |
646 | * @par Structure | |
647 | * P_VENC_DRV_PARAM_BS_BUF_T | |
648 | * @par Description | |
649 | * This is the pointer of VENC_DRV_PARAM_BS_BUF_T | |
650 | */ | |
651 | typedef VENC_DRV_PARAM_BS_BUF_T *P_VENC_DRV_PARAM_BS_BUF_T; | |
652 | ||
653 | ||
654 | /** | |
655 | * @par Structure | |
656 | * VENC_DRV_DONE_RESULT_T | |
657 | * @par Description | |
658 | * This is callback and return information and used as output parameter for eVEncDrvEncode() | |
659 | */ | |
660 | typedef struct __VENC_DRV_DONE_RESULT_T | |
661 | { | |
662 | VENC_DRV_MESSAGE_T eMessage; ///< [OUT] Message, such as success or error code | |
663 | P_VENC_DRV_PARAM_BS_BUF_T prBSBuf; ///< [OUT] Bitstream information | |
664 | P_VENC_DRV_PARAM_FRM_BUF_T prFrmBuf; ///< [OUT] Input frame buffer information. if address is null, don't use this buffer, else reuse | |
665 | VAL_BOOL_T fgIsKeyFrm; ///< [OUT] output is key frame or not | |
666 | VAL_UINT32_T u4HWEncodeTime; ///< [OUT] HW encode Time | |
667 | } VENC_DRV_DONE_RESULT_T; | |
668 | ||
669 | /** | |
670 | * @par Structure | |
671 | * P_VENC_DRV_DONE_RESULT_T | |
672 | * @par Description | |
673 | * This is the pointer of VENC_DRV_DONE_RESULT_T | |
674 | */ | |
675 | typedef VENC_DRV_DONE_RESULT_T *P_VENC_DRV_DONE_RESULT_T; | |
676 | ||
677 | ||
678 | /** | |
679 | * @par Structure | |
680 | * VENC_DRV_PROPERTY_T | |
681 | * @par Description | |
682 | * This is property information and used as output parameter for eVEncDrvQueryCapability() | |
683 | */ | |
684 | typedef struct __VENC_DRV_PROPERTY_T | |
685 | { | |
686 | VAL_UINT32_T u4BufAlign; ///< [OUT] Buffer alignment requirement | |
687 | VAL_UINT32_T u4BufUnitSize; ///< [OUT] Buffer unit size is N bytes (e.g., 8, 16, or 64 bytes per unit.) | |
688 | VAL_UINT32_T u4ExtraBufSize; ///< [OUT] Extra buffer size in initial stage | |
689 | VAL_BOOL_T fgOutputRingBuf; ///< [OUT] Output is ring buffer | |
690 | VAL_BOOL_T fgCoarseMESupport; ///< [OUT] Support ME coarse search | |
691 | VAL_BOOL_T fgEISSupport; ///< [OUT] Support EIS | |
692 | } VENC_DRV_PROPERTY_T; | |
693 | ||
694 | /** | |
695 | * @par Structure | |
696 | * P_VENC_DRV_PROPERTY_T | |
697 | * @par Description | |
698 | * This is the pointer of VENC_DRV_PROPERTY_T | |
699 | */ | |
700 | typedef VENC_DRV_PROPERTY_T *P_VENC_DRV_PROPERTY_T; | |
701 | ||
702 | ||
703 | /** | |
704 | * @par Function | |
705 | * eVEncDrvQueryCapability | |
706 | * @par Description | |
707 | * Query the driver capability | |
708 | * @param | |
709 | * a_eType [IN/OUT] The VENC_DRV_QUERY_TYPE_T structure | |
710 | * @param | |
711 | * a_pvInParam [IN] The input parameter | |
712 | * @param | |
713 | * a_pvOutParam [OUT] The output parameter | |
714 | * @par Returns | |
715 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
716 | */ | |
717 | VENC_DRV_MRESULT_T eVEncDrvQueryCapability( | |
718 | VENC_DRV_QUERY_TYPE_T a_eType, | |
719 | VAL_VOID_T *a_pvInParam, | |
720 | VAL_VOID_T *a_pvOutParam | |
721 | ); | |
722 | ||
723 | ||
724 | /** | |
725 | * @par Function | |
726 | * eVEncDrvCreate | |
727 | * @par Description | |
728 | * Create the driver handle | |
729 | * @param | |
730 | * a_phHandle [OUT] The driver handle | |
731 | * @param | |
732 | * a_eVideoFormat [IN] The VENC_DRV_VIDEO_FORMAT_T structure | |
733 | * @par Returns | |
734 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
735 | */ | |
736 | VENC_DRV_MRESULT_T eVEncDrvCreate( | |
737 | VAL_HANDLE_T *a_phHandle, | |
738 | VENC_DRV_VIDEO_FORMAT_T a_eVideoFormat | |
739 | ); | |
740 | ||
741 | ||
742 | /** | |
743 | * @par Function | |
744 | * eVEncDrvRelease | |
745 | * @par Description | |
746 | * Release the driver handle | |
747 | * @param | |
748 | * a_hHandle [IN] The driver handle | |
749 | * @param | |
750 | * a_eVideoFormat [IN] The VENC_DRV_VIDEO_FORMAT_T structure | |
751 | * @par Returns | |
752 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
753 | */ | |
754 | VENC_DRV_MRESULT_T eVEncDrvRelease( | |
755 | VAL_HANDLE_T a_hHandle, | |
756 | VENC_DRV_VIDEO_FORMAT_T a_eVideoFormat | |
757 | ); | |
758 | ||
759 | ||
760 | /** | |
761 | * @par Function | |
762 | * eVEncDrvInit | |
763 | * @par Description | |
764 | * Init the driver setting, alloc working memory ... etc. | |
765 | * @param | |
766 | * a_hHandle [IN] The driver handle | |
767 | * @par Returns | |
768 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
769 | */ | |
770 | VENC_DRV_MRESULT_T eVEncDrvInit( | |
771 | VAL_HANDLE_T a_hHandle | |
772 | ); | |
773 | ||
774 | /** | |
775 | * @par Function | |
776 | * eVEncDrvDeInit | |
777 | * @par Description | |
778 | * DeInit the driver setting, free working memory ... etc. | |
779 | * @param | |
780 | * a_hHandle [IN] The driver handle | |
781 | * @par Returns | |
782 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
783 | */ | |
784 | VENC_DRV_MRESULT_T eVEncDrvDeInit( | |
785 | VAL_HANDLE_T a_hHandle | |
786 | ); | |
787 | ||
788 | ||
789 | /** | |
790 | * @par Function | |
791 | * eVEncDrvSetParam | |
792 | * @par Description | |
793 | * Set parameter to driver | |
794 | * @param | |
795 | * a_hHandle [IN] The driver handle | |
796 | * @param | |
797 | * a_eType [IN] The VENC_DRV_SET_TYPE_T structure | |
798 | * @param | |
799 | * a_pvInParam [IN] The input parameter | |
800 | * @param | |
801 | * a_pvOutParam [OUT] The output parameter | |
802 | * @par Returns | |
803 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
804 | */ | |
805 | VENC_DRV_MRESULT_T eVEncDrvSetParam( | |
806 | VAL_HANDLE_T a_hHandle, | |
807 | VENC_DRV_SET_TYPE_T a_eType, | |
808 | VAL_VOID_T *a_pvInParam, | |
809 | VAL_VOID_T *a_pvOutParam | |
810 | ); | |
811 | ||
812 | ||
813 | /** | |
814 | * @par Function | |
815 | * eVEncDrvGetParam | |
816 | * @par Description | |
817 | * Get parameter from driver | |
818 | * @param | |
819 | * a_hHandle [IN] The driver handle | |
820 | * @param | |
821 | * a_eType [IN] The VENC_DRV_SET_TYPE_T structure | |
822 | * @param | |
823 | * a_pvInParam [IN] The input parameter | |
824 | * @param | |
825 | * a_pvOutParam [OUT] The output parameter | |
826 | * @par Returns | |
827 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
828 | */ | |
829 | VENC_DRV_MRESULT_T eVEncDrvGetParam( | |
830 | VAL_HANDLE_T a_hHandle, | |
831 | VENC_DRV_GET_TYPE_T a_eType, | |
832 | VAL_VOID_T *a_pvInParam, | |
833 | VAL_VOID_T *a_pvOutParam | |
834 | ); | |
835 | ||
836 | ||
837 | /** | |
838 | * @par Function | |
839 | * eVEncDrvEncode | |
840 | * @par Description | |
841 | * Encode frame | |
842 | * @param | |
843 | * a_hHandle [IN] The driver handle | |
844 | * @param | |
845 | * a_eOpt [IN] The VENC_DRV_START_OPT_T structure | |
846 | * @param | |
847 | * a_prFrmBuf [IN] The input frame buffer with VENC_DRV_PARAM_FRM_BUF_T structure | |
848 | * @param | |
849 | * a_prBSBuf [IN] The input bitstream buffer with VENC_DRV_PARAM_BS_BUF_T structure | |
850 | * @param | |
851 | * a_prResult [OUT] The output result with VENC_DRV_DONE_RESULT_T structure | |
852 | * @par Returns | |
853 | * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail | |
854 | */ | |
855 | VENC_DRV_MRESULT_T eVEncDrvEncode( | |
856 | VAL_HANDLE_T a_hHandle, | |
857 | VENC_DRV_START_OPT_T a_eOpt, | |
858 | VENC_DRV_PARAM_FRM_BUF_T *a_prFrmBuf, | |
859 | VENC_DRV_PARAM_BS_BUF_T *a_prBSBuf, | |
860 | VENC_DRV_DONE_RESULT_T *a_prResult | |
861 | ); | |
862 | ||
863 | ||
864 | #ifdef __cplusplus | |
865 | } | |
866 | #endif | |
867 | ||
868 | #endif // #ifndef _VENC_DRV_IF_PUBLIC_H_ |