1#[doc = "< rgb color formats"]
4pub const videoFormatRGB: EVideoFormatType = 1;
5pub const videoFormatRGBA: EVideoFormatType = 2;
6pub const videoFormatRGB555: EVideoFormatType = 3;
7pub const videoFormatRGB565: EVideoFormatType = 4;
8pub const videoFormatBGR: EVideoFormatType = 5;
9pub const videoFormatBGRA: EVideoFormatType = 6;
10pub const videoFormatABGR: EVideoFormatType = 7;
11pub const videoFormatARGB: EVideoFormatType = 8;
12#[doc = "< yuv color formats"]
13pub const videoFormatYUY2: EVideoFormatType = 20;
14pub const videoFormatYVYU: EVideoFormatType = 21;
15pub const videoFormatUYVY: EVideoFormatType = 22;
16#[doc = "< the same as IYUV"]
17pub const videoFormatI420: EVideoFormatType = 23;
18pub const videoFormatYV12: EVideoFormatType = 24;
19#[doc = "< only used in SVC decoder testbed"]
20pub const videoFormatInternal: EVideoFormatType = 25;
21#[doc = "< new format for output by DXVA decoding"]
22pub const videoFormatNV12: EVideoFormatType = 26;
23pub const videoFormatVFlip: EVideoFormatType = -2147483648;
24#[doc = " @brief Enumerate the type of video format"]
25pub type EVideoFormatType = ::std::os::raw::c_int;
26#[doc = "< encoder not ready or parameters are invalidate"]
27pub const videoFrameTypeInvalid: EVideoFrameType = 0;
28#[doc = "< IDR frame in H.264"]
29pub const videoFrameTypeIDR: EVideoFrameType = 1;
30#[doc = "< I frame type"]
31pub const videoFrameTypeI: EVideoFrameType = 2;
32#[doc = "< P frame type"]
33pub const videoFrameTypeP: EVideoFrameType = 3;
34#[doc = "< skip the frame based encoder kernel"]
35pub const videoFrameTypeSkip: EVideoFrameType = 4;
36#[doc = "< a frame where I and P slices are mixing, not supported yet"]
37pub const videoFrameTypeIPMixed: EVideoFrameType = 5;
38#[doc = " @brief Enumerate video frame type"]
39pub type EVideoFrameType = ::std::os::raw::c_int;
40#[doc = "< successful"]
41pub const cmResultSuccess: CM_RETURN = 0;
42#[doc = "< parameters are invalid"]
43pub const cmInitParaError: CM_RETURN = 1;
44pub const cmUnknownReason: CM_RETURN = 2;
45#[doc = "< malloc a memory error"]
46pub const cmMallocMemeError: CM_RETURN = 3;
47#[doc = "< initial action is expected"]
48pub const cmInitExpected: CM_RETURN = 4;
49pub const cmUnsupportedData: CM_RETURN = 5;
50#[doc = " @brief Enumerate return type"]
51pub type CM_RETURN = ::std::os::raw::c_int;
52pub const NAL_UNKNOWN: ENalUnitType = 0;
53pub const NAL_SLICE: ENalUnitType = 1;
54pub const NAL_SLICE_DPA: ENalUnitType = 2;
55pub const NAL_SLICE_DPB: ENalUnitType = 3;
56pub const NAL_SLICE_DPC: ENalUnitType = 4;
57#[doc = "< ref_idc != 0"]
58pub const NAL_SLICE_IDR: ENalUnitType = 5;
59#[doc = "< ref_idc == 0"]
60pub const NAL_SEI: ENalUnitType = 6;
61pub const NAL_SPS: ENalUnitType = 7;
62pub const NAL_PPS: ENalUnitType = 8;
63#[doc = " @brief Enumulate the nal unit type"]
64pub type ENalUnitType = ::std::os::raw::c_int;
65pub const NAL_PRIORITY_DISPOSABLE: ENalPriority = 0;
66pub const NAL_PRIORITY_LOW: ENalPriority = 1;
67pub const NAL_PRIORITY_HIGH: ENalPriority = 2;
68pub const NAL_PRIORITY_HIGHEST: ENalPriority = 3;
69#[doc = " @brief NRI: eNalRefIdc"]
70pub type ENalPriority = ::std::os::raw::c_int;
71pub const DEBLOCKING_IDC_0: _bindgen_ty_1 = 0;
72pub const DEBLOCKING_IDC_1: _bindgen_ty_1 = 1;
73pub const DEBLOCKING_IDC_2: _bindgen_ty_1 = 2;
74#[doc = " @brief eDeblockingIdc"]
75pub type _bindgen_ty_1 = ::std::os::raw::c_int;
76pub type ERR_TOOL = ::std::os::raw::c_ushort;
77#[doc = "< NONE Error Tools"]
78pub const ET_NONE: _bindgen_ty_2 = 0;
79#[doc = "< IP Scalable"]
80pub const ET_IP_SCALE: _bindgen_ty_2 = 1;
81#[doc = "< Flexible Macroblock Ordering"]
82pub const ET_FMO: _bindgen_ty_2 = 2;
83#[doc = "< Intra Refresh in predifined 2% MB"]
84pub const ET_IR_R1: _bindgen_ty_2 = 4;
85#[doc = "< Intra Refresh in predifined 5% MB"]
86pub const ET_IR_R2: _bindgen_ty_2 = 8;
87#[doc = "< Intra Refresh in predifined 10% MB"]
88pub const ET_IR_R3: _bindgen_ty_2 = 16;
89#[doc = "< Forward Error Correction in 50% redundency mode"]
90pub const ET_FEC_HALF: _bindgen_ty_2 = 32;
91#[doc = "< Forward Error Correction in 100% redundency mode"]
92pub const ET_FEC_FULL: _bindgen_ty_2 = 64;
93#[doc = "< Reference Frame Selection"]
94pub const ET_RFS: _bindgen_ty_2 = 128;
95#[doc = "@brief to do"]
96pub type _bindgen_ty_2 = ::std::os::raw::c_int;
97#[doc = " @brief Information of coded Slice(=NAL)(s)"]
98#[repr(C)]
99#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
100pub struct SliceInformation {
101 #[doc = "< base buffer of coded slice(s)"]
102 pub pBufferOfSlices: *mut ::std::os::raw::c_uchar,
103 #[doc = "< number of coded slices"]
104 pub iCodedSliceCount: ::std::os::raw::c_int,
105 #[doc = "< array of slices length accordingly by number of slice"]
106 pub pLengthOfSlices: *mut ::std::os::raw::c_uint,
107 #[doc = "< FEC type[0, 50%FEC, 100%FEC]"]
108 pub iFecType: ::std::os::raw::c_int,
109 #[doc = "< index of slice in frame [FMO: 0,..,uiSliceCount-1; No FMO: 0]"]
110 pub uiSliceIdx: ::std::os::raw::c_uchar,
111 #[doc = "< count number of slice in frame [FMO: 2-8; No FMO: 1]"]
112 pub uiSliceCount: ::std::os::raw::c_uchar,
113 #[doc = "< index of frame[-1, .., idr_interval-1]"]
114 pub iFrameIndex: ::std::os::raw::c_char,
115 #[doc = "< NRI, priority level of slice(NAL)"]
116 pub uiNalRefIdc: ::std::os::raw::c_uchar,
117 #[doc = "< NAL type"]
118 pub uiNalType: ::std::os::raw::c_uchar,
119 #[doc = "< whether final NAL is involved in buffer of coded slices, flag used in Pause feature in T27"]
120 pub uiContainingFinalNal: ::std::os::raw::c_uchar,
121}
122impl Default for SliceInformation {
123 fn default() -> Self {
124 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
125 unsafe {
126 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
127 s.assume_init()
128 }
129 }
130}
131#[doc = " @brief Information of coded Slice(=NAL)(s)"]
132pub type SliceInfo = SliceInformation;
133#[doc = " @brief Information of coded Slice(=NAL)(s)"]
134pub type PSliceInfo = *mut SliceInformation;
135#[doc = " @brief thresholds of the initial, maximal and minimal rate"]
136#[repr(C)]
137#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
138pub struct SRateThresholds {
139 #[doc = "< frame width"]
140 pub iWidth: ::std::os::raw::c_int,
141 #[doc = "< frame height"]
142 pub iHeight: ::std::os::raw::c_int,
143 #[doc = "< threshold of initial rate"]
144 pub iThresholdOfInitRate: ::std::os::raw::c_int,
145 #[doc = "< threshold of maximal rate"]
146 pub iThresholdOfMaxRate: ::std::os::raw::c_int,
147 #[doc = "< threshold of minimal rate"]
148 pub iThresholdOfMinRate: ::std::os::raw::c_int,
149 #[doc = "< min frame rate min"]
150 pub iMinThresholdFrameRate: ::std::os::raw::c_int,
151 #[doc = "< skip to frame rate min"]
152 pub iSkipFrameRate: ::std::os::raw::c_int,
153 #[doc = "< how many frames to skip"]
154 pub iSkipFrameStep: ::std::os::raw::c_int,
155}
156#[doc = " @brief thresholds of the initial, maximal and minimal rate"]
157pub type PRateThresholds = *mut SRateThresholds;
158#[doc = " @brief Structure for decoder memery"]
159#[repr(C)]
160#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
161pub struct TagSysMemBuffer {
162 #[doc = "< width of decoded pic for display"]
163 pub iWidth: ::std::os::raw::c_int,
164 #[doc = "< height of decoded pic for display"]
165 pub iHeight: ::std::os::raw::c_int,
166 #[doc = "< type is \"EVideoFormatType\""]
167 pub iFormat: ::std::os::raw::c_int,
168 #[doc = "< stride of 2 component"]
169 pub iStride: [::std::os::raw::c_int; 2usize],
170}
171#[doc = " @brief Structure for decoder memery"]
172pub type SSysMEMBuffer = TagSysMemBuffer;
173#[doc = " @brief Buffer info"]
174#[repr(C)]
175#[derive(Copy, Clone)]
176pub struct TagBufferInfo {
177 #[doc = "< 0: one frame data is not ready; 1: one frame data is ready"]
178 pub iBufferStatus: ::std::os::raw::c_int,
179 #[doc = "< input BS timestamp"]
180 pub uiInBsTimeStamp: ::std::os::raw::c_ulonglong,
181 #[doc = "< output YUV timestamp, when bufferstatus is 1"]
182 pub uiOutYuvTimeStamp: ::std::os::raw::c_ulonglong,
183 #[doc = "< output buffer info"]
184 pub UsrData: TagBufferInfo__bindgen_ty_1,
185 pub pDst: [*mut ::std::os::raw::c_uchar; 3usize],
186}
187#[repr(C)]
188#[derive(Copy, Clone)]
189pub union TagBufferInfo__bindgen_ty_1 {
190 #[doc = "< memory info for one picture"]
191 pub sSystemBuffer: SSysMEMBuffer,
192}
193impl Default for TagBufferInfo__bindgen_ty_1 {
194 fn default() -> Self {
195 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
196 unsafe {
197 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
198 s.assume_init()
199 }
200 }
201}
202impl Default for TagBufferInfo {
203 fn default() -> Self {
204 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
205 unsafe {
206 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
207 s.assume_init()
208 }
209 }
210}
211#[doc = " @brief Buffer info"]
212pub type SBufferInfo = TagBufferInfo;
213#[doc = " @brief Struct of OpenH264 version\n/\n///\n/// E.g. SDK version is 1.2.0.0, major version number is 1, minor version number is 2, and revision number is 0."]
214#[repr(C)]
215#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
216pub struct _tagVersion {
217 #[doc = "< The major version number"]
218 pub uMajor: ::std::os::raw::c_uint,
219 #[doc = "< The minor version number"]
220 pub uMinor: ::std::os::raw::c_uint,
221 #[doc = "< The revision number"]
222 pub uRevision: ::std::os::raw::c_uint,
223 #[doc = "< The reserved number, it should be 0."]
224 pub uReserved: ::std::os::raw::c_uint,
225}
226#[doc = " @brief Struct of OpenH264 version\n/\n///\n/// E.g. SDK version is 1.2.0.0, major version number is 1, minor version number is 2, and revision number is 0."]
227pub type OpenH264Version = _tagVersion;
228#[doc = "< bit stream error-free"]
229pub const dsErrorFree: DECODING_STATE = 0;
230#[doc = "< need more throughput to generate a frame output,"]
231pub const dsFramePending: DECODING_STATE = 1;
232#[doc = "< layer lost at reference frame with temporal id 0"]
233pub const dsRefLost: DECODING_STATE = 2;
234#[doc = "< error bitstreams(maybe broken internal frame) the decoder cared"]
235pub const dsBitstreamError: DECODING_STATE = 4;
236#[doc = "< dependented layer is ever lost"]
237pub const dsDepLayerLost: DECODING_STATE = 8;
238#[doc = "< no parameter set NALs involved"]
239pub const dsNoParamSets: DECODING_STATE = 16;
240#[doc = "< current data error concealed specified"]
241pub const dsDataErrorConcealed: DECODING_STATE = 32;
242#[doc = "<ref picure list contains null ptrs within uiRefCount range"]
243pub const dsRefListNullPtrs: DECODING_STATE = 64;
244#[doc = "< invalid argument specified"]
245pub const dsInvalidArgument: DECODING_STATE = 4096;
246#[doc = "< initializing operation is expected"]
247pub const dsInitialOptExpected: DECODING_STATE = 8192;
248#[doc = "< out of memory due to new request"]
249pub const dsOutOfMemory: DECODING_STATE = 16384;
250#[doc = "< actual picture size exceeds size of dst pBuffer feed in decoder, so need expand its size"]
251pub const dsDstBufNeedExpan: DECODING_STATE = 32768;
252#[doc = " @brief Decoding status"]
253pub type DECODING_STATE = ::std::os::raw::c_int;
254pub const ENCODER_OPTION_DATAFORMAT: ENCODER_OPTION = 0;
255#[doc = "< IDR period,0/-1 means no Intra period (only the first frame); lager than 0 means the desired IDR period, must be multiple of (2^temporal_layer)"]
256pub const ENCODER_OPTION_IDR_INTERVAL: ENCODER_OPTION = 1;
257#[doc = "< structure of Base Param"]
258pub const ENCODER_OPTION_SVC_ENCODE_PARAM_BASE: ENCODER_OPTION = 2;
259#[doc = "< structure of Extension Param"]
260pub const ENCODER_OPTION_SVC_ENCODE_PARAM_EXT: ENCODER_OPTION = 3;
261#[doc = "< maximal input frame rate, current supported range: MAX_FRAME_RATE = 30,MIN_FRAME_RATE = 1"]
262pub const ENCODER_OPTION_FRAME_RATE: ENCODER_OPTION = 4;
263pub const ENCODER_OPTION_BITRATE: ENCODER_OPTION = 5;
264pub const ENCODER_OPTION_MAX_BITRATE: ENCODER_OPTION = 6;
265pub const ENCODER_OPTION_INTER_SPATIAL_PRED: ENCODER_OPTION = 7;
266pub const ENCODER_OPTION_RC_MODE: ENCODER_OPTION = 8;
267pub const ENCODER_OPTION_RC_FRAME_SKIP: ENCODER_OPTION = 9;
268#[doc = "< 0:disable padding;1:padding"]
269pub const ENCODER_PADDING_PADDING: ENCODER_OPTION = 10;
270#[doc = "< assgin the profile for each layer"]
271pub const ENCODER_OPTION_PROFILE: ENCODER_OPTION = 11;
272#[doc = "< assgin the level for each layer"]
273pub const ENCODER_OPTION_LEVEL: ENCODER_OPTION = 12;
274#[doc = "< the number of refererence frame"]
275pub const ENCODER_OPTION_NUMBER_REF: ENCODER_OPTION = 13;
276#[doc = "< the delivery info which is a feedback from app level"]
277pub const ENCODER_OPTION_DELIVERY_STATUS: ENCODER_OPTION = 14;
278pub const ENCODER_LTR_RECOVERY_REQUEST: ENCODER_OPTION = 15;
279pub const ENCODER_LTR_MARKING_FEEDBACK: ENCODER_OPTION = 16;
280pub const ENCODER_LTR_MARKING_PERIOD: ENCODER_OPTION = 17;
281#[doc = "< 0:disable LTR;larger than 0 enable LTR; LTR number is fixed to be 2 in current encoder"]
282pub const ENCODER_OPTION_LTR: ENCODER_OPTION = 18;
283pub const ENCODER_OPTION_COMPLEXITY: ENCODER_OPTION = 19;
284#[doc = "< enable SSEI: true--enable ssei; false--disable ssei"]
285pub const ENCODER_OPTION_ENABLE_SSEI: ENCODER_OPTION = 20;
286#[doc = "< enable prefix: true--enable prefix; false--disable prefix"]
287pub const ENCODER_OPTION_ENABLE_PREFIX_NAL_ADDING: ENCODER_OPTION = 21;
288#[doc = "< different stategy in adjust ID in SPS/PPS: 0- constant ID, 1-additional ID, 6-mapping and additional"]
289pub const ENCODER_OPTION_SPS_PPS_ID_STRATEGY: ENCODER_OPTION = 22;
290pub const ENCODER_OPTION_CURRENT_PATH: ENCODER_OPTION = 23;
291#[doc = "< dump layer reconstruct frame to a specified file"]
292pub const ENCODER_OPTION_DUMP_FILE: ENCODER_OPTION = 24;
293#[doc = "< trace info based on the trace level"]
294pub const ENCODER_OPTION_TRACE_LEVEL: ENCODER_OPTION = 25;
295#[doc = "< a void (*)(void* context, int level, const char* message) function which receives log messages"]
296pub const ENCODER_OPTION_TRACE_CALLBACK: ENCODER_OPTION = 26;
297#[doc = "< context info of trace callback"]
298pub const ENCODER_OPTION_TRACE_CALLBACK_CONTEXT: ENCODER_OPTION = 27;
299#[doc = "< read only"]
300pub const ENCODER_OPTION_GET_STATISTICS: ENCODER_OPTION = 28;
301#[doc = "< log interval in millisecond"]
302pub const ENCODER_OPTION_STATISTICS_LOG_INTERVAL: ENCODER_OPTION = 29;
303#[doc = "< advanced algorithmetic settings"]
304pub const ENCODER_OPTION_IS_LOSSLESS_LINK: ENCODER_OPTION = 30;
305#[doc = "< bit vary percentage"]
306pub const ENCODER_OPTION_BITS_VARY_PERCENTAGE: ENCODER_OPTION = 31;
307#[doc = " @brief Option types introduced in SVC encoder application"]
308pub type ENCODER_OPTION = ::std::os::raw::c_int;
309#[doc = "< end of stream flag"]
310pub const DECODER_OPTION_END_OF_STREAM: DECODER_OPTION = 1;
311#[doc = "< feedback whether or not have VCL NAL in current AU for application layer"]
312pub const DECODER_OPTION_VCL_NAL: DECODER_OPTION = 2;
313#[doc = "< feedback temporal id for application layer"]
314pub const DECODER_OPTION_TEMPORAL_ID: DECODER_OPTION = 3;
315#[doc = "< feedback current decoded frame number"]
316pub const DECODER_OPTION_FRAME_NUM: DECODER_OPTION = 4;
317#[doc = "< feedback current frame belong to which IDR period"]
318pub const DECODER_OPTION_IDR_PIC_ID: DECODER_OPTION = 5;
319#[doc = "< feedback wether current frame mark a LTR"]
320pub const DECODER_OPTION_LTR_MARKING_FLAG: DECODER_OPTION = 6;
321#[doc = "< feedback frame num marked by current Frame"]
322pub const DECODER_OPTION_LTR_MARKED_FRAME_NUM: DECODER_OPTION = 7;
323#[doc = "< indicate decoder error concealment method"]
324pub const DECODER_OPTION_ERROR_CON_IDC: DECODER_OPTION = 8;
325pub const DECODER_OPTION_TRACE_LEVEL: DECODER_OPTION = 9;
326#[doc = "< a void (*)(void* context, int level, const char* message) function which receives log messages"]
327pub const DECODER_OPTION_TRACE_CALLBACK: DECODER_OPTION = 10;
328#[doc = "< context info of trace callbac"]
329pub const DECODER_OPTION_TRACE_CALLBACK_CONTEXT: DECODER_OPTION = 11;
330#[doc = "< feedback decoder statistics"]
331pub const DECODER_OPTION_GET_STATISTICS: DECODER_OPTION = 12;
332#[doc = "< feedback decoder Sample Aspect Ratio info in Vui"]
333pub const DECODER_OPTION_GET_SAR_INFO: DECODER_OPTION = 13;
334#[doc = "< get current AU profile info, only is used in GetOption"]
335pub const DECODER_OPTION_PROFILE: DECODER_OPTION = 14;
336#[doc = "< get current AU level info,only is used in GetOption"]
337pub const DECODER_OPTION_LEVEL: DECODER_OPTION = 15;
338#[doc = "< set log output interval"]
339pub const DECODER_OPTION_STATISTICS_LOG_INTERVAL: DECODER_OPTION = 16;
340#[doc = "< feedback current frame is ref pic or not"]
341pub const DECODER_OPTION_IS_REF_PIC: DECODER_OPTION = 17;
342#[doc = "< number of frames remaining in decoder buffer when pictures are required to re-ordered into display-order."]
343pub const DECODER_OPTION_NUM_OF_FRAMES_REMAINING_IN_BUFFER: DECODER_OPTION = 18;
344#[doc = "< number of decoding threads. The maximum thread count is equal or less than lesser of (cpu core counts and 16)."]
345pub const DECODER_OPTION_NUM_OF_THREADS: DECODER_OPTION = 19;
346#[doc = " @brief Option types introduced in decoder application"]
347pub type DECODER_OPTION = ::std::os::raw::c_int;
348pub const ERROR_CON_DISABLE: ERROR_CON_IDC = 0;
349pub const ERROR_CON_FRAME_COPY: ERROR_CON_IDC = 1;
350pub const ERROR_CON_SLICE_COPY: ERROR_CON_IDC = 2;
351pub const ERROR_CON_FRAME_COPY_CROSS_IDR: ERROR_CON_IDC = 3;
352pub const ERROR_CON_SLICE_COPY_CROSS_IDR: ERROR_CON_IDC = 4;
353pub const ERROR_CON_SLICE_COPY_CROSS_IDR_FREEZE_RES_CHANGE: ERROR_CON_IDC = 5;
354pub const ERROR_CON_SLICE_MV_COPY_CROSS_IDR: ERROR_CON_IDC = 6;
355pub const ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE: ERROR_CON_IDC = 7;
356#[doc = " @brief Enumerate the type of error concealment methods"]
357pub type ERROR_CON_IDC = ::std::os::raw::c_int;
358pub const FEEDBACK_NON_VCL_NAL: FEEDBACK_VCL_NAL_IN_AU = 0;
359pub const FEEDBACK_VCL_NAL: FEEDBACK_VCL_NAL_IN_AU = 1;
360pub const FEEDBACK_UNKNOWN_NAL: FEEDBACK_VCL_NAL_IN_AU = 2;
361#[doc = " @brief Feedback that whether or not have VCL NAL in current AU"]
362pub type FEEDBACK_VCL_NAL_IN_AU = ::std::os::raw::c_int;
363pub const NON_VIDEO_CODING_LAYER: LAYER_TYPE = 0;
364pub const VIDEO_CODING_LAYER: LAYER_TYPE = 1;
365#[doc = " @brief Type of layer being encoded"]
366pub type LAYER_TYPE = ::std::os::raw::c_int;
367pub const SPATIAL_LAYER_0: LAYER_NUM = 0;
368pub const SPATIAL_LAYER_1: LAYER_NUM = 1;
369pub const SPATIAL_LAYER_2: LAYER_NUM = 2;
370pub const SPATIAL_LAYER_3: LAYER_NUM = 3;
371pub const SPATIAL_LAYER_ALL: LAYER_NUM = 4;
372#[doc = " @brief Spatial layer num"]
373pub type LAYER_NUM = ::std::os::raw::c_int;
374pub const VIDEO_BITSTREAM_AVC: VIDEO_BITSTREAM_TYPE = 0;
375pub const VIDEO_BITSTREAM_SVC: VIDEO_BITSTREAM_TYPE = 1;
376pub const VIDEO_BITSTREAM_DEFAULT: VIDEO_BITSTREAM_TYPE = 1;
377#[doc = " @brief Enumerate the type of video bitstream which is provided to decoder"]
378pub type VIDEO_BITSTREAM_TYPE = ::std::os::raw::c_int;
379pub const NO_RECOVERY_REQUSET: KEY_FRAME_REQUEST_TYPE = 0;
380pub const LTR_RECOVERY_REQUEST: KEY_FRAME_REQUEST_TYPE = 1;
381pub const IDR_RECOVERY_REQUEST: KEY_FRAME_REQUEST_TYPE = 2;
382pub const NO_LTR_MARKING_FEEDBACK: KEY_FRAME_REQUEST_TYPE = 3;
383pub const LTR_MARKING_SUCCESS: KEY_FRAME_REQUEST_TYPE = 4;
384pub const LTR_MARKING_FAILED: KEY_FRAME_REQUEST_TYPE = 5;
385#[doc = " @brief Enumerate the type of key frame request"]
386pub type KEY_FRAME_REQUEST_TYPE = ::std::os::raw::c_int;
387#[doc = " @brief Structure for LTR recover request"]
388#[repr(C)]
389#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
390pub struct SLTRRecoverRequest {
391 #[doc = "< IDR request or LTR recovery request"]
392 pub uiFeedbackType: ::std::os::raw::c_uint,
393 #[doc = "< distinguish request from different IDR"]
394 pub uiIDRPicId: ::std::os::raw::c_uint,
395 pub iLastCorrectFrameNum: ::std::os::raw::c_int,
396 #[doc = "< specify current decoder frame_num."]
397 pub iCurrentFrameNum: ::std::os::raw::c_int,
398 pub iLayerId: ::std::os::raw::c_int,
399}
400#[doc = " @brief Structure for LTR marking feedback"]
401#[repr(C)]
402#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
403pub struct SLTRMarkingFeedback {
404 #[doc = "< mark failed or successful"]
405 pub uiFeedbackType: ::std::os::raw::c_uint,
406 #[doc = "< distinguish request from different IDR"]
407 pub uiIDRPicId: ::std::os::raw::c_uint,
408 #[doc = "< specify current decoder frame_num"]
409 pub iLTRFrameNum: ::std::os::raw::c_int,
410 pub iLayerId: ::std::os::raw::c_int,
411}
412#[doc = " @brief Structure for LTR configuration"]
413#[repr(C)]
414#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
415pub struct SLTRConfig {
416 #[doc = "< 1: on, 0: off"]
417 pub bEnableLongTermReference: bool,
418 #[doc = "< TODO: not supported to set it arbitrary yet"]
419 pub iLTRRefNum: ::std::os::raw::c_int,
420}
421#[doc = "< quality mode"]
422pub const RC_QUALITY_MODE: RC_MODES = 0;
423#[doc = "< bitrate mode"]
424pub const RC_BITRATE_MODE: RC_MODES = 1;
425#[doc = "< no bitrate control,only using buffer status,adjust the video quality"]
426pub const RC_BUFFERBASED_MODE: RC_MODES = 2;
427pub const RC_TIMESTAMP_MODE: RC_MODES = 3;
428#[doc = "< this is in-building RC MODE, WILL BE DELETED after algorithm tuning!"]
429pub const RC_BITRATE_MODE_POST_SKIP: RC_MODES = 4;
430#[doc = "< rate control off mode"]
431pub const RC_OFF_MODE: RC_MODES = -1;
432#[doc = " @brief Enumerate the type of rate control mode"]
433pub type RC_MODES = ::std::os::raw::c_int;
434pub const PRO_UNKNOWN: EProfileIdc = 0;
435pub const PRO_BASELINE: EProfileIdc = 66;
436pub const PRO_MAIN: EProfileIdc = 77;
437pub const PRO_EXTENDED: EProfileIdc = 88;
438pub const PRO_HIGH: EProfileIdc = 100;
439pub const PRO_HIGH10: EProfileIdc = 110;
440pub const PRO_HIGH422: EProfileIdc = 122;
441pub const PRO_HIGH444: EProfileIdc = 144;
442pub const PRO_CAVLC444: EProfileIdc = 244;
443pub const PRO_SCALABLE_BASELINE: EProfileIdc = 83;
444pub const PRO_SCALABLE_HIGH: EProfileIdc = 86;
445#[doc = " @brief Enumerate the type of profile id"]
446pub type EProfileIdc = ::std::os::raw::c_int;
447pub const LEVEL_UNKNOWN: ELevelIdc = 0;
448pub const LEVEL_1_0: ELevelIdc = 10;
449pub const LEVEL_1_B: ELevelIdc = 9;
450pub const LEVEL_1_1: ELevelIdc = 11;
451pub const LEVEL_1_2: ELevelIdc = 12;
452pub const LEVEL_1_3: ELevelIdc = 13;
453pub const LEVEL_2_0: ELevelIdc = 20;
454pub const LEVEL_2_1: ELevelIdc = 21;
455pub const LEVEL_2_2: ELevelIdc = 22;
456pub const LEVEL_3_0: ELevelIdc = 30;
457pub const LEVEL_3_1: ELevelIdc = 31;
458pub const LEVEL_3_2: ELevelIdc = 32;
459pub const LEVEL_4_0: ELevelIdc = 40;
460pub const LEVEL_4_1: ELevelIdc = 41;
461pub const LEVEL_4_2: ELevelIdc = 42;
462pub const LEVEL_5_0: ELevelIdc = 50;
463pub const LEVEL_5_1: ELevelIdc = 51;
464pub const LEVEL_5_2: ELevelIdc = 52;
465#[doc = " @brief Enumerate the type of level id"]
466pub type ELevelIdc = ::std::os::raw::c_int;
467#[doc = "< quiet mode"]
468pub const WELS_LOG_QUIET: _bindgen_ty_3 = 0;
469#[doc = "< error log iLevel"]
470pub const WELS_LOG_ERROR: _bindgen_ty_3 = 1;
471#[doc = "< Warning log iLevel"]
472pub const WELS_LOG_WARNING: _bindgen_ty_3 = 2;
473#[doc = "< information log iLevel"]
474pub const WELS_LOG_INFO: _bindgen_ty_3 = 4;
475#[doc = "< debug log, critical algo log"]
476pub const WELS_LOG_DEBUG: _bindgen_ty_3 = 8;
477#[doc = "< per packet/frame log"]
478pub const WELS_LOG_DETAIL: _bindgen_ty_3 = 16;
479#[doc = "< resversed log iLevel"]
480pub const WELS_LOG_RESV: _bindgen_ty_3 = 32;
481pub const WELS_LOG_LEVEL_COUNT: _bindgen_ty_3 = 6;
482#[doc = "< default log iLevel in Wels codec"]
483pub const WELS_LOG_DEFAULT: _bindgen_ty_3 = 2;
484#[doc = " @brief Enumerate the type of wels log"]
485pub type _bindgen_ty_3 = ::std::os::raw::c_int;
486#[doc = "< | SliceNum==1"]
487pub const SM_SINGLE_SLICE: SliceModeEnum = 0;
488#[doc = "< | according to SliceNum | enabled dynamic slicing for multi-thread"]
489pub const SM_FIXEDSLCNUM_SLICE: SliceModeEnum = 1;
490#[doc = "< | according to SlicesAssign | need input of MB numbers each slice. In addition, if other constraint in SSliceArgument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved."]
491pub const SM_RASTER_SLICE: SliceModeEnum = 2;
492#[doc = "< | according to SliceSize | slicing according to size, the slicing will be dynamic(have no idea about slice_nums until encoding current frame)"]
493pub const SM_SIZELIMITED_SLICE: SliceModeEnum = 3;
494pub const SM_RESERVED: SliceModeEnum = 4;
495#[doc = " @brief Enumerate the type of slice mode"]
496pub type SliceModeEnum = ::std::os::raw::c_int;
497#[doc = " @brief Structure for slice argument"]
498#[repr(C)]
499#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
500pub struct SSliceArgument {
501 #[doc = "< by default, uiSliceMode will be SM_SINGLE_SLICE"]
502 pub uiSliceMode: SliceModeEnum,
503 #[doc = "< only used when uiSliceMode=1, when uiSliceNum=0 means auto design it with cpu core number"]
504 pub uiSliceNum: ::std::os::raw::c_uint,
505 #[doc = "< only used when uiSliceMode=2; when =0 means setting one MB row a slice"]
506 pub uiSliceMbNum: [::std::os::raw::c_uint; 35usize],
507 #[doc = "< now only used when uiSliceMode=4"]
508 pub uiSliceSizeConstraint: ::std::os::raw::c_uint,
509}
510impl Default for SSliceArgument {
511 fn default() -> Self {
512 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
513 unsafe {
514 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
515 s.assume_init()
516 }
517 }
518}
519pub const VF_COMPONENT: EVideoFormatSPS = 0;
520pub const VF_PAL: EVideoFormatSPS = 1;
521pub const VF_NTSC: EVideoFormatSPS = 2;
522pub const VF_SECAM: EVideoFormatSPS = 3;
523pub const VF_MAC: EVideoFormatSPS = 4;
524pub const VF_UNDEF: EVideoFormatSPS = 5;
525pub const VF_NUM_ENUM: EVideoFormatSPS = 6;
526#[doc = " @brief Enumerate the type of video format"]
527pub type EVideoFormatSPS = ::std::os::raw::c_int;
528pub const CP_RESERVED0: EColorPrimaries = 0;
529pub const CP_BT709: EColorPrimaries = 1;
530pub const CP_UNDEF: EColorPrimaries = 2;
531pub const CP_RESERVED3: EColorPrimaries = 3;
532pub const CP_BT470M: EColorPrimaries = 4;
533pub const CP_BT470BG: EColorPrimaries = 5;
534pub const CP_SMPTE170M: EColorPrimaries = 6;
535pub const CP_SMPTE240M: EColorPrimaries = 7;
536pub const CP_FILM: EColorPrimaries = 8;
537pub const CP_BT2020: EColorPrimaries = 9;
538pub const CP_NUM_ENUM: EColorPrimaries = 10;
539#[doc = " @brief Enumerate the type of color primaries"]
540pub type EColorPrimaries = ::std::os::raw::c_int;
541pub const TRC_RESERVED0: ETransferCharacteristics = 0;
542pub const TRC_BT709: ETransferCharacteristics = 1;
543pub const TRC_UNDEF: ETransferCharacteristics = 2;
544pub const TRC_RESERVED3: ETransferCharacteristics = 3;
545pub const TRC_BT470M: ETransferCharacteristics = 4;
546pub const TRC_BT470BG: ETransferCharacteristics = 5;
547pub const TRC_SMPTE170M: ETransferCharacteristics = 6;
548pub const TRC_SMPTE240M: ETransferCharacteristics = 7;
549pub const TRC_LINEAR: ETransferCharacteristics = 8;
550pub const TRC_LOG100: ETransferCharacteristics = 9;
551pub const TRC_LOG316: ETransferCharacteristics = 10;
552pub const TRC_IEC61966_2_4: ETransferCharacteristics = 11;
553pub const TRC_BT1361E: ETransferCharacteristics = 12;
554pub const TRC_IEC61966_2_1: ETransferCharacteristics = 13;
555pub const TRC_BT2020_10: ETransferCharacteristics = 14;
556pub const TRC_BT2020_12: ETransferCharacteristics = 15;
557pub const TRC_NUM_ENUM: ETransferCharacteristics = 16;
558#[doc = " @brief Enumerate the type of transfer characteristics"]
559pub type ETransferCharacteristics = ::std::os::raw::c_int;
560pub const CM_GBR: EColorMatrix = 0;
561pub const CM_BT709: EColorMatrix = 1;
562pub const CM_UNDEF: EColorMatrix = 2;
563pub const CM_RESERVED3: EColorMatrix = 3;
564pub const CM_FCC: EColorMatrix = 4;
565pub const CM_BT470BG: EColorMatrix = 5;
566pub const CM_SMPTE170M: EColorMatrix = 6;
567pub const CM_SMPTE240M: EColorMatrix = 7;
568pub const CM_YCGCO: EColorMatrix = 8;
569pub const CM_BT2020NC: EColorMatrix = 9;
570pub const CM_BT2020C: EColorMatrix = 10;
571pub const CM_NUM_ENUM: EColorMatrix = 11;
572#[doc = " @brief Enumerate the type of color matrix"]
573pub type EColorMatrix = ::std::os::raw::c_int;
574pub const ASP_UNSPECIFIED: ESampleAspectRatio = 0;
575pub const ASP_1x1: ESampleAspectRatio = 1;
576pub const ASP_12x11: ESampleAspectRatio = 2;
577pub const ASP_10x11: ESampleAspectRatio = 3;
578pub const ASP_16x11: ESampleAspectRatio = 4;
579pub const ASP_40x33: ESampleAspectRatio = 5;
580pub const ASP_24x11: ESampleAspectRatio = 6;
581pub const ASP_20x11: ESampleAspectRatio = 7;
582pub const ASP_32x11: ESampleAspectRatio = 8;
583pub const ASP_80x33: ESampleAspectRatio = 9;
584pub const ASP_18x11: ESampleAspectRatio = 10;
585pub const ASP_15x11: ESampleAspectRatio = 11;
586pub const ASP_64x33: ESampleAspectRatio = 12;
587pub const ASP_160x99: ESampleAspectRatio = 13;
588pub const ASP_EXT_SAR: ESampleAspectRatio = 255;
589#[doc = " @brief Enumerate the type of sample aspect ratio"]
590pub type ESampleAspectRatio = ::std::os::raw::c_int;
591#[doc = " @brief Structure for spatial layer configuration"]
592#[repr(C)]
593#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
594pub struct SSpatialLayerConfig {
595 #[doc = "< width of picture in luminance samples of a layer"]
596 pub iVideoWidth: ::std::os::raw::c_int,
597 #[doc = "< height of picture in luminance samples of a layer"]
598 pub iVideoHeight: ::std::os::raw::c_int,
599 #[doc = "< frame rate specified for a layer"]
600 pub fFrameRate: f32,
601 #[doc = "< target bitrate for a spatial layer, in unit of bps"]
602 pub iSpatialBitrate: ::std::os::raw::c_int,
603 #[doc = "< maximum bitrate for a spatial layer, in unit of bps"]
604 pub iMaxSpatialBitrate: ::std::os::raw::c_int,
605 #[doc = "< value of profile IDC (PRO_UNKNOWN for auto-detection)"]
606 pub uiProfileIdc: EProfileIdc,
607 #[doc = "< value of profile IDC (0 for auto-detection)"]
608 pub uiLevelIdc: ELevelIdc,
609 #[doc = "< value of level IDC (0 for auto-detection)"]
610 pub iDLayerQp: ::std::os::raw::c_int,
611 pub sSliceArgument: SSliceArgument,
612 pub bVideoSignalTypePresent: bool,
613 pub uiVideoFormat: ::std::os::raw::c_uchar,
614 pub bFullRange: bool,
615 pub bColorDescriptionPresent: bool,
616 pub uiColorPrimaries: ::std::os::raw::c_uchar,
617 pub uiTransferCharacteristics: ::std::os::raw::c_uchar,
618 pub uiColorMatrix: ::std::os::raw::c_uchar,
619 #[doc = "< aspect ratio present in VUI"]
620 pub bAspectRatioPresent: bool,
621 #[doc = "< aspect ratio idc"]
622 pub eAspectRatio: ESampleAspectRatio,
623 #[doc = "< use if aspect ratio idc == 255"]
624 pub sAspectRatioExtWidth: ::std::os::raw::c_ushort,
625 #[doc = "< use if aspect ratio idc == 255"]
626 pub sAspectRatioExtHeight: ::std::os::raw::c_ushort,
627}
628impl Default for SSpatialLayerConfig {
629 fn default() -> Self {
630 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
631 unsafe {
632 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
633 s.assume_init()
634 }
635 }
636}
637#[doc = "< camera video for real-time communication"]
638pub const CAMERA_VIDEO_REAL_TIME: EUsageType = 0;
639#[doc = "< screen content signal"]
640pub const SCREEN_CONTENT_REAL_TIME: EUsageType = 1;
641pub const CAMERA_VIDEO_NON_REAL_TIME: EUsageType = 2;
642pub const SCREEN_CONTENT_NON_REAL_TIME: EUsageType = 3;
643pub const INPUT_CONTENT_TYPE_ALL: EUsageType = 4;
644#[doc = " @brief Encoder usage type"]
645pub type EUsageType = ::std::os::raw::c_int;
646#[doc = "< the lowest compleixty,the fastest speed,"]
647pub const LOW_COMPLEXITY: ECOMPLEXITY_MODE = 0;
648#[doc = "< medium complexity, medium speed,medium quality"]
649pub const MEDIUM_COMPLEXITY: ECOMPLEXITY_MODE = 1;
650#[doc = "< high complexity, lowest speed, high quality"]
651pub const HIGH_COMPLEXITY: ECOMPLEXITY_MODE = 2;
652#[doc = " @brief Enumulate the complexity mode"]
653pub type ECOMPLEXITY_MODE = ::std::os::raw::c_int;
654#[doc = "< constant id in SPS/PPS"]
655pub const CONSTANT_ID: EParameterSetStrategy = 0;
656#[doc = "< SPS/PPS id increases at each IDR"]
657pub const INCREASING_ID: EParameterSetStrategy = 1;
658#[doc = "< using SPS in the existing list if possible"]
659pub const SPS_LISTING: EParameterSetStrategy = 2;
660pub const SPS_LISTING_AND_PPS_INCREASING: EParameterSetStrategy = 3;
661pub const SPS_PPS_LISTING: EParameterSetStrategy = 6;
662#[doc = " @brief Enumulate for the stategy of SPS/PPS strategy"]
663pub type EParameterSetStrategy = ::std::os::raw::c_int;
664#[doc = " @brief SVC Encoding Parameters"]
665#[repr(C)]
666#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
667pub struct TagEncParamBase {
668 #[doc = "< application type; please refer to the definition of EUsageType"]
669 pub iUsageType: EUsageType,
670 #[doc = "< width of picture in luminance samples (the maximum of all layers if multiple spatial layers presents)"]
671 pub iPicWidth: ::std::os::raw::c_int,
672 #[doc = "< height of picture in luminance samples((the maximum of all layers if multiple spatial layers presents)"]
673 pub iPicHeight: ::std::os::raw::c_int,
674 #[doc = "< target bitrate desired, in unit of bps"]
675 pub iTargetBitrate: ::std::os::raw::c_int,
676 #[doc = "< rate control mode"]
677 pub iRCMode: RC_MODES,
678 #[doc = "< maximal input frame rate"]
679 pub fMaxFrameRate: f32,
680}
681impl Default for TagEncParamBase {
682 fn default() -> Self {
683 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
684 unsafe {
685 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
686 s.assume_init()
687 }
688 }
689}
690#[doc = " @brief SVC Encoding Parameters"]
691pub type SEncParamBase = TagEncParamBase;
692#[doc = " @brief SVC Encoding Parameters"]
693pub type PEncParamBase = *mut TagEncParamBase;
694#[doc = " @brief SVC Encoding Parameters extention"]
695#[repr(C)]
696#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
697pub struct TagEncParamExt {
698 #[doc = "< same as in TagEncParamBase"]
699 pub iUsageType: EUsageType,
700 #[doc = "< same as in TagEncParamBase"]
701 pub iPicWidth: ::std::os::raw::c_int,
702 #[doc = "< same as in TagEncParamBase"]
703 pub iPicHeight: ::std::os::raw::c_int,
704 #[doc = "< same as in TagEncParamBase"]
705 pub iTargetBitrate: ::std::os::raw::c_int,
706 #[doc = "< same as in TagEncParamBase"]
707 pub iRCMode: RC_MODES,
708 #[doc = "< same as in TagEncParamBase"]
709 pub fMaxFrameRate: f32,
710 #[doc = "< temporal layer number, max temporal layer = 4"]
711 pub iTemporalLayerNum: ::std::os::raw::c_int,
712 #[doc = "< spatial layer number,1<= iSpatialLayerNum <= MAX_SPATIAL_LAYER_NUM, MAX_SPATIAL_LAYER_NUM = 4"]
713 pub iSpatialLayerNum: ::std::os::raw::c_int,
714 pub sSpatialLayers: [SSpatialLayerConfig; 4usize],
715 pub iComplexityMode: ECOMPLEXITY_MODE,
716 #[doc = "< period of Intra frame"]
717 pub uiIntraPeriod: ::std::os::raw::c_uint,
718 #[doc = "< number of reference frame used"]
719 pub iNumRefFrame: ::std::os::raw::c_int,
720 #[doc = "< different stategy in adjust ID in SPS/PPS: 0- constant ID, 1-additional ID, 6-mapping and additional"]
721 pub eSpsPpsIdStrategy: EParameterSetStrategy,
722 #[doc = "< false:not use Prefix NAL; true: use Prefix NAL"]
723 pub bPrefixNalAddingCtrl: bool,
724 #[doc = "< false:not use SSEI; true: use SSEI -- TODO: planning to remove the interface of SSEI"]
725 pub bEnableSSEI: bool,
726 #[doc = "< (when encoding more than 1 spatial layer) false: use SVC syntax for higher layers; true: use Simulcast AVC"]
727 pub bSimulcastAVC: bool,
728 #[doc = "< 0:disable padding;1:padding"]
729 pub iPaddingFlag: ::std::os::raw::c_int,
730 #[doc = "< 0:CAVLC 1:CABAC."]
731 pub iEntropyCodingModeFlag: ::std::os::raw::c_int,
732 #[doc = "< False: don't skip frame even if VBV buffer overflow.True: allow skipping frames to keep the bitrate within limits"]
733 pub bEnableFrameSkip: bool,
734 #[doc = "< the maximum bitrate, in unit of bps, set it to UNSPECIFIED_BIT_RATE if not needed"]
735 pub iMaxBitrate: ::std::os::raw::c_int,
736 #[doc = "< the maximum QP encoder supports"]
737 pub iMaxQp: ::std::os::raw::c_int,
738 #[doc = "< the minmum QP encoder supports"]
739 pub iMinQp: ::std::os::raw::c_int,
740 #[doc = "< the maximum NAL size. This value should be not 0 for dynamic slice mode"]
741 pub uiMaxNalSize: ::std::os::raw::c_uint,
742 #[doc = "< 1: on, 0: off"]
743 pub bEnableLongTermReference: bool,
744 #[doc = "< the number of LTR(long term reference),TODO: not supported to set it arbitrary yet"]
745 pub iLTRRefNum: ::std::os::raw::c_int,
746 #[doc = "< the LTR marked period that is used in feedback."]
747 pub iLtrMarkPeriod: ::std::os::raw::c_uint,
748 #[doc = "< 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; lager than 1: count number of threads;"]
749 pub iMultipleThreadIdc: ::std::os::raw::c_ushort,
750 #[doc = "< only used when uiSliceMode=1 or 3, will change slicing of a picture during the run-time of multi-thread encoding, so the result of each run may be different"]
751 pub bUseLoadBalancing: bool,
752 #[doc = "< 0: on, 1: off, 2: on except for slice boundaries"]
753 pub iLoopFilterDisableIdc: ::std::os::raw::c_int,
754 #[doc = "< AlphaOffset: valid range [-6, 6], default 0"]
755 pub iLoopFilterAlphaC0Offset: ::std::os::raw::c_int,
756 #[doc = "< BetaOffset: valid range [-6, 6], default 0"]
757 pub iLoopFilterBetaOffset: ::std::os::raw::c_int,
758 #[doc = "< denoise control"]
759 pub bEnableDenoise: bool,
760 #[doc = "< background detection control //VAA_BACKGROUND_DETECTION //BGD cmd"]
761 pub bEnableBackgroundDetection: bool,
762 #[doc = "< adaptive quantization control"]
763 pub bEnableAdaptiveQuant: bool,
764 #[doc = "< enable frame cropping flag: TRUE always in application"]
765 pub bEnableFrameCroppingFlag: bool,
766 pub bEnableSceneChangeDetect: bool,
767 #[doc = "< LTR advanced setting"]
768 pub bIsLosslessLink: bool,
769 #[doc = "< fix rate control overshooting"]
770 pub bFixRCOverShoot: bool,
771 #[doc = "< the target bits of IDR is (idr_bitrate_ratio/100) * average target bit per frame."]
772 pub iIdrBitrateRatio: ::std::os::raw::c_int,
773 #[doc = "< get Y PSNR stats for the whole video sequence"]
774 pub bPsnrY: bool,
775 #[doc = "< get U PSNR stats for the whole video sequence"]
776 pub bPsnrU: bool,
777 #[doc = "< get V PSNR stats for the whole video sequence"]
778 pub bPsnrV: bool,
779}
780impl Default for TagEncParamExt {
781 fn default() -> Self {
782 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
783 unsafe {
784 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
785 s.assume_init()
786 }
787 }
788}
789#[doc = " @brief SVC Encoding Parameters extention"]
790pub type SEncParamExt = TagEncParamExt;
791#[doc = " @brief Define a new struct to show the property of video bitstream."]
792#[repr(C)]
793#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
794pub struct SVideoProperty {
795 #[doc = "< size of the struct"]
796 pub size: ::std::os::raw::c_uint,
797 #[doc = "< video stream type (AVC/SVC)"]
798 pub eVideoBsType: VIDEO_BITSTREAM_TYPE,
799}
800impl Default for SVideoProperty {
801 fn default() -> Self {
802 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
803 unsafe {
804 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
805 s.assume_init()
806 }
807 }
808}
809#[doc = " @brief SVC Decoding Parameters, reserved here and potential applicable in the future"]
810#[repr(C)]
811#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
812pub struct TagSVCDecodingParam {
813 #[doc = "< file name of reconstructed frame used for PSNR calculation based debug"]
814 pub pFileNameRestructed: *mut ::std::os::raw::c_char,
815 #[doc = "< CPU load"]
816 pub uiCpuLoad: ::std::os::raw::c_uint,
817 #[doc = "< setting target dq layer id"]
818 pub uiTargetDqLayer: ::std::os::raw::c_uchar,
819 #[doc = "< whether active error concealment feature in decoder"]
820 pub eEcActiveIdc: ERROR_CON_IDC,
821 #[doc = "< decoder for parse only, no reconstruction. When it is true, SPS/PPS size should not exceed SPS_PPS_BS_SIZE (128). Otherwise, it will return error info"]
822 pub bParseOnly: bool,
823 #[doc = "< video stream property"]
824 pub sVideoProperty: SVideoProperty,
825}
826impl Default for TagSVCDecodingParam {
827 fn default() -> Self {
828 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
829 unsafe {
830 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
831 s.assume_init()
832 }
833 }
834}
835#[doc = " @brief SVC Decoding Parameters, reserved here and potential applicable in the future"]
836pub type SDecodingParam = TagSVCDecodingParam;
837#[doc = " @brief SVC Decoding Parameters, reserved here and potential applicable in the future"]
838pub type PDecodingParam = *mut TagSVCDecodingParam;
839#[doc = " @brief Bitstream inforamtion of a layer being encoded"]
840#[repr(C)]
841#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
842pub struct SLayerBSInfo {
843 pub uiTemporalId: ::std::os::raw::c_uchar,
844 pub uiSpatialId: ::std::os::raw::c_uchar,
845 pub uiQualityId: ::std::os::raw::c_uchar,
846 pub eFrameType: EVideoFrameType,
847 pub uiLayerType: ::std::os::raw::c_uchar,
848 #[doc = "< refer to D.2.11 Sub-sequence information SEI message semantics"]
849 pub iSubSeqId: ::std::os::raw::c_int,
850 #[doc = "< count number of NAL coded already"]
851 pub iNalCount: ::std::os::raw::c_int,
852 #[doc = "< length of NAL size in byte from 0 to iNalCount-1"]
853 pub pNalLengthInByte: *mut ::std::os::raw::c_int,
854 #[doc = "< buffer of bitstream contained"]
855 pub pBsBuf: *mut ::std::os::raw::c_uchar,
856 #[doc = "< PSNR values for Y/U/V"]
857 pub rPsnr: [f32; 3usize],
858}
859impl Default for SLayerBSInfo {
860 fn default() -> Self {
861 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
862 unsafe {
863 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
864 s.assume_init()
865 }
866 }
867}
868#[doc = " @brief Bitstream inforamtion of a layer being encoded"]
869pub type PLayerBSInfo = *mut SLayerBSInfo;
870#[doc = " @brief Frame bit stream info"]
871#[repr(C)]
872#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
873pub struct SFrameBSInfo {
874 pub iLayerNum: ::std::os::raw::c_int,
875 pub sLayerInfo: [SLayerBSInfo; 128usize],
876 pub eFrameType: EVideoFrameType,
877 pub iFrameSizeInBytes: ::std::os::raw::c_int,
878 pub uiTimeStamp: ::std::os::raw::c_longlong,
879}
880impl Default for SFrameBSInfo {
881 fn default() -> Self {
882 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
883 unsafe {
884 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
885 s.assume_init()
886 }
887 }
888}
889#[doc = " @brief Frame bit stream info"]
890pub type PFrameBSInfo = *mut SFrameBSInfo;
891#[doc = " @brief Structure for source picture"]
892#[repr(C)]
893#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
894pub struct Source_Picture_s {
895 #[doc = "< color space type"]
896 pub iColorFormat: ::std::os::raw::c_int,
897 #[doc = "< stride for each plane pData"]
898 pub iStride: [::std::os::raw::c_int; 4usize],
899 #[doc = "< plane pData"]
900 pub pData: [*mut ::std::os::raw::c_uchar; 4usize],
901 #[doc = "< luma picture width in x coordinate"]
902 pub iPicWidth: ::std::os::raw::c_int,
903 #[doc = "< luma picture height in y coordinate"]
904 pub iPicHeight: ::std::os::raw::c_int,
905 #[doc = "< timestamp of the source picture, unit: millisecond"]
906 pub uiTimeStamp: ::std::os::raw::c_longlong,
907 #[doc = "< get Y PSNR for this frame"]
908 pub bPsnrY: bool,
909 #[doc = "< get U PSNR for this frame"]
910 pub bPsnrU: bool,
911 #[doc = "< get V PSNR for this frame"]
912 pub bPsnrV: bool,
913}
914impl Default for Source_Picture_s {
915 fn default() -> Self {
916 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
917 unsafe {
918 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
919 s.assume_init()
920 }
921 }
922}
923#[doc = " @brief Structure for source picture"]
924pub type SSourcePicture = Source_Picture_s;
925#[doc = " @brief Structure for bit rate info"]
926#[repr(C)]
927#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
928pub struct TagBitrateInfo {
929 pub iLayer: LAYER_NUM,
930 #[doc = "< the maximum bitrate"]
931 pub iBitrate: ::std::os::raw::c_int,
932}
933impl Default for TagBitrateInfo {
934 fn default() -> Self {
935 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
936 unsafe {
937 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
938 s.assume_init()
939 }
940 }
941}
942#[doc = " @brief Structure for bit rate info"]
943pub type SBitrateInfo = TagBitrateInfo;
944#[doc = " @brief Structure for dump layer info"]
945#[repr(C)]
946#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
947pub struct TagDumpLayer {
948 pub iLayer: ::std::os::raw::c_int,
949 pub pFileName: *mut ::std::os::raw::c_char,
950}
951impl Default for TagDumpLayer {
952 fn default() -> Self {
953 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
954 unsafe {
955 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
956 s.assume_init()
957 }
958 }
959}
960#[doc = " @brief Structure for dump layer info"]
961pub type SDumpLayer = TagDumpLayer;
962#[doc = " @brief Structure for profile info in layer"]
963#[repr(C)]
964#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
965pub struct TagProfileInfo {
966 pub iLayer: ::std::os::raw::c_int,
967 #[doc = "< the profile info"]
968 pub uiProfileIdc: EProfileIdc,
969}
970impl Default for TagProfileInfo {
971 fn default() -> Self {
972 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
973 unsafe {
974 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
975 s.assume_init()
976 }
977 }
978}
979#[doc = " @brief Structure for profile info in layer"]
980pub type SProfileInfo = TagProfileInfo;
981#[doc = " @brief Structure for level info in layer"]
982#[repr(C)]
983#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
984pub struct TagLevelInfo {
985 pub iLayer: ::std::os::raw::c_int,
986 #[doc = "< the level info"]
987 pub uiLevelIdc: ELevelIdc,
988}
989impl Default for TagLevelInfo {
990 fn default() -> Self {
991 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
992 unsafe {
993 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
994 s.assume_init()
995 }
996 }
997}
998#[doc = " @brief Structure for level info in layer"]
999pub type SLevelInfo = TagLevelInfo;
1000#[doc = " @brief Structure for dilivery status"]
1001#[repr(C)]
1002#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1003pub struct TagDeliveryStatus {
1004 #[doc = "< 0: the previous frame isn't delivered,1: the previous frame is delivered"]
1005 pub bDeliveryFlag: bool,
1006 #[doc = "< the frame type that is dropped; reserved"]
1007 pub iDropFrameType: ::std::os::raw::c_int,
1008 #[doc = "< the frame size that is dropped; reserved"]
1009 pub iDropFrameSize: ::std::os::raw::c_int,
1010}
1011#[doc = " @brief Structure for dilivery status"]
1012pub type SDeliveryStatus = TagDeliveryStatus;
1013#[doc = " @brief The capability of decoder, for SDP negotiation"]
1014#[repr(C)]
1015#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1016pub struct TagDecoderCapability {
1017 #[doc = "< profile_idc"]
1018 pub iProfileIdc: ::std::os::raw::c_int,
1019 #[doc = "< profile-iop"]
1020 pub iProfileIop: ::std::os::raw::c_int,
1021 #[doc = "< level_idc"]
1022 pub iLevelIdc: ::std::os::raw::c_int,
1023 #[doc = "< max-mbps"]
1024 pub iMaxMbps: ::std::os::raw::c_int,
1025 #[doc = "< max-fs"]
1026 pub iMaxFs: ::std::os::raw::c_int,
1027 #[doc = "< max-cpb"]
1028 pub iMaxCpb: ::std::os::raw::c_int,
1029 #[doc = "< max-dpb"]
1030 pub iMaxDpb: ::std::os::raw::c_int,
1031 #[doc = "< max-br"]
1032 pub iMaxBr: ::std::os::raw::c_int,
1033 #[doc = "< redundant-pic-cap"]
1034 pub bRedPicCap: bool,
1035}
1036#[doc = " @brief The capability of decoder, for SDP negotiation"]
1037pub type SDecoderCapability = TagDecoderCapability;
1038#[doc = " @brief Structure for parse only output"]
1039#[repr(C)]
1040#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1041pub struct TagParserBsInfo {
1042 #[doc = "< total NAL number in current AU"]
1043 pub iNalNum: ::std::os::raw::c_int,
1044 #[doc = "< each nal length"]
1045 pub pNalLenInByte: *mut ::std::os::raw::c_int,
1046 #[doc = "< outputted dst buffer for parsed bitstream"]
1047 pub pDstBuff: *mut ::std::os::raw::c_uchar,
1048 #[doc = "< required SPS width info"]
1049 pub iSpsWidthInPixel: ::std::os::raw::c_int,
1050 #[doc = "< required SPS height info"]
1051 pub iSpsHeightInPixel: ::std::os::raw::c_int,
1052 #[doc = "< input BS timestamp"]
1053 pub uiInBsTimeStamp: ::std::os::raw::c_ulonglong,
1054 #[doc = "< output BS timestamp"]
1055 pub uiOutBsTimeStamp: ::std::os::raw::c_ulonglong,
1056}
1057impl Default for TagParserBsInfo {
1058 fn default() -> Self {
1059 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1060 unsafe {
1061 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1062 s.assume_init()
1063 }
1064 }
1065}
1066#[doc = " @brief Structure for parse only output"]
1067pub type SParserBsInfo = TagParserBsInfo;
1068#[doc = " @brief Structure for parse only output"]
1069pub type PParserBsInfo = *mut TagParserBsInfo;
1070#[doc = " @brief Structure for encoder statistics"]
1071#[repr(C)]
1072#[derive(Debug, Default, Copy, Clone, PartialOrd, PartialEq)]
1073pub struct TagVideoEncoderStatistics {
1074 #[doc = "< the width of encoded frame"]
1075 pub uiWidth: ::std::os::raw::c_uint,
1076 #[doc = "< the height of encoded frame"]
1077 pub uiHeight: ::std::os::raw::c_uint,
1078 #[doc = "< average_Encoding_Time"]
1079 pub fAverageFrameSpeedInMs: f32,
1080 #[doc = "< the average frame rate in, calculate since encoding starts, supposed that the input timestamp is in unit of ms"]
1081 pub fAverageFrameRate: f32,
1082 #[doc = "< the frame rate in, in the last second, supposed that the input timestamp is in unit of ms (? useful for checking BR, but is it easy to calculate?"]
1083 pub fLatestFrameRate: f32,
1084 #[doc = "< sendrate in Bits per second, calculated within the set time-window"]
1085 pub uiBitRate: ::std::os::raw::c_uint,
1086 #[doc = "< the average QP of last encoded frame"]
1087 pub uiAverageFrameQP: ::std::os::raw::c_uint,
1088 #[doc = "< number of frames"]
1089 pub uiInputFrameCount: ::std::os::raw::c_uint,
1090 #[doc = "< number of frames"]
1091 pub uiSkippedFrameCount: ::std::os::raw::c_uint,
1092 #[doc = "< uiResolutionChangeTimes"]
1093 pub uiResolutionChangeTimes: ::std::os::raw::c_uint,
1094 #[doc = "< number of IDR requests"]
1095 pub uiIDRReqNum: ::std::os::raw::c_uint,
1096 #[doc = "< number of actual IDRs sent"]
1097 pub uiIDRSentNum: ::std::os::raw::c_uint,
1098 #[doc = "< number of LTR sent/marked"]
1099 pub uiLTRSentNum: ::std::os::raw::c_uint,
1100 #[doc = "< Timestamp of updating the statistics"]
1101 pub iStatisticsTs: ::std::os::raw::c_longlong,
1102 pub iTotalEncodedBytes: ::std::os::raw::c_ulong,
1103 pub iLastStatisticsBytes: ::std::os::raw::c_ulong,
1104 pub iLastStatisticsFrameCount: ::std::os::raw::c_ulong,
1105}
1106#[doc = " @brief Structure for encoder statistics"]
1107pub type SEncoderStatistics = TagVideoEncoderStatistics;
1108#[doc = " @brief Structure for decoder statistics"]
1109#[repr(C)]
1110#[derive(Debug, Default, Copy, Clone, PartialOrd, PartialEq)]
1111pub struct TagVideoDecoderStatistics {
1112 #[doc = "< the width of encode/decode frame"]
1113 pub uiWidth: ::std::os::raw::c_uint,
1114 #[doc = "< the height of encode/decode frame"]
1115 pub uiHeight: ::std::os::raw::c_uint,
1116 #[doc = "< average_Decoding_Time"]
1117 pub fAverageFrameSpeedInMs: f32,
1118 #[doc = "< actual average_Decoding_Time, including freezing pictures"]
1119 pub fActualAverageFrameSpeedInMs: f32,
1120 #[doc = "< number of frames"]
1121 pub uiDecodedFrameCount: ::std::os::raw::c_uint,
1122 #[doc = "< uiResolutionChangeTimes"]
1123 pub uiResolutionChangeTimes: ::std::os::raw::c_uint,
1124 #[doc = "< number of correct IDR received"]
1125 pub uiIDRCorrectNum: ::std::os::raw::c_uint,
1126 #[doc = "< when EC is on, the average ratio of total EC areas, can be an indicator of reconstruction quality"]
1127 pub uiAvgEcRatio: ::std::os::raw::c_uint,
1128 #[doc = "< when EC is on, the rough average ratio of propogate EC areas, can be an indicator of reconstruction quality"]
1129 pub uiAvgEcPropRatio: ::std::os::raw::c_uint,
1130 #[doc = "< number of actual unintegrity IDR or not received but eced"]
1131 pub uiEcIDRNum: ::std::os::raw::c_uint,
1132 #[doc = "<"]
1133 pub uiEcFrameNum: ::std::os::raw::c_uint,
1134 #[doc = "< number of whole lost IDR"]
1135 pub uiIDRLostNum: ::std::os::raw::c_uint,
1136 #[doc = "< number of freezing IDR with error (partly received), under resolution change"]
1137 pub uiFreezingIDRNum: ::std::os::raw::c_uint,
1138 #[doc = "< number of freezing non-IDR with error"]
1139 pub uiFreezingNonIDRNum: ::std::os::raw::c_uint,
1140 #[doc = "< average luma QP. default: -1, no correct frame outputted"]
1141 pub iAvgLumaQp: ::std::os::raw::c_int,
1142 #[doc = "< number of Sps Invalid report"]
1143 pub iSpsReportErrorNum: ::std::os::raw::c_int,
1144 #[doc = "< number of SubSps Invalid report"]
1145 pub iSubSpsReportErrorNum: ::std::os::raw::c_int,
1146 #[doc = "< number of Pps Invalid report"]
1147 pub iPpsReportErrorNum: ::std::os::raw::c_int,
1148 #[doc = "< number of Sps NoExist Nal"]
1149 pub iSpsNoExistNalNum: ::std::os::raw::c_int,
1150 #[doc = "< number of SubSps NoExist Nal"]
1151 pub iSubSpsNoExistNalNum: ::std::os::raw::c_int,
1152 #[doc = "< number of Pps NoExist Nal"]
1153 pub iPpsNoExistNalNum: ::std::os::raw::c_int,
1154 #[doc = "< Profile idc in syntax"]
1155 pub uiProfile: ::std::os::raw::c_uint,
1156 #[doc = "< level idc according to Annex A-1"]
1157 pub uiLevel: ::std::os::raw::c_uint,
1158 #[doc = "< current active SPS id"]
1159 pub iCurrentActiveSpsId: ::std::os::raw::c_int,
1160 #[doc = "< current active PPS id"]
1161 pub iCurrentActivePpsId: ::std::os::raw::c_int,
1162 #[doc = "< frame interval of statistics log"]
1163 pub iStatisticsLogInterval: ::std::os::raw::c_uint,
1164}
1165#[doc = " @brief Structure for decoder statistics"]
1166pub type SDecoderStatistics = TagVideoDecoderStatistics;
1167#[doc = " @brief Structure for sample aspect ratio (SAR) info in VUI"]
1168#[repr(C)]
1169#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1170pub struct TagVuiSarInfo {
1171 #[doc = "< SAR width"]
1172 pub uiSarWidth: ::std::os::raw::c_uint,
1173 #[doc = "< SAR height"]
1174 pub uiSarHeight: ::std::os::raw::c_uint,
1175 #[doc = "< SAR overscan flag"]
1176 pub bOverscanAppropriateFlag: bool,
1177}
1178#[doc = " @brief Structure for sample aspect ratio (SAR) info in VUI"]
1179pub type SVuiSarInfo = TagVuiSarInfo;
1180#[doc = " @brief Structure for sample aspect ratio (SAR) info in VUI"]
1181pub type PVuiSarInfo = *mut TagVuiSarInfo;
1182pub type ISVCEncoder = *const ISVCEncoderVtbl;
1183#[repr(C)]
1184#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1185pub struct ISVCEncoderVtbl {
1186 pub Initialize: ::std::option::Option<
1187 unsafe extern "C" fn(arg1: *mut ISVCEncoder, pParam: *const SEncParamBase) -> ::std::os::raw::c_int,
1188 >,
1189 pub InitializeExt:
1190 ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCEncoder, pParam: *const SEncParamExt) -> ::std::os::raw::c_int>,
1191 pub GetDefaultParams:
1192 ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCEncoder, pParam: *mut SEncParamExt) -> ::std::os::raw::c_int>,
1193 pub Uninitialize: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCEncoder) -> ::std::os::raw::c_int>,
1194 pub EncodeFrame: ::std::option::Option<
1195 unsafe extern "C" fn(
1196 arg1: *mut ISVCEncoder,
1197 kpSrcPic: *const SSourcePicture,
1198 pBsInfo: *mut SFrameBSInfo,
1199 ) -> ::std::os::raw::c_int,
1200 >,
1201 pub EncodeParameterSets:
1202 ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCEncoder, pBsInfo: *mut SFrameBSInfo) -> ::std::os::raw::c_int>,
1203 pub ForceIntraFrame: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCEncoder, bIDR: bool) -> ::std::os::raw::c_int>,
1204 pub SetOption: ::std::option::Option<
1205 unsafe extern "C" fn(
1206 arg1: *mut ISVCEncoder,
1207 eOptionId: ENCODER_OPTION,
1208 pOption: *mut ::std::os::raw::c_void,
1209 ) -> ::std::os::raw::c_int,
1210 >,
1211 pub GetOption: ::std::option::Option<
1212 unsafe extern "C" fn(
1213 arg1: *mut ISVCEncoder,
1214 eOptionId: ENCODER_OPTION,
1215 pOption: *mut ::std::os::raw::c_void,
1216 ) -> ::std::os::raw::c_int,
1217 >,
1218}
1219pub type ISVCDecoder = *const ISVCDecoderVtbl;
1220#[repr(C)]
1221#[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
1222pub struct ISVCDecoderVtbl {
1223 pub Initialize: ::std::option::Option<
1224 unsafe extern "C" fn(arg1: *mut ISVCDecoder, pParam: *const SDecodingParam) -> ::std::os::raw::c_long,
1225 >,
1226 pub Uninitialize: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ISVCDecoder) -> ::std::os::raw::c_long>,
1227 pub DecodeFrame: ::std::option::Option<
1228 unsafe extern "C" fn(
1229 arg1: *mut ISVCDecoder,
1230 pSrc: *const ::std::os::raw::c_uchar,
1231 iSrcLen: ::std::os::raw::c_int,
1232 ppDst: *mut *mut ::std::os::raw::c_uchar,
1233 pStride: *mut ::std::os::raw::c_int,
1234 iWidth: *mut ::std::os::raw::c_int,
1235 iHeight: *mut ::std::os::raw::c_int,
1236 ) -> DECODING_STATE,
1237 >,
1238 pub DecodeFrameNoDelay: ::std::option::Option<
1239 unsafe extern "C" fn(
1240 arg1: *mut ISVCDecoder,
1241 pSrc: *const ::std::os::raw::c_uchar,
1242 iSrcLen: ::std::os::raw::c_int,
1243 ppDst: *mut *mut ::std::os::raw::c_uchar,
1244 pDstInfo: *mut SBufferInfo,
1245 ) -> DECODING_STATE,
1246 >,
1247 pub DecodeFrame2: ::std::option::Option<
1248 unsafe extern "C" fn(
1249 arg1: *mut ISVCDecoder,
1250 pSrc: *const ::std::os::raw::c_uchar,
1251 iSrcLen: ::std::os::raw::c_int,
1252 ppDst: *mut *mut ::std::os::raw::c_uchar,
1253 pDstInfo: *mut SBufferInfo,
1254 ) -> DECODING_STATE,
1255 >,
1256 pub FlushFrame: ::std::option::Option<
1257 unsafe extern "C" fn(
1258 arg1: *mut ISVCDecoder,
1259 ppDst: *mut *mut ::std::os::raw::c_uchar,
1260 pDstInfo: *mut SBufferInfo,
1261 ) -> DECODING_STATE,
1262 >,
1263 pub DecodeParser: ::std::option::Option<
1264 unsafe extern "C" fn(
1265 arg1: *mut ISVCDecoder,
1266 pSrc: *const ::std::os::raw::c_uchar,
1267 iSrcLen: ::std::os::raw::c_int,
1268 pDstInfo: *mut SParserBsInfo,
1269 ) -> DECODING_STATE,
1270 >,
1271 pub DecodeFrameEx: ::std::option::Option<
1272 unsafe extern "C" fn(
1273 arg1: *mut ISVCDecoder,
1274 pSrc: *const ::std::os::raw::c_uchar,
1275 iSrcLen: ::std::os::raw::c_int,
1276 pDst: *mut ::std::os::raw::c_uchar,
1277 iDstStride: ::std::os::raw::c_int,
1278 iDstLen: *mut ::std::os::raw::c_int,
1279 iWidth: *mut ::std::os::raw::c_int,
1280 iHeight: *mut ::std::os::raw::c_int,
1281 iColorFormat: *mut ::std::os::raw::c_int,
1282 ) -> DECODING_STATE,
1283 >,
1284 pub SetOption: ::std::option::Option<
1285 unsafe extern "C" fn(
1286 arg1: *mut ISVCDecoder,
1287 eOptionId: DECODER_OPTION,
1288 pOption: *mut ::std::os::raw::c_void,
1289 ) -> ::std::os::raw::c_long,
1290 >,
1291 pub GetOption: ::std::option::Option<
1292 unsafe extern "C" fn(
1293 arg1: *mut ISVCDecoder,
1294 eOptionId: DECODER_OPTION,
1295 pOption: *mut ::std::os::raw::c_void,
1296 ) -> ::std::os::raw::c_long,
1297 >,
1298}
1299pub type WelsTraceCallback = ::std::option::Option<
1300 unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void, level: ::std::os::raw::c_int, string: *const ::std::os::raw::c_char),
1301>;