2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
35#ifndef WELS_VIDEO_CODEC_SVC_API_H__
36#define WELS_VIDEO_CODEC_SVC_API_H__
39#if defined(_MSC_VER) && (_MSC_VER < 1800
)
40typedef unsigned char bool;
49#if defined(_WIN32) || defined(__cdecl)
56
57
60
61
62
63
64
65
66
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
267
268
272
273
274
275
276 virtual int32_t
EXTAPI Initialize (
const SEncParamBase *pParam) = 0;
279
280
281
282
283 virtual int32_t
EXTAPI InitializeExt (
const SEncParamExt *pParam) = 0;
286
287
288
289
290
291
292 virtual int32_t
EXTAPI GetDefaultParams (SEncParamExt *pParam) = 0;
294 virtual int32_t
EXTAPI Uninitialize() = 0;
297
298
299
300
301
302
303
304
305
306 virtual int32_t
EXTAPI EncodeFrame (
const SSourcePicture *kpSrcPic, SFrameBSInfo *pBsInfo) = 0;
309
310
311
312
313 virtual int32_t
EXTAPI EncodeParameterSets (SFrameBSInfo *pBsInfo) = 0;
316
317
318
319
320 virtual int32_t
EXTAPI ForceIntraFrame (
bool bIDR, int32_t iLayerId = -1) = 0;
323
324
325
326
327 virtual int32_t
EXTAPI SetOption (ENCODER_OPTION eOptionId,
void *pOption) = 0;
330
331
332
333
334 virtual int32_t
EXTAPI GetOption (ENCODER_OPTION eOptionId,
void *pOption) = 0;
335 virtual ~ISVCEncoder() {}
341
342
347
348
349
350
351 virtual long EXTAPI Initialize (
const SDecodingParam *pParam) = 0;
354 virtual long EXTAPI Uninitialize() = 0;
357
358
359
360
361
362
363
364
365
366 virtual DECODING_STATE
EXTAPI DecodeFrame (
const unsigned char *pSrc,
367 const int32_t iSrcLen,
368 unsigned char **ppDst,
371 int32_t &iHeight) = 0;
374
375
376
377
378
379
380
381
382
383
384
385 virtual DECODING_STATE
EXTAPI DecodeFrameNoDelay (
const unsigned char *pSrc,
386 const int32_t iSrcLen,
387 unsigned char **ppDst,
388 SBufferInfo *pDstInfo) = 0;
391
392
393
394
395
396
397
398
399
400
401
402 virtual DECODING_STATE
EXTAPI DecodeFrame2 (
const unsigned char *pSrc,
403 const int32_t iSrcLen,
404 unsigned char **ppDst,
405 SBufferInfo *pDstInfo) = 0;
409
410
411
412
413
414
415
416 virtual DECODING_STATE
EXTAPI FlushFrame (
unsigned char **ppDst,
417 SBufferInfo *pDstInfo) = 0;
420
421
422
423
424
425
426 virtual DECODING_STATE
EXTAPI DecodeParser (
const unsigned char *pSrc,
427 const int32_t iSrcLen,
428 SParserBsInfo *pDstInfo) = 0;
431
432
433
434
435
436
437
438
439
440
441
442 virtual DECODING_STATE
EXTAPI DecodeFrameEx (
const unsigned char *pSrc,
443 const int32_t iSrcLen,
449 int32_t &iColorFormat) = 0;
452
453
454
455
456 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId,
void *pOption) = 0;
459
460
461
462
463 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId,
void *pOption) = 0;
464 virtual ~ISVCDecoder() {}
472typedef struct ISVCEncoderVtbl ISVCEncoderVtbl;
473typedef const ISVCEncoderVtbl *ISVCEncoder;
474struct ISVCEncoderVtbl {
476int32_t (*Initialize) (ISVCEncoder *,
const SEncParamBase *pParam);
477int32_t (*InitializeExt) (ISVCEncoder *,
const SEncParamExt *pParam);
479int32_t (*GetDefaultParams) (ISVCEncoder *, SEncParamExt *pParam);
481int32_t (*Uninitialize) (ISVCEncoder *);
483int32_t (*EncodeFrame) (ISVCEncoder *,
const SSourcePicture *kpSrcPic, SFrameBSInfo *pBsInfo);
484int32_t (*EncodeParameterSets) (ISVCEncoder *, SFrameBSInfo *pBsInfo);
486int32_t (*ForceIntraFrame) (ISVCEncoder *,
bool bIDR);
488int32_t (*SetOption) (ISVCEncoder *, ENCODER_OPTION eOptionId,
void *pOption);
489int32_t (*GetOption) (ISVCEncoder *, ENCODER_OPTION eOptionId,
void *pOption);
492typedef struct ISVCDecoderVtbl ISVCDecoderVtbl;
493typedef const ISVCDecoderVtbl *ISVCDecoder;
494struct ISVCDecoderVtbl {
495long (*Initialize) (ISVCDecoder *,
const SDecodingParam *pParam);
496long (*Uninitialize) (ISVCDecoder *);
498DECODING_STATE (*DecodeFrame) (ISVCDecoder *,
const unsigned char *pSrc,
499 const int32_t iSrcLen,
500 unsigned char **ppDst,
505DECODING_STATE (*DecodeFrameNoDelay) (ISVCDecoder *,
const unsigned char *pSrc,
506 const int32_t iSrcLen,
507 unsigned char **ppDst,
508 SBufferInfo *pDstInfo);
510DECODING_STATE (*DecodeFrame2) (ISVCDecoder *,
const unsigned char *pSrc,
511 const int32_t iSrcLen,
512 unsigned char **ppDst,
513 SBufferInfo *pDstInfo);
515DECODING_STATE (*FlushFrame) (ISVCDecoder *,
unsigned char **ppDst,
516 SBufferInfo *pDstInfo);
518DECODING_STATE (*DecodeParser) (ISVCDecoder *,
const unsigned char *pSrc,
519 const int32_t iSrcLen,
520 SParserBsInfo *pDstInfo);
522DECODING_STATE (*DecodeFrameEx) (ISVCDecoder *,
const unsigned char *pSrc,
523 const int32_t iSrcLen,
529 int32_t *iColorFormat);
531long (*SetOption) (ISVCDecoder *, DECODER_OPTION eOptionId,
void *pOption);
532long (*GetOption) (ISVCDecoder *, DECODER_OPTION eOptionId,
void *pOption);
539
540
541
546
547
548
553
554
555
560
561
562
567
568
569
573
574
575
576
577
581
582
int32_t WelsCreateSVCEncoder(ISVCEncoder **ppEncoder)
Create encoder.
void(* WelsTraceCallback)(void *ctx, int32_t level, const char *string)
Definition: codec_api.h:536
long WelsCreateDecoder(ISVCDecoder **ppDecoder)
Create decoder.
const char * esp_openh264_get_version(void)
int32_t WelsGetDecoderCapability(SDecoderCapability *pDecCapability)
Get the capability of decoder.
void WelsDestroySVCEncoder(ISVCEncoder *pEncoder)
Destroy encoder.
OpenH264Version WelsGetCodecVersion(void)
Get codec version Note, old versions of Mingw (GCC < 4.7) are buggy and use an incorrect/different AB...
void WelsGetCodecVersionEx(OpenH264Version *pVersion)
Get codec version.
#define EXTAPI
Definition: codec_api.h:52
void WelsDestroyDecoder(ISVCDecoder *pDecoder)
Destroy decoder.