import PULS_20180308
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / linux / vcodec / venc_drv_if_public.h
CommitLineData
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
24extern "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 */
36typedef 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}
50VENC_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 */
59typedef 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 */
82typedef 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 */
107typedef 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 */
133typedef 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 */
153typedef 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 */
170typedef 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 */
200typedef 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 */
230typedef 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 */
259typedef 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 */
278typedef 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 */
314typedef 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 */
342typedef 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 */
386typedef 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 */
412typedef 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 */
426typedef 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 */
442typedef 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 */
460typedef 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 */
469typedef 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 */
486typedef 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 */
511typedef 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 */
520typedef 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 */
534typedef 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 */
545typedef 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 */
561typedef 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 */
570typedef 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 */
581typedef 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 */
590typedef 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 */
602typedef 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 */
611typedef 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 */
626typedef 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 */
636typedef 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 */
651typedef 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 */
660typedef 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 */
675typedef 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 */
684typedef 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 */
700typedef 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 */
717VENC_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 */
736VENC_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 */
754VENC_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 */
770VENC_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 */
784VENC_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 */
805VENC_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 */
829VENC_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 */
855VENC_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_