openh264_sys2/generated/
types.rs

1/* automatically generated by rust-bindgen 0.71.1 */
2
3#[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>;