|
1 /* |
|
2 * copyright (c) 2001 Fabrice Bellard |
|
3 * |
|
4 * This file is part of Libav. |
|
5 * |
|
6 * Libav is free software; you can redistribute it and/or |
|
7 * modify it under the terms of the GNU Lesser General Public |
|
8 * License as published by the Free Software Foundation; either |
|
9 * version 2.1 of the License, or (at your option) any later version. |
|
10 * |
|
11 * Libav is distributed in the hope that it will be useful, |
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 * Lesser General Public License for more details. |
|
15 * |
|
16 * You should have received a copy of the GNU Lesser General Public |
|
17 * License along with Libav; if not, write to the Free Software |
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
19 */ |
|
20 |
|
21 #ifndef AVCODEC_AVCODEC_H |
|
22 #define AVCODEC_AVCODEC_H |
|
23 |
|
24 /** |
|
25 * @file |
|
26 * external API header |
|
27 */ |
|
28 |
|
29 #include <errno.h> |
|
30 #include "libavutil/samplefmt.h" |
|
31 #include "libavutil/avutil.h" |
|
32 #include "libavutil/cpu.h" |
|
33 #include "libavutil/dict.h" |
|
34 #include "libavutil/log.h" |
|
35 #include "libavutil/pixfmt.h" |
|
36 #include "libavutil/rational.h" |
|
37 |
|
38 #include "libavcodec/version.h" |
|
39 /** |
|
40 * @defgroup libavc Encoding/Decoding Library |
|
41 * @{ |
|
42 * |
|
43 * @defgroup lavc_decoding Decoding |
|
44 * @{ |
|
45 * @} |
|
46 * |
|
47 * @defgroup lavc_encoding Encoding |
|
48 * @{ |
|
49 * @} |
|
50 * |
|
51 * @defgroup lavc_codec Codecs |
|
52 * @{ |
|
53 * @defgroup lavc_codec_native Native Codecs |
|
54 * @{ |
|
55 * @} |
|
56 * @defgroup lavc_codec_wrappers External library wrappers |
|
57 * @{ |
|
58 * @} |
|
59 * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge |
|
60 * @{ |
|
61 * @} |
|
62 * @} |
|
63 * @defgroup lavc_internal Internal |
|
64 * @{ |
|
65 * @} |
|
66 * @} |
|
67 * |
|
68 */ |
|
69 |
|
70 /** |
|
71 * @defgroup lavc_core Core functions/structures. |
|
72 * @ingroup libavc |
|
73 * |
|
74 * Basic definitions, functions for querying libavcodec capabilities, |
|
75 * allocating core structures, etc. |
|
76 * @{ |
|
77 */ |
|
78 |
|
79 |
|
80 /** |
|
81 * Identify the syntax and semantics of the bitstream. |
|
82 * The principle is roughly: |
|
83 * Two decoders with the same ID can decode the same streams. |
|
84 * Two encoders with the same ID can encode compatible streams. |
|
85 * There may be slight deviations from the principle due to implementation |
|
86 * details. |
|
87 * |
|
88 * If you add a codec ID to this list, add it so that |
|
89 * 1. no value of a existing codec ID changes (that would break ABI), |
|
90 * 2. it is as close as possible to similar codecs. |
|
91 * |
|
92 * After adding new codec IDs, do not forget to add an entry to the codec |
|
93 * descriptor list and bump libavcodec minor version. |
|
94 */ |
|
95 enum AVCodecID { |
|
96 AV_CODEC_ID_NONE, |
|
97 |
|
98 /* video codecs */ |
|
99 AV_CODEC_ID_MPEG1VIDEO, |
|
100 AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding |
|
101 AV_CODEC_ID_MPEG2VIDEO_XVMC, |
|
102 AV_CODEC_ID_H261, |
|
103 AV_CODEC_ID_H263, |
|
104 AV_CODEC_ID_RV10, |
|
105 AV_CODEC_ID_RV20, |
|
106 AV_CODEC_ID_MJPEG, |
|
107 AV_CODEC_ID_MJPEGB, |
|
108 AV_CODEC_ID_LJPEG, |
|
109 AV_CODEC_ID_SP5X, |
|
110 AV_CODEC_ID_JPEGLS, |
|
111 AV_CODEC_ID_MPEG4, |
|
112 AV_CODEC_ID_RAWVIDEO, |
|
113 AV_CODEC_ID_MSMPEG4V1, |
|
114 AV_CODEC_ID_MSMPEG4V2, |
|
115 AV_CODEC_ID_MSMPEG4V3, |
|
116 AV_CODEC_ID_WMV1, |
|
117 AV_CODEC_ID_WMV2, |
|
118 AV_CODEC_ID_H263P, |
|
119 AV_CODEC_ID_H263I, |
|
120 AV_CODEC_ID_FLV1, |
|
121 AV_CODEC_ID_SVQ1, |
|
122 AV_CODEC_ID_SVQ3, |
|
123 AV_CODEC_ID_DVVIDEO, |
|
124 AV_CODEC_ID_HUFFYUV, |
|
125 AV_CODEC_ID_CYUV, |
|
126 AV_CODEC_ID_H264, |
|
127 AV_CODEC_ID_INDEO3, |
|
128 AV_CODEC_ID_VP3, |
|
129 AV_CODEC_ID_THEORA, |
|
130 AV_CODEC_ID_ASV1, |
|
131 AV_CODEC_ID_ASV2, |
|
132 AV_CODEC_ID_FFV1, |
|
133 AV_CODEC_ID_4XM, |
|
134 AV_CODEC_ID_VCR1, |
|
135 AV_CODEC_ID_CLJR, |
|
136 AV_CODEC_ID_MDEC, |
|
137 AV_CODEC_ID_ROQ, |
|
138 AV_CODEC_ID_INTERPLAY_VIDEO, |
|
139 AV_CODEC_ID_XAN_WC3, |
|
140 AV_CODEC_ID_XAN_WC4, |
|
141 AV_CODEC_ID_RPZA, |
|
142 AV_CODEC_ID_CINEPAK, |
|
143 AV_CODEC_ID_WS_VQA, |
|
144 AV_CODEC_ID_MSRLE, |
|
145 AV_CODEC_ID_MSVIDEO1, |
|
146 AV_CODEC_ID_IDCIN, |
|
147 AV_CODEC_ID_8BPS, |
|
148 AV_CODEC_ID_SMC, |
|
149 AV_CODEC_ID_FLIC, |
|
150 AV_CODEC_ID_TRUEMOTION1, |
|
151 AV_CODEC_ID_VMDVIDEO, |
|
152 AV_CODEC_ID_MSZH, |
|
153 AV_CODEC_ID_ZLIB, |
|
154 AV_CODEC_ID_QTRLE, |
|
155 AV_CODEC_ID_SNOW, |
|
156 AV_CODEC_ID_TSCC, |
|
157 AV_CODEC_ID_ULTI, |
|
158 AV_CODEC_ID_QDRAW, |
|
159 AV_CODEC_ID_VIXL, |
|
160 AV_CODEC_ID_QPEG, |
|
161 AV_CODEC_ID_PNG, |
|
162 AV_CODEC_ID_PPM, |
|
163 AV_CODEC_ID_PBM, |
|
164 AV_CODEC_ID_PGM, |
|
165 AV_CODEC_ID_PGMYUV, |
|
166 AV_CODEC_ID_PAM, |
|
167 AV_CODEC_ID_FFVHUFF, |
|
168 AV_CODEC_ID_RV30, |
|
169 AV_CODEC_ID_RV40, |
|
170 AV_CODEC_ID_VC1, |
|
171 AV_CODEC_ID_WMV3, |
|
172 AV_CODEC_ID_LOCO, |
|
173 AV_CODEC_ID_WNV1, |
|
174 AV_CODEC_ID_AASC, |
|
175 AV_CODEC_ID_INDEO2, |
|
176 AV_CODEC_ID_FRAPS, |
|
177 AV_CODEC_ID_TRUEMOTION2, |
|
178 AV_CODEC_ID_BMP, |
|
179 AV_CODEC_ID_CSCD, |
|
180 AV_CODEC_ID_MMVIDEO, |
|
181 AV_CODEC_ID_ZMBV, |
|
182 AV_CODEC_ID_AVS, |
|
183 AV_CODEC_ID_SMACKVIDEO, |
|
184 AV_CODEC_ID_NUV, |
|
185 AV_CODEC_ID_KMVC, |
|
186 AV_CODEC_ID_FLASHSV, |
|
187 AV_CODEC_ID_CAVS, |
|
188 AV_CODEC_ID_JPEG2000, |
|
189 AV_CODEC_ID_VMNC, |
|
190 AV_CODEC_ID_VP5, |
|
191 AV_CODEC_ID_VP6, |
|
192 AV_CODEC_ID_VP6F, |
|
193 AV_CODEC_ID_TARGA, |
|
194 AV_CODEC_ID_DSICINVIDEO, |
|
195 AV_CODEC_ID_TIERTEXSEQVIDEO, |
|
196 AV_CODEC_ID_TIFF, |
|
197 AV_CODEC_ID_GIF, |
|
198 AV_CODEC_ID_DXA, |
|
199 AV_CODEC_ID_DNXHD, |
|
200 AV_CODEC_ID_THP, |
|
201 AV_CODEC_ID_SGI, |
|
202 AV_CODEC_ID_C93, |
|
203 AV_CODEC_ID_BETHSOFTVID, |
|
204 AV_CODEC_ID_PTX, |
|
205 AV_CODEC_ID_TXD, |
|
206 AV_CODEC_ID_VP6A, |
|
207 AV_CODEC_ID_AMV, |
|
208 AV_CODEC_ID_VB, |
|
209 AV_CODEC_ID_PCX, |
|
210 AV_CODEC_ID_SUNRAST, |
|
211 AV_CODEC_ID_INDEO4, |
|
212 AV_CODEC_ID_INDEO5, |
|
213 AV_CODEC_ID_MIMIC, |
|
214 AV_CODEC_ID_RL2, |
|
215 AV_CODEC_ID_ESCAPE124, |
|
216 AV_CODEC_ID_DIRAC, |
|
217 AV_CODEC_ID_BFI, |
|
218 AV_CODEC_ID_CMV, |
|
219 AV_CODEC_ID_MOTIONPIXELS, |
|
220 AV_CODEC_ID_TGV, |
|
221 AV_CODEC_ID_TGQ, |
|
222 AV_CODEC_ID_TQI, |
|
223 AV_CODEC_ID_AURA, |
|
224 AV_CODEC_ID_AURA2, |
|
225 AV_CODEC_ID_V210X, |
|
226 AV_CODEC_ID_TMV, |
|
227 AV_CODEC_ID_V210, |
|
228 AV_CODEC_ID_DPX, |
|
229 AV_CODEC_ID_MAD, |
|
230 AV_CODEC_ID_FRWU, |
|
231 AV_CODEC_ID_FLASHSV2, |
|
232 AV_CODEC_ID_CDGRAPHICS, |
|
233 AV_CODEC_ID_R210, |
|
234 AV_CODEC_ID_ANM, |
|
235 AV_CODEC_ID_BINKVIDEO, |
|
236 AV_CODEC_ID_IFF_ILBM, |
|
237 AV_CODEC_ID_IFF_BYTERUN1, |
|
238 AV_CODEC_ID_KGV1, |
|
239 AV_CODEC_ID_YOP, |
|
240 AV_CODEC_ID_VP8, |
|
241 AV_CODEC_ID_PICTOR, |
|
242 AV_CODEC_ID_ANSI, |
|
243 AV_CODEC_ID_A64_MULTI, |
|
244 AV_CODEC_ID_A64_MULTI5, |
|
245 AV_CODEC_ID_R10K, |
|
246 AV_CODEC_ID_MXPEG, |
|
247 AV_CODEC_ID_LAGARITH, |
|
248 AV_CODEC_ID_PRORES, |
|
249 AV_CODEC_ID_JV, |
|
250 AV_CODEC_ID_DFA, |
|
251 AV_CODEC_ID_WMV3IMAGE, |
|
252 AV_CODEC_ID_VC1IMAGE, |
|
253 AV_CODEC_ID_UTVIDEO, |
|
254 AV_CODEC_ID_BMV_VIDEO, |
|
255 AV_CODEC_ID_VBLE, |
|
256 AV_CODEC_ID_DXTORY, |
|
257 AV_CODEC_ID_V410, |
|
258 AV_CODEC_ID_XWD, |
|
259 AV_CODEC_ID_CDXL, |
|
260 AV_CODEC_ID_XBM, |
|
261 AV_CODEC_ID_ZEROCODEC, |
|
262 AV_CODEC_ID_MSS1, |
|
263 AV_CODEC_ID_MSA1, |
|
264 AV_CODEC_ID_TSCC2, |
|
265 AV_CODEC_ID_MTS2, |
|
266 AV_CODEC_ID_CLLC, |
|
267 AV_CODEC_ID_MSS2, |
|
268 |
|
269 /* various PCM "codecs" */ |
|
270 AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs |
|
271 AV_CODEC_ID_PCM_S16LE = 0x10000, |
|
272 AV_CODEC_ID_PCM_S16BE, |
|
273 AV_CODEC_ID_PCM_U16LE, |
|
274 AV_CODEC_ID_PCM_U16BE, |
|
275 AV_CODEC_ID_PCM_S8, |
|
276 AV_CODEC_ID_PCM_U8, |
|
277 AV_CODEC_ID_PCM_MULAW, |
|
278 AV_CODEC_ID_PCM_ALAW, |
|
279 AV_CODEC_ID_PCM_S32LE, |
|
280 AV_CODEC_ID_PCM_S32BE, |
|
281 AV_CODEC_ID_PCM_U32LE, |
|
282 AV_CODEC_ID_PCM_U32BE, |
|
283 AV_CODEC_ID_PCM_S24LE, |
|
284 AV_CODEC_ID_PCM_S24BE, |
|
285 AV_CODEC_ID_PCM_U24LE, |
|
286 AV_CODEC_ID_PCM_U24BE, |
|
287 AV_CODEC_ID_PCM_S24DAUD, |
|
288 AV_CODEC_ID_PCM_ZORK, |
|
289 AV_CODEC_ID_PCM_S16LE_PLANAR, |
|
290 AV_CODEC_ID_PCM_DVD, |
|
291 AV_CODEC_ID_PCM_F32BE, |
|
292 AV_CODEC_ID_PCM_F32LE, |
|
293 AV_CODEC_ID_PCM_F64BE, |
|
294 AV_CODEC_ID_PCM_F64LE, |
|
295 AV_CODEC_ID_PCM_BLURAY, |
|
296 AV_CODEC_ID_PCM_LXF, |
|
297 AV_CODEC_ID_S302M, |
|
298 AV_CODEC_ID_PCM_S8_PLANAR, |
|
299 |
|
300 /* various ADPCM codecs */ |
|
301 AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, |
|
302 AV_CODEC_ID_ADPCM_IMA_WAV, |
|
303 AV_CODEC_ID_ADPCM_IMA_DK3, |
|
304 AV_CODEC_ID_ADPCM_IMA_DK4, |
|
305 AV_CODEC_ID_ADPCM_IMA_WS, |
|
306 AV_CODEC_ID_ADPCM_IMA_SMJPEG, |
|
307 AV_CODEC_ID_ADPCM_MS, |
|
308 AV_CODEC_ID_ADPCM_4XM, |
|
309 AV_CODEC_ID_ADPCM_XA, |
|
310 AV_CODEC_ID_ADPCM_ADX, |
|
311 AV_CODEC_ID_ADPCM_EA, |
|
312 AV_CODEC_ID_ADPCM_G726, |
|
313 AV_CODEC_ID_ADPCM_CT, |
|
314 AV_CODEC_ID_ADPCM_SWF, |
|
315 AV_CODEC_ID_ADPCM_YAMAHA, |
|
316 AV_CODEC_ID_ADPCM_SBPRO_4, |
|
317 AV_CODEC_ID_ADPCM_SBPRO_3, |
|
318 AV_CODEC_ID_ADPCM_SBPRO_2, |
|
319 AV_CODEC_ID_ADPCM_THP, |
|
320 AV_CODEC_ID_ADPCM_IMA_AMV, |
|
321 AV_CODEC_ID_ADPCM_EA_R1, |
|
322 AV_CODEC_ID_ADPCM_EA_R3, |
|
323 AV_CODEC_ID_ADPCM_EA_R2, |
|
324 AV_CODEC_ID_ADPCM_IMA_EA_SEAD, |
|
325 AV_CODEC_ID_ADPCM_IMA_EA_EACS, |
|
326 AV_CODEC_ID_ADPCM_EA_XAS, |
|
327 AV_CODEC_ID_ADPCM_EA_MAXIS_XA, |
|
328 AV_CODEC_ID_ADPCM_IMA_ISS, |
|
329 AV_CODEC_ID_ADPCM_G722, |
|
330 AV_CODEC_ID_ADPCM_IMA_APC, |
|
331 |
|
332 /* AMR */ |
|
333 AV_CODEC_ID_AMR_NB = 0x12000, |
|
334 AV_CODEC_ID_AMR_WB, |
|
335 |
|
336 /* RealAudio codecs*/ |
|
337 AV_CODEC_ID_RA_144 = 0x13000, |
|
338 AV_CODEC_ID_RA_288, |
|
339 |
|
340 /* various DPCM codecs */ |
|
341 AV_CODEC_ID_ROQ_DPCM = 0x14000, |
|
342 AV_CODEC_ID_INTERPLAY_DPCM, |
|
343 AV_CODEC_ID_XAN_DPCM, |
|
344 AV_CODEC_ID_SOL_DPCM, |
|
345 |
|
346 /* audio codecs */ |
|
347 AV_CODEC_ID_MP2 = 0x15000, |
|
348 AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 |
|
349 AV_CODEC_ID_AAC, |
|
350 AV_CODEC_ID_AC3, |
|
351 AV_CODEC_ID_DTS, |
|
352 AV_CODEC_ID_VORBIS, |
|
353 AV_CODEC_ID_DVAUDIO, |
|
354 AV_CODEC_ID_WMAV1, |
|
355 AV_CODEC_ID_WMAV2, |
|
356 AV_CODEC_ID_MACE3, |
|
357 AV_CODEC_ID_MACE6, |
|
358 AV_CODEC_ID_VMDAUDIO, |
|
359 AV_CODEC_ID_FLAC, |
|
360 AV_CODEC_ID_MP3ADU, |
|
361 AV_CODEC_ID_MP3ON4, |
|
362 AV_CODEC_ID_SHORTEN, |
|
363 AV_CODEC_ID_ALAC, |
|
364 AV_CODEC_ID_WESTWOOD_SND1, |
|
365 AV_CODEC_ID_GSM, ///< as in Berlin toast format |
|
366 AV_CODEC_ID_QDM2, |
|
367 AV_CODEC_ID_COOK, |
|
368 AV_CODEC_ID_TRUESPEECH, |
|
369 AV_CODEC_ID_TTA, |
|
370 AV_CODEC_ID_SMACKAUDIO, |
|
371 AV_CODEC_ID_QCELP, |
|
372 AV_CODEC_ID_WAVPACK, |
|
373 AV_CODEC_ID_DSICINAUDIO, |
|
374 AV_CODEC_ID_IMC, |
|
375 AV_CODEC_ID_MUSEPACK7, |
|
376 AV_CODEC_ID_MLP, |
|
377 AV_CODEC_ID_GSM_MS, /* as found in WAV */ |
|
378 AV_CODEC_ID_ATRAC3, |
|
379 AV_CODEC_ID_VOXWARE, |
|
380 AV_CODEC_ID_APE, |
|
381 AV_CODEC_ID_NELLYMOSER, |
|
382 AV_CODEC_ID_MUSEPACK8, |
|
383 AV_CODEC_ID_SPEEX, |
|
384 AV_CODEC_ID_WMAVOICE, |
|
385 AV_CODEC_ID_WMAPRO, |
|
386 AV_CODEC_ID_WMALOSSLESS, |
|
387 AV_CODEC_ID_ATRAC3P, |
|
388 AV_CODEC_ID_EAC3, |
|
389 AV_CODEC_ID_SIPR, |
|
390 AV_CODEC_ID_MP1, |
|
391 AV_CODEC_ID_TWINVQ, |
|
392 AV_CODEC_ID_TRUEHD, |
|
393 AV_CODEC_ID_MP4ALS, |
|
394 AV_CODEC_ID_ATRAC1, |
|
395 AV_CODEC_ID_BINKAUDIO_RDFT, |
|
396 AV_CODEC_ID_BINKAUDIO_DCT, |
|
397 AV_CODEC_ID_AAC_LATM, |
|
398 AV_CODEC_ID_QDMC, |
|
399 AV_CODEC_ID_CELT, |
|
400 AV_CODEC_ID_G723_1, |
|
401 AV_CODEC_ID_G729, |
|
402 AV_CODEC_ID_8SVX_EXP, |
|
403 AV_CODEC_ID_8SVX_FIB, |
|
404 AV_CODEC_ID_BMV_AUDIO, |
|
405 AV_CODEC_ID_RALF, |
|
406 AV_CODEC_ID_IAC, |
|
407 AV_CODEC_ID_ILBC, |
|
408 AV_CODEC_ID_OPUS, |
|
409 |
|
410 /* subtitle codecs */ |
|
411 AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. |
|
412 AV_CODEC_ID_DVD_SUBTITLE = 0x17000, |
|
413 AV_CODEC_ID_DVB_SUBTITLE, |
|
414 AV_CODEC_ID_TEXT, ///< raw UTF-8 text |
|
415 AV_CODEC_ID_XSUB, |
|
416 AV_CODEC_ID_SSA, |
|
417 AV_CODEC_ID_MOV_TEXT, |
|
418 AV_CODEC_ID_HDMV_PGS_SUBTITLE, |
|
419 AV_CODEC_ID_DVB_TELETEXT, |
|
420 AV_CODEC_ID_SRT, |
|
421 |
|
422 /* other specific kind of codecs (generally used for attachments) */ |
|
423 AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. |
|
424 AV_CODEC_ID_TTF = 0x18000, |
|
425 |
|
426 AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it |
|
427 |
|
428 AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS |
|
429 * stream (only used by libavformat) */ |
|
430 AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems |
|
431 * stream (only used by libavformat) */ |
|
432 AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. |
|
433 |
|
434 #if FF_API_CODEC_ID |
|
435 #include "old_codec_ids.h" |
|
436 #endif |
|
437 }; |
|
438 |
|
439 #if FF_API_CODEC_ID |
|
440 #define CodecID AVCodecID |
|
441 #endif |
|
442 |
|
443 /** |
|
444 * This struct describes the properties of a single codec described by an |
|
445 * AVCodecID. |
|
446 * @see avcodec_get_descriptor() |
|
447 */ |
|
448 typedef struct AVCodecDescriptor { |
|
449 enum AVCodecID id; |
|
450 enum AVMediaType type; |
|
451 /** |
|
452 * Name of the codec described by this descriptor. It is non-empty and |
|
453 * unique for each codec descriptor. It should contain alphanumeric |
|
454 * characters and '_' only. |
|
455 */ |
|
456 const char *name; |
|
457 /** |
|
458 * A more descriptive name for this codec. May be NULL. |
|
459 */ |
|
460 const char *long_name; |
|
461 /** |
|
462 * Codec properties, a combination of AV_CODEC_PROP_* flags. |
|
463 */ |
|
464 int props; |
|
465 } AVCodecDescriptor; |
|
466 |
|
467 /** |
|
468 * Codec uses only intra compression. |
|
469 * Video codecs only. |
|
470 */ |
|
471 #define AV_CODEC_PROP_INTRA_ONLY (1 << 0) |
|
472 /** |
|
473 * Codec supports lossy compression. Audio and video codecs only. |
|
474 * @note a codec may support both lossy and lossless |
|
475 * compression modes |
|
476 */ |
|
477 #define AV_CODEC_PROP_LOSSY (1 << 1) |
|
478 /** |
|
479 * Codec supports lossless compression. Audio and video codecs only. |
|
480 */ |
|
481 #define AV_CODEC_PROP_LOSSLESS (1 << 2) |
|
482 |
|
483 #if FF_API_OLD_DECODE_AUDIO |
|
484 /* in bytes */ |
|
485 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio |
|
486 #endif |
|
487 |
|
488 /** |
|
489 * @ingroup lavc_decoding |
|
490 * Required number of additionally allocated bytes at the end of the input bitstream for decoding. |
|
491 * This is mainly needed because some optimized bitstream readers read |
|
492 * 32 or 64 bit at once and could read over the end.<br> |
|
493 * Note: If the first 23 bits of the additional bytes are not 0, then damaged |
|
494 * MPEG bitstreams could cause overread and segfault. |
|
495 */ |
|
496 #define FF_INPUT_BUFFER_PADDING_SIZE 8 |
|
497 |
|
498 /** |
|
499 * @ingroup lavc_encoding |
|
500 * minimum encoding buffer size |
|
501 * Used to avoid some checks during header writing. |
|
502 */ |
|
503 #define FF_MIN_BUFFER_SIZE 16384 |
|
504 |
|
505 |
|
506 /** |
|
507 * @ingroup lavc_encoding |
|
508 * motion estimation type. |
|
509 */ |
|
510 enum Motion_Est_ID { |
|
511 ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed |
|
512 ME_FULL, |
|
513 ME_LOG, |
|
514 ME_PHODS, |
|
515 ME_EPZS, ///< enhanced predictive zonal search |
|
516 ME_X1, ///< reserved for experiments |
|
517 ME_HEX, ///< hexagon based search |
|
518 ME_UMH, ///< uneven multi-hexagon search |
|
519 ME_ITER, ///< iterative search |
|
520 ME_TESA, ///< transformed exhaustive search algorithm |
|
521 }; |
|
522 |
|
523 /** |
|
524 * @ingroup lavc_decoding |
|
525 */ |
|
526 enum AVDiscard{ |
|
527 /* We leave some space between them for extensions (drop some |
|
528 * keyframes for intra-only or drop just some bidir frames). */ |
|
529 AVDISCARD_NONE =-16, ///< discard nothing |
|
530 AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi |
|
531 AVDISCARD_NONREF = 8, ///< discard all non reference |
|
532 AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames |
|
533 AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes |
|
534 AVDISCARD_ALL = 48, ///< discard all |
|
535 }; |
|
536 |
|
537 enum AVColorPrimaries{ |
|
538 AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B |
|
539 AVCOL_PRI_UNSPECIFIED = 2, |
|
540 AVCOL_PRI_BT470M = 4, |
|
541 AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM |
|
542 AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC |
|
543 AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above |
|
544 AVCOL_PRI_FILM = 8, |
|
545 AVCOL_PRI_NB , ///< Not part of ABI |
|
546 }; |
|
547 |
|
548 enum AVColorTransferCharacteristic{ |
|
549 AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 |
|
550 AVCOL_TRC_UNSPECIFIED = 2, |
|
551 AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM |
|
552 AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG |
|
553 AVCOL_TRC_SMPTE240M = 7, |
|
554 AVCOL_TRC_NB , ///< Not part of ABI |
|
555 }; |
|
556 |
|
557 enum AVColorSpace{ |
|
558 AVCOL_SPC_RGB = 0, |
|
559 AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B |
|
560 AVCOL_SPC_UNSPECIFIED = 2, |
|
561 AVCOL_SPC_FCC = 4, |
|
562 AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 |
|
563 AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above |
|
564 AVCOL_SPC_SMPTE240M = 7, |
|
565 AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 |
|
566 AVCOL_SPC_NB , ///< Not part of ABI |
|
567 }; |
|
568 |
|
569 enum AVColorRange{ |
|
570 AVCOL_RANGE_UNSPECIFIED = 0, |
|
571 AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges |
|
572 AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges |
|
573 AVCOL_RANGE_NB , ///< Not part of ABI |
|
574 }; |
|
575 |
|
576 /** |
|
577 * X X 3 4 X X are luma samples, |
|
578 * 1 2 1-6 are possible chroma positions |
|
579 * X X 5 6 X 0 is undefined/unknown position |
|
580 */ |
|
581 enum AVChromaLocation{ |
|
582 AVCHROMA_LOC_UNSPECIFIED = 0, |
|
583 AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default |
|
584 AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 |
|
585 AVCHROMA_LOC_TOPLEFT = 3, ///< DV |
|
586 AVCHROMA_LOC_TOP = 4, |
|
587 AVCHROMA_LOC_BOTTOMLEFT = 5, |
|
588 AVCHROMA_LOC_BOTTOM = 6, |
|
589 AVCHROMA_LOC_NB , ///< Not part of ABI |
|
590 }; |
|
591 |
|
592 enum AVAudioServiceType { |
|
593 AV_AUDIO_SERVICE_TYPE_MAIN = 0, |
|
594 AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, |
|
595 AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, |
|
596 AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, |
|
597 AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, |
|
598 AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, |
|
599 AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, |
|
600 AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, |
|
601 AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, |
|
602 AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI |
|
603 }; |
|
604 |
|
605 /** |
|
606 * @ingroup lavc_encoding |
|
607 */ |
|
608 typedef struct RcOverride{ |
|
609 int start_frame; |
|
610 int end_frame; |
|
611 int qscale; // If this is 0 then quality_factor will be used instead. |
|
612 float quality_factor; |
|
613 } RcOverride; |
|
614 |
|
615 #define FF_MAX_B_FRAMES 16 |
|
616 |
|
617 /* encoding support |
|
618 These flags can be passed in AVCodecContext.flags before initialization. |
|
619 Note: Not everything is supported yet. |
|
620 */ |
|
621 |
|
622 #define CODEC_FLAG_QSCALE 0x0002 ///< Use fixed qscale. |
|
623 #define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / advanced prediction for H.263. |
|
624 #define CODEC_FLAG_QPEL 0x0010 ///< Use qpel MC. |
|
625 #define CODEC_FLAG_GMC 0x0020 ///< Use GMC. |
|
626 #define CODEC_FLAG_MV0 0x0040 ///< Always try a MB with MV=<0,0>. |
|
627 /** |
|
628 * The parent program guarantees that the input for B-frames containing |
|
629 * streams is not written to for at least s->max_b_frames+1 frames, if |
|
630 * this is not set the input will be copied. |
|
631 */ |
|
632 #define CODEC_FLAG_INPUT_PRESERVED 0x0100 |
|
633 #define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode. |
|
634 #define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode. |
|
635 #define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale. |
|
636 #define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges. |
|
637 #define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding. |
|
638 #define CODEC_FLAG_TRUNCATED 0x00010000 /** Input bitstream might be truncated at a random |
|
639 location instead of only at frame boundaries. */ |
|
640 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< Normalize adaptive quantization. |
|
641 #define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT. |
|
642 #define CODEC_FLAG_LOW_DELAY 0x00080000 ///< Force low delay. |
|
643 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< Place global headers in extradata instead of every keyframe. |
|
644 #define CODEC_FLAG_BITEXACT 0x00800000 ///< Use only bitexact stuff (except (I)DCT). |
|
645 /* Fx : Flag for h263+ extra options */ |
|
646 #define CODEC_FLAG_AC_PRED 0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction |
|
647 #define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter |
|
648 #define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation |
|
649 #define CODEC_FLAG_CLOSED_GOP 0x80000000 |
|
650 #define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. |
|
651 #define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. |
|
652 #define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata. |
|
653 #if FF_API_MPV_GLOBAL_OPTS |
|
654 #define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. |
|
655 #define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. |
|
656 #define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. |
|
657 #define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping |
|
658 #endif |
|
659 #define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. |
|
660 |
|
661 /* Unsupported options : |
|
662 * Syntax Arithmetic coding (SAC) |
|
663 * Reference Picture Selection |
|
664 * Independent Segment Decoding */ |
|
665 /* /Fx */ |
|
666 /* codec capabilities */ |
|
667 |
|
668 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback. |
|
669 /** |
|
670 * Codec uses get_buffer() for allocating buffers and supports custom allocators. |
|
671 * If not set, it might not use get_buffer() at all or use operations that |
|
672 * assume the buffer was allocated by avcodec_default_get_buffer. |
|
673 */ |
|
674 #define CODEC_CAP_DR1 0x0002 |
|
675 #define CODEC_CAP_TRUNCATED 0x0008 |
|
676 /* Codec can export data for HW decoding (XvMC). */ |
|
677 #define CODEC_CAP_HWACCEL 0x0010 |
|
678 /** |
|
679 * Encoder or decoder requires flushing with NULL input at the end in order to |
|
680 * give the complete and correct output. |
|
681 * |
|
682 * NOTE: If this flag is not set, the codec is guaranteed to never be fed with |
|
683 * with NULL data. The user can still send NULL data to the public encode |
|
684 * or decode function, but libavcodec will not pass it along to the codec |
|
685 * unless this flag is set. |
|
686 * |
|
687 * Decoders: |
|
688 * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, |
|
689 * avpkt->size=0 at the end to get the delayed data until the decoder no longer |
|
690 * returns frames. |
|
691 * |
|
692 * Encoders: |
|
693 * The encoder needs to be fed with NULL data at the end of encoding until the |
|
694 * encoder no longer returns data. |
|
695 * |
|
696 * NOTE: For encoders implementing the AVCodec.encode2() function, setting this |
|
697 * flag also means that the encoder must set the pts and duration for |
|
698 * each output packet. If this flag is not set, the pts and duration will |
|
699 * be determined by libavcodec from the input frame. |
|
700 */ |
|
701 #define CODEC_CAP_DELAY 0x0020 |
|
702 /** |
|
703 * Codec can be fed a final frame with a smaller size. |
|
704 * This can be used to prevent truncation of the last audio samples. |
|
705 */ |
|
706 #define CODEC_CAP_SMALL_LAST_FRAME 0x0040 |
|
707 /** |
|
708 * Codec can export data for HW decoding (VDPAU). |
|
709 */ |
|
710 #define CODEC_CAP_HWACCEL_VDPAU 0x0080 |
|
711 /** |
|
712 * Codec can output multiple frames per AVPacket |
|
713 * Normally demuxers return one frame at a time, demuxers which do not do |
|
714 * are connected to a parser to split what they return into proper frames. |
|
715 * This flag is reserved to the very rare category of codecs which have a |
|
716 * bitstream that cannot be split into frames without timeconsuming |
|
717 * operations like full decoding. Demuxers carring such bitstreams thus |
|
718 * may return multiple frames in a packet. This has many disadvantages like |
|
719 * prohibiting stream copy in many cases thus it should only be considered |
|
720 * as a last resort. |
|
721 */ |
|
722 #define CODEC_CAP_SUBFRAMES 0x0100 |
|
723 /** |
|
724 * Codec is experimental and is thus avoided in favor of non experimental |
|
725 * encoders |
|
726 */ |
|
727 #define CODEC_CAP_EXPERIMENTAL 0x0200 |
|
728 /** |
|
729 * Codec should fill in channel configuration and samplerate instead of container |
|
730 */ |
|
731 #define CODEC_CAP_CHANNEL_CONF 0x0400 |
|
732 /** |
|
733 * Codec is able to deal with negative linesizes |
|
734 */ |
|
735 #define CODEC_CAP_NEG_LINESIZES 0x0800 |
|
736 /** |
|
737 * Codec supports frame-level multithreading. |
|
738 */ |
|
739 #define CODEC_CAP_FRAME_THREADS 0x1000 |
|
740 /** |
|
741 * Codec supports slice-based (or partition-based) multithreading. |
|
742 */ |
|
743 #define CODEC_CAP_SLICE_THREADS 0x2000 |
|
744 /** |
|
745 * Codec supports changed parameters at any point. |
|
746 */ |
|
747 #define CODEC_CAP_PARAM_CHANGE 0x4000 |
|
748 /** |
|
749 * Codec supports avctx->thread_count == 0 (auto). |
|
750 */ |
|
751 #define CODEC_CAP_AUTO_THREADS 0x8000 |
|
752 /** |
|
753 * Audio encoder supports receiving a different number of samples in each call. |
|
754 */ |
|
755 #define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000 |
|
756 |
|
757 //The following defines may change, don't expect compatibility if you use them. |
|
758 #define MB_TYPE_INTRA4x4 0x0001 |
|
759 #define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific |
|
760 #define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific |
|
761 #define MB_TYPE_16x16 0x0008 |
|
762 #define MB_TYPE_16x8 0x0010 |
|
763 #define MB_TYPE_8x16 0x0020 |
|
764 #define MB_TYPE_8x8 0x0040 |
|
765 #define MB_TYPE_INTERLACED 0x0080 |
|
766 #define MB_TYPE_DIRECT2 0x0100 //FIXME |
|
767 #define MB_TYPE_ACPRED 0x0200 |
|
768 #define MB_TYPE_GMC 0x0400 |
|
769 #define MB_TYPE_SKIP 0x0800 |
|
770 #define MB_TYPE_P0L0 0x1000 |
|
771 #define MB_TYPE_P1L0 0x2000 |
|
772 #define MB_TYPE_P0L1 0x4000 |
|
773 #define MB_TYPE_P1L1 0x8000 |
|
774 #define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) |
|
775 #define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) |
|
776 #define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) |
|
777 #define MB_TYPE_QUANT 0x00010000 |
|
778 #define MB_TYPE_CBP 0x00020000 |
|
779 //Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) |
|
780 |
|
781 /** |
|
782 * Pan Scan area. |
|
783 * This specifies the area which should be displayed. |
|
784 * Note there may be multiple such areas for one frame. |
|
785 */ |
|
786 typedef struct AVPanScan{ |
|
787 /** |
|
788 * id |
|
789 * - encoding: Set by user. |
|
790 * - decoding: Set by libavcodec. |
|
791 */ |
|
792 int id; |
|
793 |
|
794 /** |
|
795 * width and height in 1/16 pel |
|
796 * - encoding: Set by user. |
|
797 * - decoding: Set by libavcodec. |
|
798 */ |
|
799 int width; |
|
800 int height; |
|
801 |
|
802 /** |
|
803 * position of the top left corner in 1/16 pel for up to 3 fields/frames |
|
804 * - encoding: Set by user. |
|
805 * - decoding: Set by libavcodec. |
|
806 */ |
|
807 int16_t position[3][2]; |
|
808 }AVPanScan; |
|
809 |
|
810 #define FF_QSCALE_TYPE_MPEG1 0 |
|
811 #define FF_QSCALE_TYPE_MPEG2 1 |
|
812 #define FF_QSCALE_TYPE_H264 2 |
|
813 #define FF_QSCALE_TYPE_VP56 3 |
|
814 |
|
815 #define FF_BUFFER_TYPE_INTERNAL 1 |
|
816 #define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user) |
|
817 #define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared. |
|
818 #define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. |
|
819 |
|
820 #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). |
|
821 #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. |
|
822 #define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content. |
|
823 #define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update). |
|
824 |
|
825 /** |
|
826 * @defgroup lavc_packet AVPacket |
|
827 * |
|
828 * Types and functions for working with AVPacket. |
|
829 * @{ |
|
830 */ |
|
831 enum AVPacketSideDataType { |
|
832 AV_PKT_DATA_PALETTE, |
|
833 AV_PKT_DATA_NEW_EXTRADATA, |
|
834 |
|
835 /** |
|
836 * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: |
|
837 * @code |
|
838 * u32le param_flags |
|
839 * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) |
|
840 * s32le channel_count |
|
841 * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) |
|
842 * u64le channel_layout |
|
843 * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) |
|
844 * s32le sample_rate |
|
845 * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) |
|
846 * s32le width |
|
847 * s32le height |
|
848 * @endcode |
|
849 */ |
|
850 AV_PKT_DATA_PARAM_CHANGE, |
|
851 |
|
852 /** |
|
853 * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of |
|
854 * structures with info about macroblocks relevant to splitting the |
|
855 * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). |
|
856 * That is, it does not necessarily contain info about all macroblocks, |
|
857 * as long as the distance between macroblocks in the info is smaller |
|
858 * than the target payload size. |
|
859 * Each MB info structure is 12 bytes, and is laid out as follows: |
|
860 * @code |
|
861 * u32le bit offset from the start of the packet |
|
862 * u8 current quantizer at the start of the macroblock |
|
863 * u8 GOB number |
|
864 * u16le macroblock address within the GOB |
|
865 * u8 horizontal MV predictor |
|
866 * u8 vertical MV predictor |
|
867 * u8 horizontal MV predictor for block number 3 |
|
868 * u8 vertical MV predictor for block number 3 |
|
869 * @endcode |
|
870 */ |
|
871 AV_PKT_DATA_H263_MB_INFO, |
|
872 }; |
|
873 |
|
874 typedef struct AVPacket { |
|
875 /** |
|
876 * Presentation timestamp in AVStream->time_base units; the time at which |
|
877 * the decompressed packet will be presented to the user. |
|
878 * Can be AV_NOPTS_VALUE if it is not stored in the file. |
|
879 * pts MUST be larger or equal to dts as presentation cannot happen before |
|
880 * decompression, unless one wants to view hex dumps. Some formats misuse |
|
881 * the terms dts and pts/cts to mean something different. Such timestamps |
|
882 * must be converted to true pts/dts before they are stored in AVPacket. |
|
883 */ |
|
884 int64_t pts; |
|
885 /** |
|
886 * Decompression timestamp in AVStream->time_base units; the time at which |
|
887 * the packet is decompressed. |
|
888 * Can be AV_NOPTS_VALUE if it is not stored in the file. |
|
889 */ |
|
890 int64_t dts; |
|
891 uint8_t *data; |
|
892 int size; |
|
893 int stream_index; |
|
894 /** |
|
895 * A combination of AV_PKT_FLAG values |
|
896 */ |
|
897 int flags; |
|
898 /** |
|
899 * Additional packet data that can be provided by the container. |
|
900 * Packet can contain several types of side information. |
|
901 */ |
|
902 struct { |
|
903 uint8_t *data; |
|
904 int size; |
|
905 enum AVPacketSideDataType type; |
|
906 } *side_data; |
|
907 int side_data_elems; |
|
908 |
|
909 /** |
|
910 * Duration of this packet in AVStream->time_base units, 0 if unknown. |
|
911 * Equals next_pts - this_pts in presentation order. |
|
912 */ |
|
913 int duration; |
|
914 void (*destruct)(struct AVPacket *); |
|
915 void *priv; |
|
916 int64_t pos; ///< byte position in stream, -1 if unknown |
|
917 |
|
918 /** |
|
919 * Time difference in AVStream->time_base units from the pts of this |
|
920 * packet to the point at which the output from the decoder has converged |
|
921 * independent from the availability of previous frames. That is, the |
|
922 * frames are virtually identical no matter if decoding started from |
|
923 * the very first frame or from this keyframe. |
|
924 * Is AV_NOPTS_VALUE if unknown. |
|
925 * This field is not the display duration of the current packet. |
|
926 * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY |
|
927 * set. |
|
928 * |
|
929 * The purpose of this field is to allow seeking in streams that have no |
|
930 * keyframes in the conventional sense. It corresponds to the |
|
931 * recovery point SEI in H.264 and match_time_delta in NUT. It is also |
|
932 * essential for some types of subtitle streams to ensure that all |
|
933 * subtitles are correctly displayed after seeking. |
|
934 */ |
|
935 int64_t convergence_duration; |
|
936 } AVPacket; |
|
937 #define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe |
|
938 #define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted |
|
939 |
|
940 enum AVSideDataParamChangeFlags { |
|
941 AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, |
|
942 AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, |
|
943 AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, |
|
944 AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, |
|
945 }; |
|
946 /** |
|
947 * @} |
|
948 */ |
|
949 |
|
950 /** |
|
951 * Audio Video Frame. |
|
952 * New fields can be added to the end of AVFRAME with minor version |
|
953 * bumps. Removal, reordering and changes to existing fields require |
|
954 * a major version bump. |
|
955 * sizeof(AVFrame) must not be used outside libav*. |
|
956 */ |
|
957 typedef struct AVFrame { |
|
958 #define AV_NUM_DATA_POINTERS 8 |
|
959 /** |
|
960 * pointer to the picture/channel planes. |
|
961 * This might be different from the first allocated byte |
|
962 * - encoding: Set by user |
|
963 * - decoding: set by AVCodecContext.get_buffer() |
|
964 */ |
|
965 uint8_t *data[AV_NUM_DATA_POINTERS]; |
|
966 |
|
967 /** |
|
968 * Size, in bytes, of the data for each picture/channel plane. |
|
969 * |
|
970 * For audio, only linesize[0] may be set. For planar audio, each channel |
|
971 * plane must be the same size. |
|
972 * |
|
973 * - encoding: Set by user |
|
974 * - decoding: set by AVCodecContext.get_buffer() |
|
975 */ |
|
976 int linesize[AV_NUM_DATA_POINTERS]; |
|
977 |
|
978 /** |
|
979 * pointers to the data planes/channels. |
|
980 * |
|
981 * For video, this should simply point to data[]. |
|
982 * |
|
983 * For planar audio, each channel has a separate data pointer, and |
|
984 * linesize[0] contains the size of each channel buffer. |
|
985 * For packed audio, there is just one data pointer, and linesize[0] |
|
986 * contains the total size of the buffer for all channels. |
|
987 * |
|
988 * Note: Both data and extended_data will always be set by get_buffer(), |
|
989 * but for planar audio with more channels that can fit in data, |
|
990 * extended_data must be used by the decoder in order to access all |
|
991 * channels. |
|
992 * |
|
993 * encoding: set by user |
|
994 * decoding: set by AVCodecContext.get_buffer() |
|
995 */ |
|
996 uint8_t **extended_data; |
|
997 |
|
998 /** |
|
999 * width and height of the video frame |
|
1000 * - encoding: unused |
|
1001 * - decoding: Read by user. |
|
1002 */ |
|
1003 int width, height; |
|
1004 |
|
1005 /** |
|
1006 * number of audio samples (per channel) described by this frame |
|
1007 * - encoding: Set by user |
|
1008 * - decoding: Set by libavcodec |
|
1009 */ |
|
1010 int nb_samples; |
|
1011 |
|
1012 /** |
|
1013 * format of the frame, -1 if unknown or unset |
|
1014 * Values correspond to enum AVPixelFormat for video frames, |
|
1015 * enum AVSampleFormat for audio) |
|
1016 * - encoding: unused |
|
1017 * - decoding: Read by user. |
|
1018 */ |
|
1019 int format; |
|
1020 |
|
1021 /** |
|
1022 * 1 -> keyframe, 0-> not |
|
1023 * - encoding: Set by libavcodec. |
|
1024 * - decoding: Set by libavcodec. |
|
1025 */ |
|
1026 int key_frame; |
|
1027 |
|
1028 /** |
|
1029 * Picture type of the frame, see ?_TYPE below. |
|
1030 * - encoding: Set by libavcodec. for coded_picture (and set by user for input). |
|
1031 * - decoding: Set by libavcodec. |
|
1032 */ |
|
1033 enum AVPictureType pict_type; |
|
1034 |
|
1035 /** |
|
1036 * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. |
|
1037 * This isn't used by libavcodec unless the default get/release_buffer() is used. |
|
1038 * - encoding: |
|
1039 * - decoding: |
|
1040 */ |
|
1041 uint8_t *base[AV_NUM_DATA_POINTERS]; |
|
1042 |
|
1043 /** |
|
1044 * sample aspect ratio for the video frame, 0/1 if unknown/unspecified |
|
1045 * - encoding: unused |
|
1046 * - decoding: Read by user. |
|
1047 */ |
|
1048 AVRational sample_aspect_ratio; |
|
1049 |
|
1050 /** |
|
1051 * presentation timestamp in time_base units (time when frame should be shown to user) |
|
1052 * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. |
|
1053 * - encoding: MUST be set by user. |
|
1054 * - decoding: Set by libavcodec. |
|
1055 */ |
|
1056 int64_t pts; |
|
1057 |
|
1058 /** |
|
1059 * reordered pts from the last AVPacket that has been input into the decoder |
|
1060 * - encoding: unused |
|
1061 * - decoding: Read by user. |
|
1062 */ |
|
1063 int64_t pkt_pts; |
|
1064 |
|
1065 /** |
|
1066 * dts from the last AVPacket that has been input into the decoder |
|
1067 * - encoding: unused |
|
1068 * - decoding: Read by user. |
|
1069 */ |
|
1070 int64_t pkt_dts; |
|
1071 |
|
1072 /** |
|
1073 * picture number in bitstream order |
|
1074 * - encoding: set by |
|
1075 * - decoding: Set by libavcodec. |
|
1076 */ |
|
1077 int coded_picture_number; |
|
1078 /** |
|
1079 * picture number in display order |
|
1080 * - encoding: set by |
|
1081 * - decoding: Set by libavcodec. |
|
1082 */ |
|
1083 int display_picture_number; |
|
1084 |
|
1085 /** |
|
1086 * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) |
|
1087 * - encoding: Set by libavcodec. for coded_picture (and set by user for input). |
|
1088 * - decoding: Set by libavcodec. |
|
1089 */ |
|
1090 int quality; |
|
1091 |
|
1092 /** |
|
1093 * is this picture used as reference |
|
1094 * The values for this are the same as the MpegEncContext.picture_structure |
|
1095 * variable, that is 1->top field, 2->bottom field, 3->frame/both fields. |
|
1096 * Set to 4 for delayed, non-reference frames. |
|
1097 * - encoding: unused |
|
1098 * - decoding: Set by libavcodec. (before get_buffer() call)). |
|
1099 */ |
|
1100 int reference; |
|
1101 |
|
1102 /** |
|
1103 * QP table |
|
1104 * - encoding: unused |
|
1105 * - decoding: Set by libavcodec. |
|
1106 */ |
|
1107 int8_t *qscale_table; |
|
1108 /** |
|
1109 * QP store stride |
|
1110 * - encoding: unused |
|
1111 * - decoding: Set by libavcodec. |
|
1112 */ |
|
1113 int qstride; |
|
1114 |
|
1115 /** |
|
1116 * |
|
1117 */ |
|
1118 int qscale_type; |
|
1119 |
|
1120 /** |
|
1121 * mbskip_table[mb]>=1 if MB didn't change |
|
1122 * stride= mb_width = (width+15)>>4 |
|
1123 * - encoding: unused |
|
1124 * - decoding: Set by libavcodec. |
|
1125 */ |
|
1126 uint8_t *mbskip_table; |
|
1127 |
|
1128 /** |
|
1129 * motion vector table |
|
1130 * @code |
|
1131 * example: |
|
1132 * int mv_sample_log2= 4 - motion_subsample_log2; |
|
1133 * int mb_width= (width+15)>>4; |
|
1134 * int mv_stride= (mb_width << mv_sample_log2) + 1; |
|
1135 * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y]; |
|
1136 * @endcode |
|
1137 * - encoding: Set by user. |
|
1138 * - decoding: Set by libavcodec. |
|
1139 */ |
|
1140 int16_t (*motion_val[2])[2]; |
|
1141 |
|
1142 /** |
|
1143 * macroblock type table |
|
1144 * mb_type_base + mb_width + 2 |
|
1145 * - encoding: Set by user. |
|
1146 * - decoding: Set by libavcodec. |
|
1147 */ |
|
1148 uint32_t *mb_type; |
|
1149 |
|
1150 /** |
|
1151 * DCT coefficients |
|
1152 * - encoding: unused |
|
1153 * - decoding: Set by libavcodec. |
|
1154 */ |
|
1155 short *dct_coeff; |
|
1156 |
|
1157 /** |
|
1158 * motion reference frame index |
|
1159 * the order in which these are stored can depend on the codec. |
|
1160 * - encoding: Set by user. |
|
1161 * - decoding: Set by libavcodec. |
|
1162 */ |
|
1163 int8_t *ref_index[2]; |
|
1164 |
|
1165 /** |
|
1166 * for some private data of the user |
|
1167 * - encoding: unused |
|
1168 * - decoding: Set by user. |
|
1169 */ |
|
1170 void *opaque; |
|
1171 |
|
1172 /** |
|
1173 * error |
|
1174 * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR. |
|
1175 * - decoding: unused |
|
1176 */ |
|
1177 uint64_t error[AV_NUM_DATA_POINTERS]; |
|
1178 |
|
1179 /** |
|
1180 * type of the buffer (to keep track of who has to deallocate data[*]) |
|
1181 * - encoding: Set by the one who allocates it. |
|
1182 * - decoding: Set by the one who allocates it. |
|
1183 * Note: User allocated (direct rendering) & internal buffers cannot coexist currently. |
|
1184 */ |
|
1185 int type; |
|
1186 |
|
1187 /** |
|
1188 * When decoding, this signals how much the picture must be delayed. |
|
1189 * extra_delay = repeat_pict / (2*fps) |
|
1190 * - encoding: unused |
|
1191 * - decoding: Set by libavcodec. |
|
1192 */ |
|
1193 int repeat_pict; |
|
1194 |
|
1195 /** |
|
1196 * The content of the picture is interlaced. |
|
1197 * - encoding: Set by user. |
|
1198 * - decoding: Set by libavcodec. (default 0) |
|
1199 */ |
|
1200 int interlaced_frame; |
|
1201 |
|
1202 /** |
|
1203 * If the content is interlaced, is top field displayed first. |
|
1204 * - encoding: Set by user. |
|
1205 * - decoding: Set by libavcodec. |
|
1206 */ |
|
1207 int top_field_first; |
|
1208 |
|
1209 /** |
|
1210 * Tell user application that palette has changed from previous frame. |
|
1211 * - encoding: ??? (no palette-enabled encoder yet) |
|
1212 * - decoding: Set by libavcodec. (default 0). |
|
1213 */ |
|
1214 int palette_has_changed; |
|
1215 |
|
1216 /** |
|
1217 * codec suggestion on buffer type if != 0 |
|
1218 * - encoding: unused |
|
1219 * - decoding: Set by libavcodec. (before get_buffer() call)). |
|
1220 */ |
|
1221 int buffer_hints; |
|
1222 |
|
1223 /** |
|
1224 * Pan scan. |
|
1225 * - encoding: Set by user. |
|
1226 * - decoding: Set by libavcodec. |
|
1227 */ |
|
1228 AVPanScan *pan_scan; |
|
1229 |
|
1230 /** |
|
1231 * reordered opaque 64bit (generally an integer or a double precision float |
|
1232 * PTS but can be anything). |
|
1233 * The user sets AVCodecContext.reordered_opaque to represent the input at |
|
1234 * that time, |
|
1235 * the decoder reorders values as needed and sets AVFrame.reordered_opaque |
|
1236 * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque |
|
1237 * @deprecated in favor of pkt_pts |
|
1238 * - encoding: unused |
|
1239 * - decoding: Read by user. |
|
1240 */ |
|
1241 int64_t reordered_opaque; |
|
1242 |
|
1243 /** |
|
1244 * hardware accelerator private data (Libav-allocated) |
|
1245 * - encoding: unused |
|
1246 * - decoding: Set by libavcodec |
|
1247 */ |
|
1248 void *hwaccel_picture_private; |
|
1249 |
|
1250 /** |
|
1251 * the AVCodecContext which ff_thread_get_buffer() was last called on |
|
1252 * - encoding: Set by libavcodec. |
|
1253 * - decoding: Set by libavcodec. |
|
1254 */ |
|
1255 struct AVCodecContext *owner; |
|
1256 |
|
1257 /** |
|
1258 * used by multithreading to store frame-specific info |
|
1259 * - encoding: Set by libavcodec. |
|
1260 * - decoding: Set by libavcodec. |
|
1261 */ |
|
1262 void *thread_opaque; |
|
1263 |
|
1264 /** |
|
1265 * log2 of the size of the block which a single vector in motion_val represents: |
|
1266 * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) |
|
1267 * - encoding: unused |
|
1268 * - decoding: Set by libavcodec. |
|
1269 */ |
|
1270 uint8_t motion_subsample_log2; |
|
1271 |
|
1272 /** |
|
1273 * Sample rate of the audio data. |
|
1274 * |
|
1275 * - encoding: unused |
|
1276 * - decoding: set by get_buffer() |
|
1277 */ |
|
1278 int sample_rate; |
|
1279 |
|
1280 /** |
|
1281 * Channel layout of the audio data. |
|
1282 * |
|
1283 * - encoding: unused |
|
1284 * - decoding: set by get_buffer() |
|
1285 */ |
|
1286 uint64_t channel_layout; |
|
1287 } AVFrame; |
|
1288 |
|
1289 struct AVCodecInternal; |
|
1290 |
|
1291 enum AVFieldOrder { |
|
1292 AV_FIELD_UNKNOWN, |
|
1293 AV_FIELD_PROGRESSIVE, |
|
1294 AV_FIELD_TT, //< Top coded_first, top displayed first |
|
1295 AV_FIELD_BB, //< Bottom coded first, bottom displayed first |
|
1296 AV_FIELD_TB, //< Top coded first, bottom displayed first |
|
1297 AV_FIELD_BT, //< Bottom coded first, top displayed first |
|
1298 }; |
|
1299 |
|
1300 /** |
|
1301 * main external API structure. |
|
1302 * New fields can be added to the end with minor version bumps. |
|
1303 * Removal, reordering and changes to existing fields require a major |
|
1304 * version bump. |
|
1305 * sizeof(AVCodecContext) must not be used outside libav*. |
|
1306 */ |
|
1307 typedef struct AVCodecContext { |
|
1308 /** |
|
1309 * information on struct for av_log |
|
1310 * - set by avcodec_alloc_context3 |
|
1311 */ |
|
1312 const AVClass *av_class; |
|
1313 int log_level_offset; |
|
1314 |
|
1315 enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ |
|
1316 const struct AVCodec *codec; |
|
1317 char codec_name[32]; |
|
1318 enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ |
|
1319 |
|
1320 /** |
|
1321 * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). |
|
1322 * This is used to work around some encoder bugs. |
|
1323 * A demuxer should set this to what is stored in the field used to identify the codec. |
|
1324 * If there are multiple such fields in a container then the demuxer should choose the one |
|
1325 * which maximizes the information about the used codec. |
|
1326 * If the codec tag field in a container is larger than 32 bits then the demuxer should |
|
1327 * remap the longer ID to 32 bits with a table or other structure. Alternatively a new |
|
1328 * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated |
|
1329 * first. |
|
1330 * - encoding: Set by user, if not then the default based on codec_id will be used. |
|
1331 * - decoding: Set by user, will be converted to uppercase by libavcodec during init. |
|
1332 */ |
|
1333 unsigned int codec_tag; |
|
1334 |
|
1335 /** |
|
1336 * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). |
|
1337 * This is used to work around some encoder bugs. |
|
1338 * - encoding: unused |
|
1339 * - decoding: Set by user, will be converted to uppercase by libavcodec during init. |
|
1340 */ |
|
1341 unsigned int stream_codec_tag; |
|
1342 |
|
1343 #if FF_API_SUB_ID |
|
1344 /** |
|
1345 * @deprecated this field is unused |
|
1346 */ |
|
1347 attribute_deprecated int sub_id; |
|
1348 #endif |
|
1349 |
|
1350 void *priv_data; |
|
1351 |
|
1352 /** |
|
1353 * Private context used for internal data. |
|
1354 * |
|
1355 * Unlike priv_data, this is not codec-specific. It is used in general |
|
1356 * libavcodec functions. |
|
1357 */ |
|
1358 struct AVCodecInternal *internal; |
|
1359 |
|
1360 /** |
|
1361 * Private data of the user, can be used to carry app specific stuff. |
|
1362 * - encoding: Set by user. |
|
1363 * - decoding: Set by user. |
|
1364 */ |
|
1365 void *opaque; |
|
1366 |
|
1367 /** |
|
1368 * the average bitrate |
|
1369 * - encoding: Set by user; unused for constant quantizer encoding. |
|
1370 * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. |
|
1371 */ |
|
1372 int bit_rate; |
|
1373 |
|
1374 /** |
|
1375 * number of bits the bitstream is allowed to diverge from the reference. |
|
1376 * the reference can be CBR (for CBR pass1) or VBR (for pass2) |
|
1377 * - encoding: Set by user; unused for constant quantizer encoding. |
|
1378 * - decoding: unused |
|
1379 */ |
|
1380 int bit_rate_tolerance; |
|
1381 |
|
1382 /** |
|
1383 * Global quality for codecs which cannot change it per frame. |
|
1384 * This should be proportional to MPEG-1/2/4 qscale. |
|
1385 * - encoding: Set by user. |
|
1386 * - decoding: unused |
|
1387 */ |
|
1388 int global_quality; |
|
1389 |
|
1390 /** |
|
1391 * - encoding: Set by user. |
|
1392 * - decoding: unused |
|
1393 */ |
|
1394 int compression_level; |
|
1395 #define FF_COMPRESSION_DEFAULT -1 |
|
1396 |
|
1397 /** |
|
1398 * CODEC_FLAG_*. |
|
1399 * - encoding: Set by user. |
|
1400 * - decoding: Set by user. |
|
1401 */ |
|
1402 int flags; |
|
1403 |
|
1404 /** |
|
1405 * CODEC_FLAG2_* |
|
1406 * - encoding: Set by user. |
|
1407 * - decoding: Set by user. |
|
1408 */ |
|
1409 int flags2; |
|
1410 |
|
1411 /** |
|
1412 * some codecs need / can use extradata like Huffman tables. |
|
1413 * mjpeg: Huffman tables |
|
1414 * rv10: additional flags |
|
1415 * mpeg4: global headers (they can be in the bitstream or here) |
|
1416 * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger |
|
1417 * than extradata_size to avoid prolems if it is read with the bitstream reader. |
|
1418 * The bytewise contents of extradata must not depend on the architecture or CPU endianness. |
|
1419 * - encoding: Set/allocated/freed by libavcodec. |
|
1420 * - decoding: Set/allocated/freed by user. |
|
1421 */ |
|
1422 uint8_t *extradata; |
|
1423 int extradata_size; |
|
1424 |
|
1425 /** |
|
1426 * This is the fundamental unit of time (in seconds) in terms |
|
1427 * of which frame timestamps are represented. For fixed-fps content, |
|
1428 * timebase should be 1/framerate and timestamp increments should be |
|
1429 * identically 1. |
|
1430 * - encoding: MUST be set by user. |
|
1431 * - decoding: Set by libavcodec. |
|
1432 */ |
|
1433 AVRational time_base; |
|
1434 |
|
1435 /** |
|
1436 * For some codecs, the time base is closer to the field rate than the frame rate. |
|
1437 * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration |
|
1438 * if no telecine is used ... |
|
1439 * |
|
1440 * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. |
|
1441 */ |
|
1442 int ticks_per_frame; |
|
1443 |
|
1444 /** |
|
1445 * Encoder delay. |
|
1446 * |
|
1447 * Video: |
|
1448 * Number of frames the decoded output will be delayed relative to the |
|
1449 * encoded input. |
|
1450 * |
|
1451 * Audio: |
|
1452 * For encoding, this is the number of "priming" samples added to the |
|
1453 * beginning of the stream. The decoded output will be delayed by this |
|
1454 * many samples relative to the input to the encoder. Note that this |
|
1455 * field is purely informational and does not directly affect the pts |
|
1456 * output by the encoder, which should always be based on the actual |
|
1457 * presentation time, including any delay. |
|
1458 * For decoding, this is the number of samples the decoder needs to |
|
1459 * output before the decoder's output is valid. When seeking, you should |
|
1460 * start decoding this many samples prior to your desired seek point. |
|
1461 * |
|
1462 * - encoding: Set by libavcodec. |
|
1463 * - decoding: Set by libavcodec. |
|
1464 */ |
|
1465 int delay; |
|
1466 |
|
1467 |
|
1468 /* video only */ |
|
1469 /** |
|
1470 * picture width / height. |
|
1471 * - encoding: MUST be set by user. |
|
1472 * - decoding: Set by libavcodec. |
|
1473 * Note: For compatibility it is possible to set this instead of |
|
1474 * coded_width/height before decoding. |
|
1475 */ |
|
1476 int width, height; |
|
1477 |
|
1478 /** |
|
1479 * Bitstream width / height, may be different from width/height. |
|
1480 * - encoding: unused |
|
1481 * - decoding: Set by user before init if known. Codec should override / dynamically change if needed. |
|
1482 */ |
|
1483 int coded_width, coded_height; |
|
1484 |
|
1485 #define FF_ASPECT_EXTENDED 15 |
|
1486 |
|
1487 /** |
|
1488 * the number of pictures in a group of pictures, or 0 for intra_only |
|
1489 * - encoding: Set by user. |
|
1490 * - decoding: unused |
|
1491 */ |
|
1492 int gop_size; |
|
1493 |
|
1494 /** |
|
1495 * Pixel format, see AV_PIX_FMT_xxx. |
|
1496 * May be set by the demuxer if known from headers. |
|
1497 * May be overriden by the decoder if it knows better. |
|
1498 * - encoding: Set by user. |
|
1499 * - decoding: Set by user if known, overridden by libavcodec if known |
|
1500 */ |
|
1501 enum AVPixelFormat pix_fmt; |
|
1502 |
|
1503 /** |
|
1504 * Motion estimation algorithm used for video coding. |
|
1505 * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), |
|
1506 * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] |
|
1507 * - encoding: MUST be set by user. |
|
1508 * - decoding: unused |
|
1509 */ |
|
1510 int me_method; |
|
1511 |
|
1512 /** |
|
1513 * If non NULL, 'draw_horiz_band' is called by the libavcodec |
|
1514 * decoder to draw a horizontal band. It improves cache usage. Not |
|
1515 * all codecs can do that. You must check the codec capabilities |
|
1516 * beforehand. |
|
1517 * When multithreading is used, it may be called from multiple threads |
|
1518 * at the same time; threads might draw different parts of the same AVFrame, |
|
1519 * or multiple AVFrames, and there is no guarantee that slices will be drawn |
|
1520 * in order. |
|
1521 * The function is also used by hardware acceleration APIs. |
|
1522 * It is called at least once during frame decoding to pass |
|
1523 * the data needed for hardware render. |
|
1524 * In that mode instead of pixel data, AVFrame points to |
|
1525 * a structure specific to the acceleration API. The application |
|
1526 * reads the structure and can change some fields to indicate progress |
|
1527 * or mark state. |
|
1528 * - encoding: unused |
|
1529 * - decoding: Set by user. |
|
1530 * @param height the height of the slice |
|
1531 * @param y the y position of the slice |
|
1532 * @param type 1->top field, 2->bottom field, 3->frame |
|
1533 * @param offset offset into the AVFrame.data from which the slice should be read |
|
1534 */ |
|
1535 void (*draw_horiz_band)(struct AVCodecContext *s, |
|
1536 const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], |
|
1537 int y, int type, int height); |
|
1538 |
|
1539 /** |
|
1540 * callback to negotiate the pixelFormat |
|
1541 * @param fmt is the list of formats which are supported by the codec, |
|
1542 * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. |
|
1543 * The first is always the native one. |
|
1544 * @return the chosen format |
|
1545 * - encoding: unused |
|
1546 * - decoding: Set by user, if not set the native format will be chosen. |
|
1547 */ |
|
1548 enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); |
|
1549 |
|
1550 /** |
|
1551 * maximum number of B-frames between non-B-frames |
|
1552 * Note: The output will be delayed by max_b_frames+1 relative to the input. |
|
1553 * - encoding: Set by user. |
|
1554 * - decoding: unused |
|
1555 */ |
|
1556 int max_b_frames; |
|
1557 |
|
1558 /** |
|
1559 * qscale factor between IP and B-frames |
|
1560 * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). |
|
1561 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). |
|
1562 * - encoding: Set by user. |
|
1563 * - decoding: unused |
|
1564 */ |
|
1565 float b_quant_factor; |
|
1566 |
|
1567 /** obsolete FIXME remove */ |
|
1568 int rc_strategy; |
|
1569 #define FF_RC_STRATEGY_XVID 1 |
|
1570 |
|
1571 int b_frame_strategy; |
|
1572 |
|
1573 #if FF_API_MPV_GLOBAL_OPTS |
|
1574 /** |
|
1575 * luma single coefficient elimination threshold |
|
1576 * - encoding: Set by user. |
|
1577 * - decoding: unused |
|
1578 */ |
|
1579 attribute_deprecated int luma_elim_threshold; |
|
1580 |
|
1581 /** |
|
1582 * chroma single coeff elimination threshold |
|
1583 * - encoding: Set by user. |
|
1584 * - decoding: unused |
|
1585 */ |
|
1586 attribute_deprecated int chroma_elim_threshold; |
|
1587 #endif |
|
1588 |
|
1589 /** |
|
1590 * qscale offset between IP and B-frames |
|
1591 * - encoding: Set by user. |
|
1592 * - decoding: unused |
|
1593 */ |
|
1594 float b_quant_offset; |
|
1595 |
|
1596 /** |
|
1597 * Size of the frame reordering buffer in the decoder. |
|
1598 * For MPEG-2 it is 1 IPB or 0 low delay IP. |
|
1599 * - encoding: Set by libavcodec. |
|
1600 * - decoding: Set by libavcodec. |
|
1601 */ |
|
1602 int has_b_frames; |
|
1603 |
|
1604 /** |
|
1605 * 0-> h263 quant 1-> mpeg quant |
|
1606 * - encoding: Set by user. |
|
1607 * - decoding: unused |
|
1608 */ |
|
1609 int mpeg_quant; |
|
1610 |
|
1611 /** |
|
1612 * qscale factor between P and I-frames |
|
1613 * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). |
|
1614 * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). |
|
1615 * - encoding: Set by user. |
|
1616 * - decoding: unused |
|
1617 */ |
|
1618 float i_quant_factor; |
|
1619 |
|
1620 /** |
|
1621 * qscale offset between P and I-frames |
|
1622 * - encoding: Set by user. |
|
1623 * - decoding: unused |
|
1624 */ |
|
1625 float i_quant_offset; |
|
1626 |
|
1627 /** |
|
1628 * luminance masking (0-> disabled) |
|
1629 * - encoding: Set by user. |
|
1630 * - decoding: unused |
|
1631 */ |
|
1632 float lumi_masking; |
|
1633 |
|
1634 /** |
|
1635 * temporary complexity masking (0-> disabled) |
|
1636 * - encoding: Set by user. |
|
1637 * - decoding: unused |
|
1638 */ |
|
1639 float temporal_cplx_masking; |
|
1640 |
|
1641 /** |
|
1642 * spatial complexity masking (0-> disabled) |
|
1643 * - encoding: Set by user. |
|
1644 * - decoding: unused |
|
1645 */ |
|
1646 float spatial_cplx_masking; |
|
1647 |
|
1648 /** |
|
1649 * p block masking (0-> disabled) |
|
1650 * - encoding: Set by user. |
|
1651 * - decoding: unused |
|
1652 */ |
|
1653 float p_masking; |
|
1654 |
|
1655 /** |
|
1656 * darkness masking (0-> disabled) |
|
1657 * - encoding: Set by user. |
|
1658 * - decoding: unused |
|
1659 */ |
|
1660 float dark_masking; |
|
1661 |
|
1662 /** |
|
1663 * slice count |
|
1664 * - encoding: Set by libavcodec. |
|
1665 * - decoding: Set by user (or 0). |
|
1666 */ |
|
1667 int slice_count; |
|
1668 /** |
|
1669 * prediction method (needed for huffyuv) |
|
1670 * - encoding: Set by user. |
|
1671 * - decoding: unused |
|
1672 */ |
|
1673 int prediction_method; |
|
1674 #define FF_PRED_LEFT 0 |
|
1675 #define FF_PRED_PLANE 1 |
|
1676 #define FF_PRED_MEDIAN 2 |
|
1677 |
|
1678 /** |
|
1679 * slice offsets in the frame in bytes |
|
1680 * - encoding: Set/allocated by libavcodec. |
|
1681 * - decoding: Set/allocated by user (or NULL). |
|
1682 */ |
|
1683 int *slice_offset; |
|
1684 |
|
1685 /** |
|
1686 * sample aspect ratio (0 if unknown) |
|
1687 * That is the width of a pixel divided by the height of the pixel. |
|
1688 * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. |
|
1689 * - encoding: Set by user. |
|
1690 * - decoding: Set by libavcodec. |
|
1691 */ |
|
1692 AVRational sample_aspect_ratio; |
|
1693 |
|
1694 /** |
|
1695 * motion estimation comparison function |
|
1696 * - encoding: Set by user. |
|
1697 * - decoding: unused |
|
1698 */ |
|
1699 int me_cmp; |
|
1700 /** |
|
1701 * subpixel motion estimation comparison function |
|
1702 * - encoding: Set by user. |
|
1703 * - decoding: unused |
|
1704 */ |
|
1705 int me_sub_cmp; |
|
1706 /** |
|
1707 * macroblock comparison function (not supported yet) |
|
1708 * - encoding: Set by user. |
|
1709 * - decoding: unused |
|
1710 */ |
|
1711 int mb_cmp; |
|
1712 /** |
|
1713 * interlaced DCT comparison function |
|
1714 * - encoding: Set by user. |
|
1715 * - decoding: unused |
|
1716 */ |
|
1717 int ildct_cmp; |
|
1718 #define FF_CMP_SAD 0 |
|
1719 #define FF_CMP_SSE 1 |
|
1720 #define FF_CMP_SATD 2 |
|
1721 #define FF_CMP_DCT 3 |
|
1722 #define FF_CMP_PSNR 4 |
|
1723 #define FF_CMP_BIT 5 |
|
1724 #define FF_CMP_RD 6 |
|
1725 #define FF_CMP_ZERO 7 |
|
1726 #define FF_CMP_VSAD 8 |
|
1727 #define FF_CMP_VSSE 9 |
|
1728 #define FF_CMP_NSSE 10 |
|
1729 #define FF_CMP_W53 11 |
|
1730 #define FF_CMP_W97 12 |
|
1731 #define FF_CMP_DCTMAX 13 |
|
1732 #define FF_CMP_DCT264 14 |
|
1733 #define FF_CMP_CHROMA 256 |
|
1734 |
|
1735 /** |
|
1736 * ME diamond size & shape |
|
1737 * - encoding: Set by user. |
|
1738 * - decoding: unused |
|
1739 */ |
|
1740 int dia_size; |
|
1741 |
|
1742 /** |
|
1743 * amount of previous MV predictors (2a+1 x 2a+1 square) |
|
1744 * - encoding: Set by user. |
|
1745 * - decoding: unused |
|
1746 */ |
|
1747 int last_predictor_count; |
|
1748 |
|
1749 /** |
|
1750 * prepass for motion estimation |
|
1751 * - encoding: Set by user. |
|
1752 * - decoding: unused |
|
1753 */ |
|
1754 int pre_me; |
|
1755 |
|
1756 /** |
|
1757 * motion estimation prepass comparison function |
|
1758 * - encoding: Set by user. |
|
1759 * - decoding: unused |
|
1760 */ |
|
1761 int me_pre_cmp; |
|
1762 |
|
1763 /** |
|
1764 * ME prepass diamond size & shape |
|
1765 * - encoding: Set by user. |
|
1766 * - decoding: unused |
|
1767 */ |
|
1768 int pre_dia_size; |
|
1769 |
|
1770 /** |
|
1771 * subpel ME quality |
|
1772 * - encoding: Set by user. |
|
1773 * - decoding: unused |
|
1774 */ |
|
1775 int me_subpel_quality; |
|
1776 |
|
1777 /** |
|
1778 * DTG active format information (additional aspect ratio |
|
1779 * information only used in DVB MPEG-2 transport streams) |
|
1780 * 0 if not set. |
|
1781 * |
|
1782 * - encoding: unused |
|
1783 * - decoding: Set by decoder. |
|
1784 */ |
|
1785 int dtg_active_format; |
|
1786 #define FF_DTG_AFD_SAME 8 |
|
1787 #define FF_DTG_AFD_4_3 9 |
|
1788 #define FF_DTG_AFD_16_9 10 |
|
1789 #define FF_DTG_AFD_14_9 11 |
|
1790 #define FF_DTG_AFD_4_3_SP_14_9 13 |
|
1791 #define FF_DTG_AFD_16_9_SP_14_9 14 |
|
1792 #define FF_DTG_AFD_SP_4_3 15 |
|
1793 |
|
1794 /** |
|
1795 * maximum motion estimation search range in subpel units |
|
1796 * If 0 then no limit. |
|
1797 * |
|
1798 * - encoding: Set by user. |
|
1799 * - decoding: unused |
|
1800 */ |
|
1801 int me_range; |
|
1802 |
|
1803 /** |
|
1804 * intra quantizer bias |
|
1805 * - encoding: Set by user. |
|
1806 * - decoding: unused |
|
1807 */ |
|
1808 int intra_quant_bias; |
|
1809 #define FF_DEFAULT_QUANT_BIAS 999999 |
|
1810 |
|
1811 /** |
|
1812 * inter quantizer bias |
|
1813 * - encoding: Set by user. |
|
1814 * - decoding: unused |
|
1815 */ |
|
1816 int inter_quant_bias; |
|
1817 |
|
1818 #if FF_API_COLOR_TABLE_ID |
|
1819 /** |
|
1820 * color table ID |
|
1821 * - encoding: unused |
|
1822 * - decoding: Which clrtable should be used for 8bit RGB images. |
|
1823 * Tables have to be stored somewhere. FIXME |
|
1824 */ |
|
1825 attribute_deprecated int color_table_id; |
|
1826 #endif |
|
1827 |
|
1828 /** |
|
1829 * slice flags |
|
1830 * - encoding: unused |
|
1831 * - decoding: Set by user. |
|
1832 */ |
|
1833 int slice_flags; |
|
1834 #define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display |
|
1835 #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) |
|
1836 #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) |
|
1837 |
|
1838 /** |
|
1839 * XVideo Motion Acceleration |
|
1840 * - encoding: forbidden |
|
1841 * - decoding: set by decoder |
|
1842 */ |
|
1843 int xvmc_acceleration; |
|
1844 |
|
1845 /** |
|
1846 * macroblock decision mode |
|
1847 * - encoding: Set by user. |
|
1848 * - decoding: unused |
|
1849 */ |
|
1850 int mb_decision; |
|
1851 #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp |
|
1852 #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits |
|
1853 #define FF_MB_DECISION_RD 2 ///< rate distortion |
|
1854 |
|
1855 /** |
|
1856 * custom intra quantization matrix |
|
1857 * - encoding: Set by user, can be NULL. |
|
1858 * - decoding: Set by libavcodec. |
|
1859 */ |
|
1860 uint16_t *intra_matrix; |
|
1861 |
|
1862 /** |
|
1863 * custom inter quantization matrix |
|
1864 * - encoding: Set by user, can be NULL. |
|
1865 * - decoding: Set by libavcodec. |
|
1866 */ |
|
1867 uint16_t *inter_matrix; |
|
1868 |
|
1869 /** |
|
1870 * scene change detection threshold |
|
1871 * 0 is default, larger means fewer detected scene changes. |
|
1872 * - encoding: Set by user. |
|
1873 * - decoding: unused |
|
1874 */ |
|
1875 int scenechange_threshold; |
|
1876 |
|
1877 /** |
|
1878 * noise reduction strength |
|
1879 * - encoding: Set by user. |
|
1880 * - decoding: unused |
|
1881 */ |
|
1882 int noise_reduction; |
|
1883 |
|
1884 #if FF_API_INTER_THRESHOLD |
|
1885 /** |
|
1886 * @deprecated this field is unused |
|
1887 */ |
|
1888 attribute_deprecated int inter_threshold; |
|
1889 #endif |
|
1890 |
|
1891 #if FF_API_MPV_GLOBAL_OPTS |
|
1892 /** |
|
1893 * @deprecated use mpegvideo private options instead |
|
1894 */ |
|
1895 attribute_deprecated int quantizer_noise_shaping; |
|
1896 #endif |
|
1897 |
|
1898 /** |
|
1899 * Motion estimation threshold below which no motion estimation is |
|
1900 * performed, but instead the user specified motion vectors are used. |
|
1901 * |
|
1902 * - encoding: Set by user. |
|
1903 * - decoding: unused |
|
1904 */ |
|
1905 int me_threshold; |
|
1906 |
|
1907 /** |
|
1908 * Macroblock threshold below which the user specified macroblock types will be used. |
|
1909 * - encoding: Set by user. |
|
1910 * - decoding: unused |
|
1911 */ |
|
1912 int mb_threshold; |
|
1913 |
|
1914 /** |
|
1915 * precision of the intra DC coefficient - 8 |
|
1916 * - encoding: Set by user. |
|
1917 * - decoding: unused |
|
1918 */ |
|
1919 int intra_dc_precision; |
|
1920 |
|
1921 /** |
|
1922 * Number of macroblock rows at the top which are skipped. |
|
1923 * - encoding: unused |
|
1924 * - decoding: Set by user. |
|
1925 */ |
|
1926 int skip_top; |
|
1927 |
|
1928 /** |
|
1929 * Number of macroblock rows at the bottom which are skipped. |
|
1930 * - encoding: unused |
|
1931 * - decoding: Set by user. |
|
1932 */ |
|
1933 int skip_bottom; |
|
1934 |
|
1935 /** |
|
1936 * Border processing masking, raises the quantizer for mbs on the borders |
|
1937 * of the picture. |
|
1938 * - encoding: Set by user. |
|
1939 * - decoding: unused |
|
1940 */ |
|
1941 float border_masking; |
|
1942 |
|
1943 /** |
|
1944 * minimum MB lagrange multipler |
|
1945 * - encoding: Set by user. |
|
1946 * - decoding: unused |
|
1947 */ |
|
1948 int mb_lmin; |
|
1949 |
|
1950 /** |
|
1951 * maximum MB lagrange multipler |
|
1952 * - encoding: Set by user. |
|
1953 * - decoding: unused |
|
1954 */ |
|
1955 int mb_lmax; |
|
1956 |
|
1957 /** |
|
1958 * |
|
1959 * - encoding: Set by user. |
|
1960 * - decoding: unused |
|
1961 */ |
|
1962 int me_penalty_compensation; |
|
1963 |
|
1964 /** |
|
1965 * |
|
1966 * - encoding: Set by user. |
|
1967 * - decoding: unused |
|
1968 */ |
|
1969 int bidir_refine; |
|
1970 |
|
1971 /** |
|
1972 * |
|
1973 * - encoding: Set by user. |
|
1974 * - decoding: unused |
|
1975 */ |
|
1976 int brd_scale; |
|
1977 |
|
1978 /** |
|
1979 * minimum GOP size |
|
1980 * - encoding: Set by user. |
|
1981 * - decoding: unused |
|
1982 */ |
|
1983 int keyint_min; |
|
1984 |
|
1985 /** |
|
1986 * number of reference frames |
|
1987 * - encoding: Set by user. |
|
1988 * - decoding: Set by lavc. |
|
1989 */ |
|
1990 int refs; |
|
1991 |
|
1992 /** |
|
1993 * chroma qp offset from luma |
|
1994 * - encoding: Set by user. |
|
1995 * - decoding: unused |
|
1996 */ |
|
1997 int chromaoffset; |
|
1998 |
|
1999 /** |
|
2000 * Multiplied by qscale for each frame and added to scene_change_score. |
|
2001 * - encoding: Set by user. |
|
2002 * - decoding: unused |
|
2003 */ |
|
2004 int scenechange_factor; |
|
2005 |
|
2006 /** |
|
2007 * |
|
2008 * Note: Value depends upon the compare function used for fullpel ME. |
|
2009 * - encoding: Set by user. |
|
2010 * - decoding: unused |
|
2011 */ |
|
2012 int mv0_threshold; |
|
2013 |
|
2014 /** |
|
2015 * Adjust sensitivity of b_frame_strategy 1. |
|
2016 * - encoding: Set by user. |
|
2017 * - decoding: unused |
|
2018 */ |
|
2019 int b_sensitivity; |
|
2020 |
|
2021 /** |
|
2022 * Chromaticity coordinates of the source primaries. |
|
2023 * - encoding: Set by user |
|
2024 * - decoding: Set by libavcodec |
|
2025 */ |
|
2026 enum AVColorPrimaries color_primaries; |
|
2027 |
|
2028 /** |
|
2029 * Color Transfer Characteristic. |
|
2030 * - encoding: Set by user |
|
2031 * - decoding: Set by libavcodec |
|
2032 */ |
|
2033 enum AVColorTransferCharacteristic color_trc; |
|
2034 |
|
2035 /** |
|
2036 * YUV colorspace type. |
|
2037 * - encoding: Set by user |
|
2038 * - decoding: Set by libavcodec |
|
2039 */ |
|
2040 enum AVColorSpace colorspace; |
|
2041 |
|
2042 /** |
|
2043 * MPEG vs JPEG YUV range. |
|
2044 * - encoding: Set by user |
|
2045 * - decoding: Set by libavcodec |
|
2046 */ |
|
2047 enum AVColorRange color_range; |
|
2048 |
|
2049 /** |
|
2050 * This defines the location of chroma samples. |
|
2051 * - encoding: Set by user |
|
2052 * - decoding: Set by libavcodec |
|
2053 */ |
|
2054 enum AVChromaLocation chroma_sample_location; |
|
2055 |
|
2056 /** |
|
2057 * Number of slices. |
|
2058 * Indicates number of picture subdivisions. Used for parallelized |
|
2059 * decoding. |
|
2060 * - encoding: Set by user |
|
2061 * - decoding: unused |
|
2062 */ |
|
2063 int slices; |
|
2064 |
|
2065 /** Field order |
|
2066 * - encoding: set by libavcodec |
|
2067 * - decoding: Set by libavcodec |
|
2068 */ |
|
2069 enum AVFieldOrder field_order; |
|
2070 |
|
2071 /* audio only */ |
|
2072 int sample_rate; ///< samples per second |
|
2073 int channels; ///< number of audio channels |
|
2074 |
|
2075 /** |
|
2076 * audio sample format |
|
2077 * - encoding: Set by user. |
|
2078 * - decoding: Set by libavcodec. |
|
2079 */ |
|
2080 enum AVSampleFormat sample_fmt; ///< sample format |
|
2081 |
|
2082 /* The following data should not be initialized. */ |
|
2083 /** |
|
2084 * Samples per packet, initialized when calling 'init'. |
|
2085 */ |
|
2086 int frame_size; |
|
2087 |
|
2088 /** |
|
2089 * Frame counter, set by libavcodec. |
|
2090 * |
|
2091 * - decoding: total number of frames returned from the decoder so far. |
|
2092 * - encoding: total number of frames passed to the encoder so far. |
|
2093 * |
|
2094 * @note the counter is not incremented if encoding/decoding resulted in |
|
2095 * an error. |
|
2096 */ |
|
2097 int frame_number; |
|
2098 |
|
2099 /** |
|
2100 * number of bytes per packet if constant and known or 0 |
|
2101 * Used by some WAV based audio codecs. |
|
2102 */ |
|
2103 int block_align; |
|
2104 |
|
2105 /** |
|
2106 * Audio cutoff bandwidth (0 means "automatic") |
|
2107 * - encoding: Set by user. |
|
2108 * - decoding: unused |
|
2109 */ |
|
2110 int cutoff; |
|
2111 |
|
2112 #if FF_API_REQUEST_CHANNELS |
|
2113 /** |
|
2114 * Decoder should decode to this many channels if it can (0 for default) |
|
2115 * - encoding: unused |
|
2116 * - decoding: Set by user. |
|
2117 * @deprecated Deprecated in favor of request_channel_layout. |
|
2118 */ |
|
2119 int request_channels; |
|
2120 #endif |
|
2121 |
|
2122 /** |
|
2123 * Audio channel layout. |
|
2124 * - encoding: set by user. |
|
2125 * - decoding: set by libavcodec. |
|
2126 */ |
|
2127 uint64_t channel_layout; |
|
2128 |
|
2129 /** |
|
2130 * Request decoder to use this channel layout if it can (0 for default) |
|
2131 * - encoding: unused |
|
2132 * - decoding: Set by user. |
|
2133 */ |
|
2134 uint64_t request_channel_layout; |
|
2135 |
|
2136 /** |
|
2137 * Type of service that the audio stream conveys. |
|
2138 * - encoding: Set by user. |
|
2139 * - decoding: Set by libavcodec. |
|
2140 */ |
|
2141 enum AVAudioServiceType audio_service_type; |
|
2142 |
|
2143 /** |
|
2144 * Used to request a sample format from the decoder. |
|
2145 * - encoding: unused. |
|
2146 * - decoding: Set by user. |
|
2147 */ |
|
2148 enum AVSampleFormat request_sample_fmt; |
|
2149 |
|
2150 /** |
|
2151 * Called at the beginning of each frame to get a buffer for it. |
|
2152 * |
|
2153 * The function will set AVFrame.data[], AVFrame.linesize[]. |
|
2154 * AVFrame.extended_data[] must also be set, but it should be the same as |
|
2155 * AVFrame.data[] except for planar audio with more channels than can fit |
|
2156 * in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as |
|
2157 * many data pointers as it can hold. |
|
2158 * |
|
2159 * if CODEC_CAP_DR1 is not set then get_buffer() must call |
|
2160 * avcodec_default_get_buffer() instead of providing buffers allocated by |
|
2161 * some other means. |
|
2162 * |
|
2163 * AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't |
|
2164 * need it. avcodec_default_get_buffer() aligns the output buffer properly, |
|
2165 * but if get_buffer() is overridden then alignment considerations should |
|
2166 * be taken into account. |
|
2167 * |
|
2168 * @see avcodec_default_get_buffer() |
|
2169 * |
|
2170 * Video: |
|
2171 * |
|
2172 * If pic.reference is set then the frame will be read later by libavcodec. |
|
2173 * avcodec_align_dimensions2() should be used to find the required width and |
|
2174 * height, as they normally need to be rounded up to the next multiple of 16. |
|
2175 * |
|
2176 * If frame multithreading is used and thread_safe_callbacks is set, |
|
2177 * it may be called from a different thread, but not from more than one at |
|
2178 * once. Does not need to be reentrant. |
|
2179 * |
|
2180 * @see release_buffer(), reget_buffer() |
|
2181 * @see avcodec_align_dimensions2() |
|
2182 * |
|
2183 * Audio: |
|
2184 * |
|
2185 * Decoders request a buffer of a particular size by setting |
|
2186 * AVFrame.nb_samples prior to calling get_buffer(). The decoder may, |
|
2187 * however, utilize only part of the buffer by setting AVFrame.nb_samples |
|
2188 * to a smaller value in the output frame. |
|
2189 * |
|
2190 * Decoders cannot use the buffer after returning from |
|
2191 * avcodec_decode_audio4(), so they will not call release_buffer(), as it |
|
2192 * is assumed to be released immediately upon return. |
|
2193 * |
|
2194 * As a convenience, av_samples_get_buffer_size() and |
|
2195 * av_samples_fill_arrays() in libavutil may be used by custom get_buffer() |
|
2196 * functions to find the required data size and to fill data pointers and |
|
2197 * linesize. In AVFrame.linesize, only linesize[0] may be set for audio |
|
2198 * since all planes must be the same size. |
|
2199 * |
|
2200 * @see av_samples_get_buffer_size(), av_samples_fill_arrays() |
|
2201 * |
|
2202 * - encoding: unused |
|
2203 * - decoding: Set by libavcodec, user can override. |
|
2204 */ |
|
2205 int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); |
|
2206 |
|
2207 /** |
|
2208 * Called to release buffers which were allocated with get_buffer. |
|
2209 * A released buffer can be reused in get_buffer(). |
|
2210 * pic.data[*] must be set to NULL. |
|
2211 * May be called from a different thread if frame multithreading is used, |
|
2212 * but not by more than one thread at once, so does not need to be reentrant. |
|
2213 * - encoding: unused |
|
2214 * - decoding: Set by libavcodec, user can override. |
|
2215 */ |
|
2216 void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); |
|
2217 |
|
2218 /** |
|
2219 * Called at the beginning of a frame to get cr buffer for it. |
|
2220 * Buffer type (size, hints) must be the same. libavcodec won't check it. |
|
2221 * libavcodec will pass previous buffer in pic, function should return |
|
2222 * same buffer or new buffer with old frame "painted" into it. |
|
2223 * If pic.data[0] == NULL must behave like get_buffer(). |
|
2224 * if CODEC_CAP_DR1 is not set then reget_buffer() must call |
|
2225 * avcodec_default_reget_buffer() instead of providing buffers allocated by |
|
2226 * some other means. |
|
2227 * - encoding: unused |
|
2228 * - decoding: Set by libavcodec, user can override. |
|
2229 */ |
|
2230 int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); |
|
2231 |
|
2232 |
|
2233 /* - encoding parameters */ |
|
2234 float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) |
|
2235 float qblur; ///< amount of qscale smoothing over time (0.0-1.0) |
|
2236 |
|
2237 /** |
|
2238 * minimum quantizer |
|
2239 * - encoding: Set by user. |
|
2240 * - decoding: unused |
|
2241 */ |
|
2242 int qmin; |
|
2243 |
|
2244 /** |
|
2245 * maximum quantizer |
|
2246 * - encoding: Set by user. |
|
2247 * - decoding: unused |
|
2248 */ |
|
2249 int qmax; |
|
2250 |
|
2251 /** |
|
2252 * maximum quantizer difference between frames |
|
2253 * - encoding: Set by user. |
|
2254 * - decoding: unused |
|
2255 */ |
|
2256 int max_qdiff; |
|
2257 |
|
2258 /** |
|
2259 * ratecontrol qmin qmax limiting method |
|
2260 * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. |
|
2261 * - encoding: Set by user. |
|
2262 * - decoding: unused |
|
2263 */ |
|
2264 float rc_qsquish; |
|
2265 |
|
2266 float rc_qmod_amp; |
|
2267 int rc_qmod_freq; |
|
2268 |
|
2269 /** |
|
2270 * decoder bitstream buffer size |
|
2271 * - encoding: Set by user. |
|
2272 * - decoding: unused |
|
2273 */ |
|
2274 int rc_buffer_size; |
|
2275 |
|
2276 /** |
|
2277 * ratecontrol override, see RcOverride |
|
2278 * - encoding: Allocated/set/freed by user. |
|
2279 * - decoding: unused |
|
2280 */ |
|
2281 int rc_override_count; |
|
2282 RcOverride *rc_override; |
|
2283 |
|
2284 /** |
|
2285 * rate control equation |
|
2286 * - encoding: Set by user |
|
2287 * - decoding: unused |
|
2288 */ |
|
2289 const char *rc_eq; |
|
2290 |
|
2291 /** |
|
2292 * maximum bitrate |
|
2293 * - encoding: Set by user. |
|
2294 * - decoding: unused |
|
2295 */ |
|
2296 int rc_max_rate; |
|
2297 |
|
2298 /** |
|
2299 * minimum bitrate |
|
2300 * - encoding: Set by user. |
|
2301 * - decoding: unused |
|
2302 */ |
|
2303 int rc_min_rate; |
|
2304 |
|
2305 float rc_buffer_aggressivity; |
|
2306 |
|
2307 /** |
|
2308 * initial complexity for pass1 ratecontrol |
|
2309 * - encoding: Set by user. |
|
2310 * - decoding: unused |
|
2311 */ |
|
2312 float rc_initial_cplx; |
|
2313 |
|
2314 /** |
|
2315 * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. |
|
2316 * - encoding: Set by user. |
|
2317 * - decoding: unused. |
|
2318 */ |
|
2319 float rc_max_available_vbv_use; |
|
2320 |
|
2321 /** |
|
2322 * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow. |
|
2323 * - encoding: Set by user. |
|
2324 * - decoding: unused. |
|
2325 */ |
|
2326 float rc_min_vbv_overflow_use; |
|
2327 |
|
2328 /** |
|
2329 * Number of bits which should be loaded into the rc buffer before decoding starts. |
|
2330 * - encoding: Set by user. |
|
2331 * - decoding: unused |
|
2332 */ |
|
2333 int rc_initial_buffer_occupancy; |
|
2334 |
|
2335 #define FF_CODER_TYPE_VLC 0 |
|
2336 #define FF_CODER_TYPE_AC 1 |
|
2337 #define FF_CODER_TYPE_RAW 2 |
|
2338 #define FF_CODER_TYPE_RLE 3 |
|
2339 #define FF_CODER_TYPE_DEFLATE 4 |
|
2340 /** |
|
2341 * coder type |
|
2342 * - encoding: Set by user. |
|
2343 * - decoding: unused |
|
2344 */ |
|
2345 int coder_type; |
|
2346 |
|
2347 /** |
|
2348 * context model |
|
2349 * - encoding: Set by user. |
|
2350 * - decoding: unused |
|
2351 */ |
|
2352 int context_model; |
|
2353 |
|
2354 /** |
|
2355 * minimum Lagrange multipler |
|
2356 * - encoding: Set by user. |
|
2357 * - decoding: unused |
|
2358 */ |
|
2359 int lmin; |
|
2360 |
|
2361 /** |
|
2362 * maximum Lagrange multipler |
|
2363 * - encoding: Set by user. |
|
2364 * - decoding: unused |
|
2365 */ |
|
2366 int lmax; |
|
2367 |
|
2368 /** |
|
2369 * frame skip threshold |
|
2370 * - encoding: Set by user. |
|
2371 * - decoding: unused |
|
2372 */ |
|
2373 int frame_skip_threshold; |
|
2374 |
|
2375 /** |
|
2376 * frame skip factor |
|
2377 * - encoding: Set by user. |
|
2378 * - decoding: unused |
|
2379 */ |
|
2380 int frame_skip_factor; |
|
2381 |
|
2382 /** |
|
2383 * frame skip exponent |
|
2384 * - encoding: Set by user. |
|
2385 * - decoding: unused |
|
2386 */ |
|
2387 int frame_skip_exp; |
|
2388 |
|
2389 /** |
|
2390 * frame skip comparison function |
|
2391 * - encoding: Set by user. |
|
2392 * - decoding: unused |
|
2393 */ |
|
2394 int frame_skip_cmp; |
|
2395 |
|
2396 /** |
|
2397 * trellis RD quantization |
|
2398 * - encoding: Set by user. |
|
2399 * - decoding: unused |
|
2400 */ |
|
2401 int trellis; |
|
2402 |
|
2403 /** |
|
2404 * - encoding: Set by user. |
|
2405 * - decoding: unused |
|
2406 */ |
|
2407 int min_prediction_order; |
|
2408 |
|
2409 /** |
|
2410 * - encoding: Set by user. |
|
2411 * - decoding: unused |
|
2412 */ |
|
2413 int max_prediction_order; |
|
2414 |
|
2415 /** |
|
2416 * GOP timecode frame start number, in non drop frame format |
|
2417 * - encoding: Set by user. |
|
2418 * - decoding: unused |
|
2419 */ |
|
2420 int64_t timecode_frame_start; |
|
2421 |
|
2422 /* The RTP callback: This function is called */ |
|
2423 /* every time the encoder has a packet to send. */ |
|
2424 /* It depends on the encoder if the data starts */ |
|
2425 /* with a Start Code (it should). H.263 does. */ |
|
2426 /* mb_nb contains the number of macroblocks */ |
|
2427 /* encoded in the RTP payload. */ |
|
2428 void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); |
|
2429 |
|
2430 int rtp_payload_size; /* The size of the RTP payload: the coder will */ |
|
2431 /* do its best to deliver a chunk with size */ |
|
2432 /* below rtp_payload_size, the chunk will start */ |
|
2433 /* with a start code on some codecs like H.263. */ |
|
2434 /* This doesn't take account of any particular */ |
|
2435 /* headers inside the transmitted RTP payload. */ |
|
2436 |
|
2437 /* statistics, used for 2-pass encoding */ |
|
2438 int mv_bits; |
|
2439 int header_bits; |
|
2440 int i_tex_bits; |
|
2441 int p_tex_bits; |
|
2442 int i_count; |
|
2443 int p_count; |
|
2444 int skip_count; |
|
2445 int misc_bits; |
|
2446 |
|
2447 /** |
|
2448 * number of bits used for the previously encoded frame |
|
2449 * - encoding: Set by libavcodec. |
|
2450 * - decoding: unused |
|
2451 */ |
|
2452 int frame_bits; |
|
2453 |
|
2454 /** |
|
2455 * pass1 encoding statistics output buffer |
|
2456 * - encoding: Set by libavcodec. |
|
2457 * - decoding: unused |
|
2458 */ |
|
2459 char *stats_out; |
|
2460 |
|
2461 /** |
|
2462 * pass2 encoding statistics input buffer |
|
2463 * Concatenated stuff from stats_out of pass1 should be placed here. |
|
2464 * - encoding: Allocated/set/freed by user. |
|
2465 * - decoding: unused |
|
2466 */ |
|
2467 char *stats_in; |
|
2468 |
|
2469 /** |
|
2470 * Work around bugs in encoders which sometimes cannot be detected automatically. |
|
2471 * - encoding: Set by user |
|
2472 * - decoding: Set by user |
|
2473 */ |
|
2474 int workaround_bugs; |
|
2475 #define FF_BUG_AUTODETECT 1 ///< autodetection |
|
2476 #define FF_BUG_OLD_MSMPEG4 2 |
|
2477 #define FF_BUG_XVID_ILACE 4 |
|
2478 #define FF_BUG_UMP4 8 |
|
2479 #define FF_BUG_NO_PADDING 16 |
|
2480 #define FF_BUG_AMV 32 |
|
2481 #define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. |
|
2482 #define FF_BUG_QPEL_CHROMA 64 |
|
2483 #define FF_BUG_STD_QPEL 128 |
|
2484 #define FF_BUG_QPEL_CHROMA2 256 |
|
2485 #define FF_BUG_DIRECT_BLOCKSIZE 512 |
|
2486 #define FF_BUG_EDGE 1024 |
|
2487 #define FF_BUG_HPEL_CHROMA 2048 |
|
2488 #define FF_BUG_DC_CLIP 4096 |
|
2489 #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. |
|
2490 #define FF_BUG_TRUNCATED 16384 |
|
2491 |
|
2492 /** |
|
2493 * strictly follow the standard (MPEG4, ...). |
|
2494 * - encoding: Set by user. |
|
2495 * - decoding: Set by user. |
|
2496 * Setting this to STRICT or higher means the encoder and decoder will |
|
2497 * generally do stupid things, whereas setting it to unofficial or lower |
|
2498 * will mean the encoder might produce output that is not supported by all |
|
2499 * spec-compliant decoders. Decoders don't differentiate between normal, |
|
2500 * unofficial and experimental (that is, they always try to decode things |
|
2501 * when they can) unless they are explicitly asked to behave stupidly |
|
2502 * (=strictly conform to the specs) |
|
2503 */ |
|
2504 int strict_std_compliance; |
|
2505 #define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. |
|
2506 #define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. |
|
2507 #define FF_COMPLIANCE_NORMAL 0 |
|
2508 #define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions |
|
2509 #define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. |
|
2510 |
|
2511 /** |
|
2512 * error concealment flags |
|
2513 * - encoding: unused |
|
2514 * - decoding: Set by user. |
|
2515 */ |
|
2516 int error_concealment; |
|
2517 #define FF_EC_GUESS_MVS 1 |
|
2518 #define FF_EC_DEBLOCK 2 |
|
2519 |
|
2520 /** |
|
2521 * debug |
|
2522 * - encoding: Set by user. |
|
2523 * - decoding: Set by user. |
|
2524 */ |
|
2525 int debug; |
|
2526 #define FF_DEBUG_PICT_INFO 1 |
|
2527 #define FF_DEBUG_RC 2 |
|
2528 #define FF_DEBUG_BITSTREAM 4 |
|
2529 #define FF_DEBUG_MB_TYPE 8 |
|
2530 #define FF_DEBUG_QP 16 |
|
2531 #define FF_DEBUG_MV 32 |
|
2532 #define FF_DEBUG_DCT_COEFF 0x00000040 |
|
2533 #define FF_DEBUG_SKIP 0x00000080 |
|
2534 #define FF_DEBUG_STARTCODE 0x00000100 |
|
2535 #define FF_DEBUG_PTS 0x00000200 |
|
2536 #define FF_DEBUG_ER 0x00000400 |
|
2537 #define FF_DEBUG_MMCO 0x00000800 |
|
2538 #define FF_DEBUG_BUGS 0x00001000 |
|
2539 #define FF_DEBUG_VIS_QP 0x00002000 |
|
2540 #define FF_DEBUG_VIS_MB_TYPE 0x00004000 |
|
2541 #define FF_DEBUG_BUFFERS 0x00008000 |
|
2542 #define FF_DEBUG_THREADS 0x00010000 |
|
2543 |
|
2544 /** |
|
2545 * debug |
|
2546 * - encoding: Set by user. |
|
2547 * - decoding: Set by user. |
|
2548 */ |
|
2549 int debug_mv; |
|
2550 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames |
|
2551 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames |
|
2552 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames |
|
2553 |
|
2554 /** |
|
2555 * Error recognition; may misdetect some more or less valid parts as errors. |
|
2556 * - encoding: unused |
|
2557 * - decoding: Set by user. |
|
2558 */ |
|
2559 int err_recognition; |
|
2560 #define AV_EF_CRCCHECK (1<<0) |
|
2561 #define AV_EF_BITSTREAM (1<<1) |
|
2562 #define AV_EF_BUFFER (1<<2) |
|
2563 #define AV_EF_EXPLODE (1<<3) |
|
2564 |
|
2565 /** |
|
2566 * opaque 64bit number (generally a PTS) that will be reordered and |
|
2567 * output in AVFrame.reordered_opaque |
|
2568 * @deprecated in favor of pkt_pts |
|
2569 * - encoding: unused |
|
2570 * - decoding: Set by user. |
|
2571 */ |
|
2572 int64_t reordered_opaque; |
|
2573 |
|
2574 /** |
|
2575 * Hardware accelerator in use |
|
2576 * - encoding: unused. |
|
2577 * - decoding: Set by libavcodec |
|
2578 */ |
|
2579 struct AVHWAccel *hwaccel; |
|
2580 |
|
2581 /** |
|
2582 * Hardware accelerator context. |
|
2583 * For some hardware accelerators, a global context needs to be |
|
2584 * provided by the user. In that case, this holds display-dependent |
|
2585 * data Libav cannot instantiate itself. Please refer to the |
|
2586 * Libav HW accelerator documentation to know how to fill this |
|
2587 * is. e.g. for VA API, this is a struct vaapi_context. |
|
2588 * - encoding: unused |
|
2589 * - decoding: Set by user |
|
2590 */ |
|
2591 void *hwaccel_context; |
|
2592 |
|
2593 /** |
|
2594 * error |
|
2595 * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR. |
|
2596 * - decoding: unused |
|
2597 */ |
|
2598 uint64_t error[AV_NUM_DATA_POINTERS]; |
|
2599 |
|
2600 /** |
|
2601 * DCT algorithm, see FF_DCT_* below |
|
2602 * - encoding: Set by user. |
|
2603 * - decoding: unused |
|
2604 */ |
|
2605 int dct_algo; |
|
2606 #define FF_DCT_AUTO 0 |
|
2607 #define FF_DCT_FASTINT 1 |
|
2608 #define FF_DCT_INT 2 |
|
2609 #define FF_DCT_MMX 3 |
|
2610 #define FF_DCT_ALTIVEC 5 |
|
2611 #define FF_DCT_FAAN 6 |
|
2612 |
|
2613 /** |
|
2614 * IDCT algorithm, see FF_IDCT_* below. |
|
2615 * - encoding: Set by user. |
|
2616 * - decoding: Set by user. |
|
2617 */ |
|
2618 int idct_algo; |
|
2619 #define FF_IDCT_AUTO 0 |
|
2620 #define FF_IDCT_INT 1 |
|
2621 #define FF_IDCT_SIMPLE 2 |
|
2622 #define FF_IDCT_SIMPLEMMX 3 |
|
2623 #if FF_API_LIBMPEG2 |
|
2624 #define FF_IDCT_LIBMPEG2MMX 4 |
|
2625 #endif |
|
2626 #if FF_API_MMI |
|
2627 #define FF_IDCT_MMI 5 |
|
2628 #endif |
|
2629 #define FF_IDCT_ARM 7 |
|
2630 #define FF_IDCT_ALTIVEC 8 |
|
2631 #define FF_IDCT_SH4 9 |
|
2632 #define FF_IDCT_SIMPLEARM 10 |
|
2633 #define FF_IDCT_H264 11 |
|
2634 #define FF_IDCT_VP3 12 |
|
2635 #define FF_IDCT_IPP 13 |
|
2636 #define FF_IDCT_XVIDMMX 14 |
|
2637 #define FF_IDCT_CAVS 15 |
|
2638 #define FF_IDCT_SIMPLEARMV5TE 16 |
|
2639 #define FF_IDCT_SIMPLEARMV6 17 |
|
2640 #define FF_IDCT_SIMPLEVIS 18 |
|
2641 #define FF_IDCT_WMV2 19 |
|
2642 #define FF_IDCT_FAAN 20 |
|
2643 #define FF_IDCT_EA 21 |
|
2644 #define FF_IDCT_SIMPLENEON 22 |
|
2645 #define FF_IDCT_SIMPLEALPHA 23 |
|
2646 #define FF_IDCT_BINK 24 |
|
2647 |
|
2648 #if FF_API_DSP_MASK |
|
2649 /** |
|
2650 * Unused. |
|
2651 * @deprecated use av_set_cpu_flags_mask() instead. |
|
2652 */ |
|
2653 attribute_deprecated unsigned dsp_mask; |
|
2654 #endif |
|
2655 |
|
2656 /** |
|
2657 * bits per sample/pixel from the demuxer (needed for huffyuv). |
|
2658 * - encoding: Set by libavcodec. |
|
2659 * - decoding: Set by user. |
|
2660 */ |
|
2661 int bits_per_coded_sample; |
|
2662 |
|
2663 /** |
|
2664 * Bits per sample/pixel of internal libavcodec pixel/sample format. |
|
2665 * - encoding: set by user. |
|
2666 * - decoding: set by libavcodec. |
|
2667 */ |
|
2668 int bits_per_raw_sample; |
|
2669 |
|
2670 /** |
|
2671 * low resolution decoding, 1-> 1/2 size, 2->1/4 size |
|
2672 * - encoding: unused |
|
2673 * - decoding: Set by user. |
|
2674 */ |
|
2675 attribute_deprecated int lowres; |
|
2676 |
|
2677 /** |
|
2678 * the picture in the bitstream |
|
2679 * - encoding: Set by libavcodec. |
|
2680 * - decoding: Set by libavcodec. |
|
2681 */ |
|
2682 AVFrame *coded_frame; |
|
2683 |
|
2684 /** |
|
2685 * thread count |
|
2686 * is used to decide how many independent tasks should be passed to execute() |
|
2687 * - encoding: Set by user. |
|
2688 * - decoding: Set by user. |
|
2689 */ |
|
2690 int thread_count; |
|
2691 |
|
2692 /** |
|
2693 * Which multithreading methods to use. |
|
2694 * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, |
|
2695 * so clients which cannot provide future frames should not use it. |
|
2696 * |
|
2697 * - encoding: Set by user, otherwise the default is used. |
|
2698 * - decoding: Set by user, otherwise the default is used. |
|
2699 */ |
|
2700 int thread_type; |
|
2701 #define FF_THREAD_FRAME 1 ///< Decode more than one frame at once |
|
2702 #define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once |
|
2703 |
|
2704 /** |
|
2705 * Which multithreading methods are in use by the codec. |
|
2706 * - encoding: Set by libavcodec. |
|
2707 * - decoding: Set by libavcodec. |
|
2708 */ |
|
2709 int active_thread_type; |
|
2710 |
|
2711 /** |
|
2712 * Set by the client if its custom get_buffer() callback can be called |
|
2713 * synchronously from another thread, which allows faster multithreaded decoding. |
|
2714 * draw_horiz_band() will be called from other threads regardless of this setting. |
|
2715 * Ignored if the default get_buffer() is used. |
|
2716 * - encoding: Set by user. |
|
2717 * - decoding: Set by user. |
|
2718 */ |
|
2719 int thread_safe_callbacks; |
|
2720 |
|
2721 /** |
|
2722 * The codec may call this to execute several independent things. |
|
2723 * It will return only after finishing all tasks. |
|
2724 * The user may replace this with some multithreaded implementation, |
|
2725 * the default implementation will execute the parts serially. |
|
2726 * @param count the number of things to execute |
|
2727 * - encoding: Set by libavcodec, user can override. |
|
2728 * - decoding: Set by libavcodec, user can override. |
|
2729 */ |
|
2730 int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); |
|
2731 |
|
2732 /** |
|
2733 * The codec may call this to execute several independent things. |
|
2734 * It will return only after finishing all tasks. |
|
2735 * The user may replace this with some multithreaded implementation, |
|
2736 * the default implementation will execute the parts serially. |
|
2737 * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. |
|
2738 * @param c context passed also to func |
|
2739 * @param count the number of things to execute |
|
2740 * @param arg2 argument passed unchanged to func |
|
2741 * @param ret return values of executed functions, must have space for "count" values. May be NULL. |
|
2742 * @param func function that will be called count times, with jobnr from 0 to count-1. |
|
2743 * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no |
|
2744 * two instances of func executing at the same time will have the same threadnr. |
|
2745 * @return always 0 currently, but code should handle a future improvement where when any call to func |
|
2746 * returns < 0 no further calls to func may be done and < 0 is returned. |
|
2747 * - encoding: Set by libavcodec, user can override. |
|
2748 * - decoding: Set by libavcodec, user can override. |
|
2749 */ |
|
2750 int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); |
|
2751 |
|
2752 /** |
|
2753 * thread opaque |
|
2754 * Can be used by execute() to store some per AVCodecContext stuff. |
|
2755 * - encoding: set by execute() |
|
2756 * - decoding: set by execute() |
|
2757 */ |
|
2758 void *thread_opaque; |
|
2759 |
|
2760 /** |
|
2761 * noise vs. sse weight for the nsse comparsion function |
|
2762 * - encoding: Set by user. |
|
2763 * - decoding: unused |
|
2764 */ |
|
2765 int nsse_weight; |
|
2766 |
|
2767 /** |
|
2768 * profile |
|
2769 * - encoding: Set by user. |
|
2770 * - decoding: Set by libavcodec. |
|
2771 */ |
|
2772 int profile; |
|
2773 #define FF_PROFILE_UNKNOWN -99 |
|
2774 #define FF_PROFILE_RESERVED -100 |
|
2775 |
|
2776 #define FF_PROFILE_AAC_MAIN 0 |
|
2777 #define FF_PROFILE_AAC_LOW 1 |
|
2778 #define FF_PROFILE_AAC_SSR 2 |
|
2779 #define FF_PROFILE_AAC_LTP 3 |
|
2780 #define FF_PROFILE_AAC_HE 4 |
|
2781 #define FF_PROFILE_AAC_HE_V2 28 |
|
2782 #define FF_PROFILE_AAC_LD 22 |
|
2783 #define FF_PROFILE_AAC_ELD 38 |
|
2784 |
|
2785 #define FF_PROFILE_DTS 20 |
|
2786 #define FF_PROFILE_DTS_ES 30 |
|
2787 #define FF_PROFILE_DTS_96_24 40 |
|
2788 #define FF_PROFILE_DTS_HD_HRA 50 |
|
2789 #define FF_PROFILE_DTS_HD_MA 60 |
|
2790 |
|
2791 #define FF_PROFILE_MPEG2_422 0 |
|
2792 #define FF_PROFILE_MPEG2_HIGH 1 |
|
2793 #define FF_PROFILE_MPEG2_SS 2 |
|
2794 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3 |
|
2795 #define FF_PROFILE_MPEG2_MAIN 4 |
|
2796 #define FF_PROFILE_MPEG2_SIMPLE 5 |
|
2797 |
|
2798 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag |
|
2799 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag |
|
2800 |
|
2801 #define FF_PROFILE_H264_BASELINE 66 |
|
2802 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) |
|
2803 #define FF_PROFILE_H264_MAIN 77 |
|
2804 #define FF_PROFILE_H264_EXTENDED 88 |
|
2805 #define FF_PROFILE_H264_HIGH 100 |
|
2806 #define FF_PROFILE_H264_HIGH_10 110 |
|
2807 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) |
|
2808 #define FF_PROFILE_H264_HIGH_422 122 |
|
2809 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) |
|
2810 #define FF_PROFILE_H264_HIGH_444 144 |
|
2811 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 |
|
2812 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) |
|
2813 #define FF_PROFILE_H264_CAVLC_444 44 |
|
2814 |
|
2815 #define FF_PROFILE_VC1_SIMPLE 0 |
|
2816 #define FF_PROFILE_VC1_MAIN 1 |
|
2817 #define FF_PROFILE_VC1_COMPLEX 2 |
|
2818 #define FF_PROFILE_VC1_ADVANCED 3 |
|
2819 |
|
2820 #define FF_PROFILE_MPEG4_SIMPLE 0 |
|
2821 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 |
|
2822 #define FF_PROFILE_MPEG4_CORE 2 |
|
2823 #define FF_PROFILE_MPEG4_MAIN 3 |
|
2824 #define FF_PROFILE_MPEG4_N_BIT 4 |
|
2825 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 |
|
2826 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 |
|
2827 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 |
|
2828 #define FF_PROFILE_MPEG4_HYBRID 8 |
|
2829 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 |
|
2830 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10 |
|
2831 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11 |
|
2832 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12 |
|
2833 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 |
|
2834 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 |
|
2835 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 |
|
2836 |
|
2837 /** |
|
2838 * level |
|
2839 * - encoding: Set by user. |
|
2840 * - decoding: Set by libavcodec. |
|
2841 */ |
|
2842 int level; |
|
2843 #define FF_LEVEL_UNKNOWN -99 |
|
2844 |
|
2845 /** |
|
2846 * |
|
2847 * - encoding: unused |
|
2848 * - decoding: Set by user. |
|
2849 */ |
|
2850 enum AVDiscard skip_loop_filter; |
|
2851 |
|
2852 /** |
|
2853 * |
|
2854 * - encoding: unused |
|
2855 * - decoding: Set by user. |
|
2856 */ |
|
2857 enum AVDiscard skip_idct; |
|
2858 |
|
2859 /** |
|
2860 * |
|
2861 * - encoding: unused |
|
2862 * - decoding: Set by user. |
|
2863 */ |
|
2864 enum AVDiscard skip_frame; |
|
2865 |
|
2866 /** |
|
2867 * Header containing style information for text subtitles. |
|
2868 * For SUBTITLE_ASS subtitle type, it should contain the whole ASS |
|
2869 * [Script Info] and [V4+ Styles] section, plus the [Events] line and |
|
2870 * the Format line following. It shouldn't include any Dialogue line. |
|
2871 * - encoding: Set/allocated/freed by user (before avcodec_open2()) |
|
2872 * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) |
|
2873 */ |
|
2874 uint8_t *subtitle_header; |
|
2875 int subtitle_header_size; |
|
2876 |
|
2877 /** |
|
2878 * Simulates errors in the bitstream to test error concealment. |
|
2879 * - encoding: Set by user. |
|
2880 * - decoding: unused |
|
2881 */ |
|
2882 int error_rate; |
|
2883 |
|
2884 /** |
|
2885 * Current packet as passed into the decoder, to avoid having |
|
2886 * to pass the packet into every function. Currently only valid |
|
2887 * inside lavc and get/release_buffer callbacks. |
|
2888 * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts |
|
2889 * - encoding: unused |
|
2890 */ |
|
2891 AVPacket *pkt; |
|
2892 |
|
2893 /** |
|
2894 * VBV delay coded in the last frame (in periods of a 27 MHz clock). |
|
2895 * Used for compliant TS muxing. |
|
2896 * - encoding: Set by libavcodec. |
|
2897 * - decoding: unused. |
|
2898 */ |
|
2899 uint64_t vbv_delay; |
|
2900 } AVCodecContext; |
|
2901 |
|
2902 /** |
|
2903 * AVProfile. |
|
2904 */ |
|
2905 typedef struct AVProfile { |
|
2906 int profile; |
|
2907 const char *name; ///< short name for the profile |
|
2908 } AVProfile; |
|
2909 |
|
2910 typedef struct AVCodecDefault AVCodecDefault; |
|
2911 |
|
2912 struct AVSubtitle; |
|
2913 |
|
2914 /** |
|
2915 * AVCodec. |
|
2916 */ |
|
2917 typedef struct AVCodec { |
|
2918 /** |
|
2919 * Name of the codec implementation. |
|
2920 * The name is globally unique among encoders and among decoders (but an |
|
2921 * encoder and a decoder can share the same name). |
|
2922 * This is the primary way to find a codec from the user perspective. |
|
2923 */ |
|
2924 const char *name; |
|
2925 /** |
|
2926 * Descriptive name for the codec, meant to be more human readable than name. |
|
2927 * You should use the NULL_IF_CONFIG_SMALL() macro to define it. |
|
2928 */ |
|
2929 const char *long_name; |
|
2930 enum AVMediaType type; |
|
2931 enum AVCodecID id; |
|
2932 /** |
|
2933 * Codec capabilities. |
|
2934 * see CODEC_CAP_* |
|
2935 */ |
|
2936 int capabilities; |
|
2937 const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} |
|
2938 const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 |
|
2939 const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 |
|
2940 const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 |
|
2941 const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 |
|
2942 attribute_deprecated uint8_t max_lowres; ///< maximum value for lowres supported by the decoder |
|
2943 const AVClass *priv_class; ///< AVClass for the private context |
|
2944 const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} |
|
2945 |
|
2946 /***************************************************************** |
|
2947 * No fields below this line are part of the public API. They |
|
2948 * may not be used outside of libavcodec and can be changed and |
|
2949 * removed at will. |
|
2950 * New public fields should be added right above. |
|
2951 ***************************************************************** |
|
2952 */ |
|
2953 int priv_data_size; |
|
2954 struct AVCodec *next; |
|
2955 /** |
|
2956 * @name Frame-level threading support functions |
|
2957 * @{ |
|
2958 */ |
|
2959 /** |
|
2960 * If defined, called on thread contexts when they are created. |
|
2961 * If the codec allocates writable tables in init(), re-allocate them here. |
|
2962 * priv_data will be set to a copy of the original. |
|
2963 */ |
|
2964 int (*init_thread_copy)(AVCodecContext *); |
|
2965 /** |
|
2966 * Copy necessary context variables from a previous thread context to the current one. |
|
2967 * If not defined, the next thread will start automatically; otherwise, the codec |
|
2968 * must call ff_thread_finish_setup(). |
|
2969 * |
|
2970 * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. |
|
2971 */ |
|
2972 int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); |
|
2973 /** @} */ |
|
2974 |
|
2975 /** |
|
2976 * Private codec-specific defaults. |
|
2977 */ |
|
2978 const AVCodecDefault *defaults; |
|
2979 |
|
2980 /** |
|
2981 * Initialize codec static data, called from avcodec_register(). |
|
2982 */ |
|
2983 void (*init_static_data)(struct AVCodec *codec); |
|
2984 |
|
2985 int (*init)(AVCodecContext *); |
|
2986 int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, |
|
2987 const struct AVSubtitle *sub); |
|
2988 /** |
|
2989 * Encode data to an AVPacket. |
|
2990 * |
|
2991 * @param avctx codec context |
|
2992 * @param avpkt output AVPacket (may contain a user-provided buffer) |
|
2993 * @param[in] frame AVFrame containing the raw data to be encoded |
|
2994 * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a |
|
2995 * non-empty packet was returned in avpkt. |
|
2996 * @return 0 on success, negative error code on failure |
|
2997 */ |
|
2998 int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, |
|
2999 int *got_packet_ptr); |
|
3000 int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); |
|
3001 int (*close)(AVCodecContext *); |
|
3002 /** |
|
3003 * Flush buffers. |
|
3004 * Will be called when seeking |
|
3005 */ |
|
3006 void (*flush)(AVCodecContext *); |
|
3007 } AVCodec; |
|
3008 |
|
3009 /** |
|
3010 * AVHWAccel. |
|
3011 */ |
|
3012 typedef struct AVHWAccel { |
|
3013 /** |
|
3014 * Name of the hardware accelerated codec. |
|
3015 * The name is globally unique among encoders and among decoders (but an |
|
3016 * encoder and a decoder can share the same name). |
|
3017 */ |
|
3018 const char *name; |
|
3019 |
|
3020 /** |
|
3021 * Type of codec implemented by the hardware accelerator. |
|
3022 * |
|
3023 * See AVMEDIA_TYPE_xxx |
|
3024 */ |
|
3025 enum AVMediaType type; |
|
3026 |
|
3027 /** |
|
3028 * Codec implemented by the hardware accelerator. |
|
3029 * |
|
3030 * See AV_CODEC_ID_xxx |
|
3031 */ |
|
3032 enum AVCodecID id; |
|
3033 |
|
3034 /** |
|
3035 * Supported pixel format. |
|
3036 * |
|
3037 * Only hardware accelerated formats are supported here. |
|
3038 */ |
|
3039 enum AVPixelFormat pix_fmt; |
|
3040 |
|
3041 /** |
|
3042 * Hardware accelerated codec capabilities. |
|
3043 * see FF_HWACCEL_CODEC_CAP_* |
|
3044 */ |
|
3045 int capabilities; |
|
3046 |
|
3047 struct AVHWAccel *next; |
|
3048 |
|
3049 /** |
|
3050 * Called at the beginning of each frame or field picture. |
|
3051 * |
|
3052 * Meaningful frame information (codec specific) is guaranteed to |
|
3053 * be parsed at this point. This function is mandatory. |
|
3054 * |
|
3055 * Note that buf can be NULL along with buf_size set to 0. |
|
3056 * Otherwise, this means the whole frame is available at this point. |
|
3057 * |
|
3058 * @param avctx the codec context |
|
3059 * @param buf the frame data buffer base |
|
3060 * @param buf_size the size of the frame in bytes |
|
3061 * @return zero if successful, a negative value otherwise |
|
3062 */ |
|
3063 int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); |
|
3064 |
|
3065 /** |
|
3066 * Callback for each slice. |
|
3067 * |
|
3068 * Meaningful slice information (codec specific) is guaranteed to |
|
3069 * be parsed at this point. This function is mandatory. |
|
3070 * |
|
3071 * @param avctx the codec context |
|
3072 * @param buf the slice data buffer base |
|
3073 * @param buf_size the size of the slice in bytes |
|
3074 * @return zero if successful, a negative value otherwise |
|
3075 */ |
|
3076 int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); |
|
3077 |
|
3078 /** |
|
3079 * Called at the end of each frame or field picture. |
|
3080 * |
|
3081 * The whole picture is parsed at this point and can now be sent |
|
3082 * to the hardware accelerator. This function is mandatory. |
|
3083 * |
|
3084 * @param avctx the codec context |
|
3085 * @return zero if successful, a negative value otherwise |
|
3086 */ |
|
3087 int (*end_frame)(AVCodecContext *avctx); |
|
3088 |
|
3089 /** |
|
3090 * Size of HW accelerator private data. |
|
3091 * |
|
3092 * Private data is allocated with av_mallocz() before |
|
3093 * AVCodecContext.get_buffer() and deallocated after |
|
3094 * AVCodecContext.release_buffer(). |
|
3095 */ |
|
3096 int priv_data_size; |
|
3097 } AVHWAccel; |
|
3098 |
|
3099 /** |
|
3100 * @defgroup lavc_picture AVPicture |
|
3101 * |
|
3102 * Functions for working with AVPicture |
|
3103 * @{ |
|
3104 */ |
|
3105 |
|
3106 /** |
|
3107 * four components are given, that's all. |
|
3108 * the last component is alpha |
|
3109 */ |
|
3110 typedef struct AVPicture { |
|
3111 uint8_t *data[AV_NUM_DATA_POINTERS]; |
|
3112 int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line |
|
3113 } AVPicture; |
|
3114 |
|
3115 /** |
|
3116 * @} |
|
3117 */ |
|
3118 |
|
3119 #define AVPALETTE_SIZE 1024 |
|
3120 #define AVPALETTE_COUNT 256 |
|
3121 |
|
3122 enum AVSubtitleType { |
|
3123 SUBTITLE_NONE, |
|
3124 |
|
3125 SUBTITLE_BITMAP, ///< A bitmap, pict will be set |
|
3126 |
|
3127 /** |
|
3128 * Plain text, the text field must be set by the decoder and is |
|
3129 * authoritative. ass and pict fields may contain approximations. |
|
3130 */ |
|
3131 SUBTITLE_TEXT, |
|
3132 |
|
3133 /** |
|
3134 * Formatted text, the ass field must be set by the decoder and is |
|
3135 * authoritative. pict and text fields may contain approximations. |
|
3136 */ |
|
3137 SUBTITLE_ASS, |
|
3138 }; |
|
3139 |
|
3140 typedef struct AVSubtitleRect { |
|
3141 int x; ///< top left corner of pict, undefined when pict is not set |
|
3142 int y; ///< top left corner of pict, undefined when pict is not set |
|
3143 int w; ///< width of pict, undefined when pict is not set |
|
3144 int h; ///< height of pict, undefined when pict is not set |
|
3145 int nb_colors; ///< number of colors in pict, undefined when pict is not set |
|
3146 |
|
3147 /** |
|
3148 * data+linesize for the bitmap of this subtitle. |
|
3149 * can be set for text/ass as well once they where rendered |
|
3150 */ |
|
3151 AVPicture pict; |
|
3152 enum AVSubtitleType type; |
|
3153 |
|
3154 char *text; ///< 0 terminated plain UTF-8 text |
|
3155 |
|
3156 /** |
|
3157 * 0 terminated ASS/SSA compatible event line. |
|
3158 * The pressentation of this is unaffected by the other values in this |
|
3159 * struct. |
|
3160 */ |
|
3161 char *ass; |
|
3162 } AVSubtitleRect; |
|
3163 |
|
3164 typedef struct AVSubtitle { |
|
3165 uint16_t format; /* 0 = graphics */ |
|
3166 uint32_t start_display_time; /* relative to packet pts, in ms */ |
|
3167 uint32_t end_display_time; /* relative to packet pts, in ms */ |
|
3168 unsigned num_rects; |
|
3169 AVSubtitleRect **rects; |
|
3170 int64_t pts; ///< Same as packet pts, in AV_TIME_BASE |
|
3171 } AVSubtitle; |
|
3172 |
|
3173 /** |
|
3174 * If c is NULL, returns the first registered codec, |
|
3175 * if c is non-NULL, returns the next registered codec after c, |
|
3176 * or NULL if c is the last one. |
|
3177 */ |
|
3178 AVCodec *av_codec_next(const AVCodec *c); |
|
3179 |
|
3180 /** |
|
3181 * Return the LIBAVCODEC_VERSION_INT constant. |
|
3182 */ |
|
3183 unsigned avcodec_version(void); |
|
3184 |
|
3185 /** |
|
3186 * Return the libavcodec build-time configuration. |
|
3187 */ |
|
3188 const char *avcodec_configuration(void); |
|
3189 |
|
3190 /** |
|
3191 * Return the libavcodec license. |
|
3192 */ |
|
3193 const char *avcodec_license(void); |
|
3194 |
|
3195 /** |
|
3196 * Register the codec codec and initialize libavcodec. |
|
3197 * |
|
3198 * @warning either this function or avcodec_register_all() must be called |
|
3199 * before any other libavcodec functions. |
|
3200 * |
|
3201 * @see avcodec_register_all() |
|
3202 */ |
|
3203 void avcodec_register(AVCodec *codec); |
|
3204 |
|
3205 /** |
|
3206 * Register all the codecs, parsers and bitstream filters which were enabled at |
|
3207 * configuration time. If you do not call this function you can select exactly |
|
3208 * which formats you want to support, by using the individual registration |
|
3209 * functions. |
|
3210 * |
|
3211 * @see avcodec_register |
|
3212 * @see av_register_codec_parser |
|
3213 * @see av_register_bitstream_filter |
|
3214 */ |
|
3215 void avcodec_register_all(void); |
|
3216 |
|
3217 /** |
|
3218 * Allocate an AVCodecContext and set its fields to default values. The |
|
3219 * resulting struct can be deallocated by calling avcodec_close() on it followed |
|
3220 * by av_free(). |
|
3221 * |
|
3222 * @param codec if non-NULL, allocate private data and initialize defaults |
|
3223 * for the given codec. It is illegal to then call avcodec_open2() |
|
3224 * with a different codec. |
|
3225 * If NULL, then the codec-specific defaults won't be initialized, |
|
3226 * which may result in suboptimal default settings (this is |
|
3227 * important mainly for encoders, e.g. libx264). |
|
3228 * |
|
3229 * @return An AVCodecContext filled with default values or NULL on failure. |
|
3230 * @see avcodec_get_context_defaults |
|
3231 */ |
|
3232 AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); |
|
3233 |
|
3234 /** |
|
3235 * Set the fields of the given AVCodecContext to default values corresponding |
|
3236 * to the given codec (defaults may be codec-dependent). |
|
3237 * |
|
3238 * Do not call this function if a non-NULL codec has been passed |
|
3239 * to avcodec_alloc_context3() that allocated this AVCodecContext. |
|
3240 * If codec is non-NULL, it is illegal to call avcodec_open2() with a |
|
3241 * different codec on this AVCodecContext. |
|
3242 */ |
|
3243 int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec); |
|
3244 |
|
3245 /** |
|
3246 * Get the AVClass for AVCodecContext. It can be used in combination with |
|
3247 * AV_OPT_SEARCH_FAKE_OBJ for examining options. |
|
3248 * |
|
3249 * @see av_opt_find(). |
|
3250 */ |
|
3251 const AVClass *avcodec_get_class(void); |
|
3252 |
|
3253 /** |
|
3254 * Copy the settings of the source AVCodecContext into the destination |
|
3255 * AVCodecContext. The resulting destination codec context will be |
|
3256 * unopened, i.e. you are required to call avcodec_open2() before you |
|
3257 * can use this AVCodecContext to decode/encode video/audio data. |
|
3258 * |
|
3259 * @param dest target codec context, should be initialized with |
|
3260 * avcodec_alloc_context3(), but otherwise uninitialized |
|
3261 * @param src source codec context |
|
3262 * @return AVERROR() on error (e.g. memory allocation error), 0 on success |
|
3263 */ |
|
3264 int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); |
|
3265 |
|
3266 /** |
|
3267 * Allocate an AVFrame and set its fields to default values. The resulting |
|
3268 * struct must be freed using avcodec_free_frame(). |
|
3269 * |
|
3270 * @return An AVFrame filled with default values or NULL on failure. |
|
3271 * @see avcodec_get_frame_defaults |
|
3272 */ |
|
3273 AVFrame *avcodec_alloc_frame(void); |
|
3274 |
|
3275 /** |
|
3276 * Set the fields of the given AVFrame to default values. |
|
3277 * |
|
3278 * @param frame The AVFrame of which the fields should be set to default values. |
|
3279 */ |
|
3280 void avcodec_get_frame_defaults(AVFrame *frame); |
|
3281 |
|
3282 /** |
|
3283 * Free the frame and any dynamically allocated objects in it, |
|
3284 * e.g. extended_data. |
|
3285 * |
|
3286 * @param frame frame to be freed. The pointer will be set to NULL. |
|
3287 * |
|
3288 * @warning this function does NOT free the data buffers themselves |
|
3289 * (it does not know how, since they might have been allocated with |
|
3290 * a custom get_buffer()). |
|
3291 */ |
|
3292 void avcodec_free_frame(AVFrame **frame); |
|
3293 |
|
3294 /** |
|
3295 * Initialize the AVCodecContext to use the given AVCodec. Prior to using this |
|
3296 * function the context has to be allocated with avcodec_alloc_context3(). |
|
3297 * |
|
3298 * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), |
|
3299 * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for |
|
3300 * retrieving a codec. |
|
3301 * |
|
3302 * @warning This function is not thread safe! |
|
3303 * |
|
3304 * @code |
|
3305 * avcodec_register_all(); |
|
3306 * av_dict_set(&opts, "b", "2.5M", 0); |
|
3307 * codec = avcodec_find_decoder(AV_CODEC_ID_H264); |
|
3308 * if (!codec) |
|
3309 * exit(1); |
|
3310 * |
|
3311 * context = avcodec_alloc_context3(codec); |
|
3312 * |
|
3313 * if (avcodec_open2(context, codec, opts) < 0) |
|
3314 * exit(1); |
|
3315 * @endcode |
|
3316 * |
|
3317 * @param avctx The context to initialize. |
|
3318 * @param codec The codec to open this context for. If a non-NULL codec has been |
|
3319 * previously passed to avcodec_alloc_context3() or |
|
3320 * avcodec_get_context_defaults3() for this context, then this |
|
3321 * parameter MUST be either NULL or equal to the previously passed |
|
3322 * codec. |
|
3323 * @param options A dictionary filled with AVCodecContext and codec-private options. |
|
3324 * On return this object will be filled with options that were not found. |
|
3325 * |
|
3326 * @return zero on success, a negative value on error |
|
3327 * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), |
|
3328 * av_dict_set(), av_opt_find(). |
|
3329 */ |
|
3330 int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); |
|
3331 |
|
3332 /** |
|
3333 * Close a given AVCodecContext and free all the data associated with it |
|
3334 * (but not the AVCodecContext itself). |
|
3335 * |
|
3336 * Calling this function on an AVCodecContext that hasn't been opened will free |
|
3337 * the codec-specific data allocated in avcodec_alloc_context3() / |
|
3338 * avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will |
|
3339 * do nothing. |
|
3340 */ |
|
3341 int avcodec_close(AVCodecContext *avctx); |
|
3342 |
|
3343 /** |
|
3344 * Free all allocated data in the given subtitle struct. |
|
3345 * |
|
3346 * @param sub AVSubtitle to free. |
|
3347 */ |
|
3348 void avsubtitle_free(AVSubtitle *sub); |
|
3349 |
|
3350 /** |
|
3351 * @} |
|
3352 */ |
|
3353 |
|
3354 /** |
|
3355 * @addtogroup lavc_packet |
|
3356 * @{ |
|
3357 */ |
|
3358 |
|
3359 /** |
|
3360 * Default packet destructor. |
|
3361 */ |
|
3362 void av_destruct_packet(AVPacket *pkt); |
|
3363 |
|
3364 /** |
|
3365 * Initialize optional fields of a packet with default values. |
|
3366 * |
|
3367 * Note, this does not touch the data and size members, which have to be |
|
3368 * initialized separately. |
|
3369 * |
|
3370 * @param pkt packet |
|
3371 */ |
|
3372 void av_init_packet(AVPacket *pkt); |
|
3373 |
|
3374 /** |
|
3375 * Allocate the payload of a packet and initialize its fields with |
|
3376 * default values. |
|
3377 * |
|
3378 * @param pkt packet |
|
3379 * @param size wanted payload size |
|
3380 * @return 0 if OK, AVERROR_xxx otherwise |
|
3381 */ |
|
3382 int av_new_packet(AVPacket *pkt, int size); |
|
3383 |
|
3384 /** |
|
3385 * Reduce packet size, correctly zeroing padding |
|
3386 * |
|
3387 * @param pkt packet |
|
3388 * @param size new size |
|
3389 */ |
|
3390 void av_shrink_packet(AVPacket *pkt, int size); |
|
3391 |
|
3392 /** |
|
3393 * Increase packet size, correctly zeroing padding |
|
3394 * |
|
3395 * @param pkt packet |
|
3396 * @param grow_by number of bytes by which to increase the size of the packet |
|
3397 */ |
|
3398 int av_grow_packet(AVPacket *pkt, int grow_by); |
|
3399 |
|
3400 /** |
|
3401 * @warning This is a hack - the packet memory allocation stuff is broken. The |
|
3402 * packet is allocated if it was not really allocated. |
|
3403 */ |
|
3404 int av_dup_packet(AVPacket *pkt); |
|
3405 |
|
3406 /** |
|
3407 * Free a packet. |
|
3408 * |
|
3409 * @param pkt packet to free |
|
3410 */ |
|
3411 void av_free_packet(AVPacket *pkt); |
|
3412 |
|
3413 /** |
|
3414 * Allocate new information of a packet. |
|
3415 * |
|
3416 * @param pkt packet |
|
3417 * @param type side information type |
|
3418 * @param size side information size |
|
3419 * @return pointer to fresh allocated data or NULL otherwise |
|
3420 */ |
|
3421 uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, |
|
3422 int size); |
|
3423 |
|
3424 /** |
|
3425 * Shrink the already allocated side data buffer |
|
3426 * |
|
3427 * @param pkt packet |
|
3428 * @param type side information type |
|
3429 * @param size new side information size |
|
3430 * @return 0 on success, < 0 on failure |
|
3431 */ |
|
3432 int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, |
|
3433 int size); |
|
3434 |
|
3435 /** |
|
3436 * Get side information from packet. |
|
3437 * |
|
3438 * @param pkt packet |
|
3439 * @param type desired side information type |
|
3440 * @param size pointer for side information size to store (optional) |
|
3441 * @return pointer to data if present or NULL otherwise |
|
3442 */ |
|
3443 uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, |
|
3444 int *size); |
|
3445 |
|
3446 /** |
|
3447 * @} |
|
3448 */ |
|
3449 |
|
3450 /** |
|
3451 * @addtogroup lavc_decoding |
|
3452 * @{ |
|
3453 */ |
|
3454 |
|
3455 /** |
|
3456 * Find a registered decoder with a matching codec ID. |
|
3457 * |
|
3458 * @param id AVCodecID of the requested decoder |
|
3459 * @return A decoder if one was found, NULL otherwise. |
|
3460 */ |
|
3461 AVCodec *avcodec_find_decoder(enum AVCodecID id); |
|
3462 |
|
3463 /** |
|
3464 * Find a registered decoder with the specified name. |
|
3465 * |
|
3466 * @param name name of the requested decoder |
|
3467 * @return A decoder if one was found, NULL otherwise. |
|
3468 */ |
|
3469 AVCodec *avcodec_find_decoder_by_name(const char *name); |
|
3470 |
|
3471 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); |
|
3472 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); |
|
3473 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); |
|
3474 |
|
3475 /** |
|
3476 * Return the amount of padding in pixels which the get_buffer callback must |
|
3477 * provide around the edge of the image for codecs which do not have the |
|
3478 * CODEC_FLAG_EMU_EDGE flag. |
|
3479 * |
|
3480 * @return Required padding in pixels. |
|
3481 */ |
|
3482 unsigned avcodec_get_edge_width(void); |
|
3483 |
|
3484 /** |
|
3485 * Modify width and height values so that they will result in a memory |
|
3486 * buffer that is acceptable for the codec if you do not use any horizontal |
|
3487 * padding. |
|
3488 * |
|
3489 * May only be used if a codec with CODEC_CAP_DR1 has been opened. |
|
3490 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased |
|
3491 * according to avcodec_get_edge_width() before. |
|
3492 */ |
|
3493 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); |
|
3494 |
|
3495 /** |
|
3496 * Modify width and height values so that they will result in a memory |
|
3497 * buffer that is acceptable for the codec if you also ensure that all |
|
3498 * line sizes are a multiple of the respective linesize_align[i]. |
|
3499 * |
|
3500 * May only be used if a codec with CODEC_CAP_DR1 has been opened. |
|
3501 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased |
|
3502 * according to avcodec_get_edge_width() before. |
|
3503 */ |
|
3504 void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, |
|
3505 int linesize_align[AV_NUM_DATA_POINTERS]); |
|
3506 |
|
3507 #if FF_API_OLD_DECODE_AUDIO |
|
3508 /** |
|
3509 * Wrapper function which calls avcodec_decode_audio4. |
|
3510 * |
|
3511 * @deprecated Use avcodec_decode_audio4 instead. |
|
3512 * |
|
3513 * Decode the audio frame of size avpkt->size from avpkt->data into samples. |
|
3514 * Some decoders may support multiple frames in a single AVPacket, such |
|
3515 * decoders would then just decode the first frame. In this case, |
|
3516 * avcodec_decode_audio3 has to be called again with an AVPacket that contains |
|
3517 * the remaining data in order to decode the second frame etc. |
|
3518 * If no frame |
|
3519 * could be outputted, frame_size_ptr is zero. Otherwise, it is the |
|
3520 * decompressed frame size in bytes. |
|
3521 * |
|
3522 * @warning You must set frame_size_ptr to the allocated size of the |
|
3523 * output buffer before calling avcodec_decode_audio3(). |
|
3524 * |
|
3525 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than |
|
3526 * the actual read bytes because some optimized bitstream readers read 32 or 64 |
|
3527 * bits at once and could read over the end. |
|
3528 * |
|
3529 * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that |
|
3530 * no overreading happens for damaged MPEG streams. |
|
3531 * |
|
3532 * @warning You must not provide a custom get_buffer() when using |
|
3533 * avcodec_decode_audio3(). Doing so will override it with |
|
3534 * avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, |
|
3535 * which does allow the application to provide a custom get_buffer(). |
|
3536 * |
|
3537 * @note You might have to align the input buffer avpkt->data and output buffer |
|
3538 * samples. The alignment requirements depend on the CPU: On some CPUs it isn't |
|
3539 * necessary at all, on others it won't work at all if not aligned and on others |
|
3540 * it will work but it will have an impact on performance. |
|
3541 * |
|
3542 * In practice, avpkt->data should have 4 byte alignment at minimum and |
|
3543 * samples should be 16 byte aligned unless the CPU doesn't need it |
|
3544 * (AltiVec and SSE do). |
|
3545 * |
|
3546 * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay |
|
3547 * between input and output, these need to be fed with avpkt->data=NULL, |
|
3548 * avpkt->size=0 at the end to return the remaining frames. |
|
3549 * |
|
3550 * @param avctx the codec context |
|
3551 * @param[out] samples the output buffer, sample type in avctx->sample_fmt |
|
3552 * If the sample format is planar, each channel plane will |
|
3553 * be the same size, with no padding between channels. |
|
3554 * @param[in,out] frame_size_ptr the output buffer size in bytes |
|
3555 * @param[in] avpkt The input AVPacket containing the input buffer. |
|
3556 * You can create such packet with av_init_packet() and by then setting |
|
3557 * data and size, some decoders might in addition need other fields. |
|
3558 * All decoders are designed to use the least fields possible though. |
|
3559 * @return On error a negative value is returned, otherwise the number of bytes |
|
3560 * used or zero if no frame data was decompressed (used) from the input AVPacket. |
|
3561 */ |
|
3562 attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, |
|
3563 int *frame_size_ptr, |
|
3564 AVPacket *avpkt); |
|
3565 #endif |
|
3566 |
|
3567 /** |
|
3568 * Decode the audio frame of size avpkt->size from avpkt->data into frame. |
|
3569 * |
|
3570 * Some decoders may support multiple frames in a single AVPacket. Such |
|
3571 * decoders would then just decode the first frame. In this case, |
|
3572 * avcodec_decode_audio4 has to be called again with an AVPacket containing |
|
3573 * the remaining data in order to decode the second frame, etc... |
|
3574 * Even if no frames are returned, the packet needs to be fed to the decoder |
|
3575 * with remaining data until it is completely consumed or an error occurs. |
|
3576 * |
|
3577 * @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE |
|
3578 * larger than the actual read bytes because some optimized bitstream |
|
3579 * readers read 32 or 64 bits at once and could read over the end. |
|
3580 * |
|
3581 * @note You might have to align the input buffer. The alignment requirements |
|
3582 * depend on the CPU and the decoder. |
|
3583 * |
|
3584 * @param avctx the codec context |
|
3585 * @param[out] frame The AVFrame in which to store decoded audio samples. |
|
3586 * Decoders request a buffer of a particular size by setting |
|
3587 * AVFrame.nb_samples prior to calling get_buffer(). The |
|
3588 * decoder may, however, only utilize part of the buffer by |
|
3589 * setting AVFrame.nb_samples to a smaller value in the |
|
3590 * output frame. |
|
3591 * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is |
|
3592 * non-zero. |
|
3593 * @param[in] avpkt The input AVPacket containing the input buffer. |
|
3594 * At least avpkt->data and avpkt->size should be set. Some |
|
3595 * decoders might also require additional fields to be set. |
|
3596 * @return A negative error code is returned if an error occurred during |
|
3597 * decoding, otherwise the number of bytes consumed from the input |
|
3598 * AVPacket is returned. |
|
3599 */ |
|
3600 int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, |
|
3601 int *got_frame_ptr, AVPacket *avpkt); |
|
3602 |
|
3603 /** |
|
3604 * Decode the video frame of size avpkt->size from avpkt->data into picture. |
|
3605 * Some decoders may support multiple frames in a single AVPacket, such |
|
3606 * decoders would then just decode the first frame. |
|
3607 * |
|
3608 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than |
|
3609 * the actual read bytes because some optimized bitstream readers read 32 or 64 |
|
3610 * bits at once and could read over the end. |
|
3611 * |
|
3612 * @warning The end of the input buffer buf should be set to 0 to ensure that |
|
3613 * no overreading happens for damaged MPEG streams. |
|
3614 * |
|
3615 * @note You might have to align the input buffer avpkt->data. |
|
3616 * The alignment requirements depend on the CPU: on some CPUs it isn't |
|
3617 * necessary at all, on others it won't work at all if not aligned and on others |
|
3618 * it will work but it will have an impact on performance. |
|
3619 * |
|
3620 * In practice, avpkt->data should have 4 byte alignment at minimum. |
|
3621 * |
|
3622 * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay |
|
3623 * between input and output, these need to be fed with avpkt->data=NULL, |
|
3624 * avpkt->size=0 at the end to return the remaining frames. |
|
3625 * |
|
3626 * @param avctx the codec context |
|
3627 * @param[out] picture The AVFrame in which the decoded video frame will be stored. |
|
3628 * Use avcodec_alloc_frame to get an AVFrame, the codec will |
|
3629 * allocate memory for the actual bitmap. |
|
3630 * with default get/release_buffer(), the decoder frees/reuses the bitmap as it sees fit. |
|
3631 * with overridden get/release_buffer() (needs CODEC_CAP_DR1) the user decides into what buffer the decoder |
|
3632 * decodes and the decoder tells the user once it does not need the data anymore, |
|
3633 * the user app can at this point free/reuse/keep the memory as it sees fit. |
|
3634 * |
|
3635 * @param[in] avpkt The input AVpacket containing the input buffer. |
|
3636 * You can create such packet with av_init_packet() and by then setting |
|
3637 * data and size, some decoders might in addition need other fields like |
|
3638 * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least |
|
3639 * fields possible. |
|
3640 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. |
|
3641 * @return On error a negative value is returned, otherwise the number of bytes |
|
3642 * used or zero if no frame could be decompressed. |
|
3643 */ |
|
3644 int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, |
|
3645 int *got_picture_ptr, |
|
3646 AVPacket *avpkt); |
|
3647 |
|
3648 /** |
|
3649 * Decode a subtitle message. |
|
3650 * Return a negative value on error, otherwise return the number of bytes used. |
|
3651 * If no subtitle could be decompressed, got_sub_ptr is zero. |
|
3652 * Otherwise, the subtitle is stored in *sub. |
|
3653 * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for |
|
3654 * simplicity, because the performance difference is expect to be negligible |
|
3655 * and reusing a get_buffer written for video codecs would probably perform badly |
|
3656 * due to a potentially very different allocation pattern. |
|
3657 * |
|
3658 * @param avctx the codec context |
|
3659 * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be |
|
3660 freed with avsubtitle_free if *got_sub_ptr is set. |
|
3661 * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. |
|
3662 * @param[in] avpkt The input AVPacket containing the input buffer. |
|
3663 */ |
|
3664 int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, |
|
3665 int *got_sub_ptr, |
|
3666 AVPacket *avpkt); |
|
3667 |
|
3668 /** |
|
3669 * @defgroup lavc_parsing Frame parsing |
|
3670 * @{ |
|
3671 */ |
|
3672 |
|
3673 typedef struct AVCodecParserContext { |
|
3674 void *priv_data; |
|
3675 struct AVCodecParser *parser; |
|
3676 int64_t frame_offset; /* offset of the current frame */ |
|
3677 int64_t cur_offset; /* current offset |
|
3678 (incremented by each av_parser_parse()) */ |
|
3679 int64_t next_frame_offset; /* offset of the next frame */ |
|
3680 /* video info */ |
|
3681 int pict_type; /* XXX: Put it back in AVCodecContext. */ |
|
3682 /** |
|
3683 * This field is used for proper frame duration computation in lavf. |
|
3684 * It signals, how much longer the frame duration of the current frame |
|
3685 * is compared to normal frame duration. |
|
3686 * |
|
3687 * frame_duration = (1 + repeat_pict) * time_base |
|
3688 * |
|
3689 * It is used by codecs like H.264 to display telecined material. |
|
3690 */ |
|
3691 int repeat_pict; /* XXX: Put it back in AVCodecContext. */ |
|
3692 int64_t pts; /* pts of the current frame */ |
|
3693 int64_t dts; /* dts of the current frame */ |
|
3694 |
|
3695 /* private data */ |
|
3696 int64_t last_pts; |
|
3697 int64_t last_dts; |
|
3698 int fetch_timestamp; |
|
3699 |
|
3700 #define AV_PARSER_PTS_NB 4 |
|
3701 int cur_frame_start_index; |
|
3702 int64_t cur_frame_offset[AV_PARSER_PTS_NB]; |
|
3703 int64_t cur_frame_pts[AV_PARSER_PTS_NB]; |
|
3704 int64_t cur_frame_dts[AV_PARSER_PTS_NB]; |
|
3705 |
|
3706 int flags; |
|
3707 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001 |
|
3708 #define PARSER_FLAG_ONCE 0x0002 |
|
3709 /// Set if the parser has a valid file offset |
|
3710 #define PARSER_FLAG_FETCHED_OFFSET 0x0004 |
|
3711 |
|
3712 int64_t offset; ///< byte offset from starting packet start |
|
3713 int64_t cur_frame_end[AV_PARSER_PTS_NB]; |
|
3714 |
|
3715 /** |
|
3716 * Set by parser to 1 for key frames and 0 for non-key frames. |
|
3717 * It is initialized to -1, so if the parser doesn't set this flag, |
|
3718 * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames |
|
3719 * will be used. |
|
3720 */ |
|
3721 int key_frame; |
|
3722 |
|
3723 /** |
|
3724 * Time difference in stream time base units from the pts of this |
|
3725 * packet to the point at which the output from the decoder has converged |
|
3726 * independent from the availability of previous frames. That is, the |
|
3727 * frames are virtually identical no matter if decoding started from |
|
3728 * the very first frame or from this keyframe. |
|
3729 * Is AV_NOPTS_VALUE if unknown. |
|
3730 * This field is not the display duration of the current frame. |
|
3731 * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY |
|
3732 * set. |
|
3733 * |
|
3734 * The purpose of this field is to allow seeking in streams that have no |
|
3735 * keyframes in the conventional sense. It corresponds to the |
|
3736 * recovery point SEI in H.264 and match_time_delta in NUT. It is also |
|
3737 * essential for some types of subtitle streams to ensure that all |
|
3738 * subtitles are correctly displayed after seeking. |
|
3739 */ |
|
3740 int64_t convergence_duration; |
|
3741 |
|
3742 // Timestamp generation support: |
|
3743 /** |
|
3744 * Synchronization point for start of timestamp generation. |
|
3745 * |
|
3746 * Set to >0 for sync point, 0 for no sync point and <0 for undefined |
|
3747 * (default). |
|
3748 * |
|
3749 * For example, this corresponds to presence of H.264 buffering period |
|
3750 * SEI message. |
|
3751 */ |
|
3752 int dts_sync_point; |
|
3753 |
|
3754 /** |
|
3755 * Offset of the current timestamp against last timestamp sync point in |
|
3756 * units of AVCodecContext.time_base. |
|
3757 * |
|
3758 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must |
|
3759 * contain a valid timestamp offset. |
|
3760 * |
|
3761 * Note that the timestamp of sync point has usually a nonzero |
|
3762 * dts_ref_dts_delta, which refers to the previous sync point. Offset of |
|
3763 * the next frame after timestamp sync point will be usually 1. |
|
3764 * |
|
3765 * For example, this corresponds to H.264 cpb_removal_delay. |
|
3766 */ |
|
3767 int dts_ref_dts_delta; |
|
3768 |
|
3769 /** |
|
3770 * Presentation delay of current frame in units of AVCodecContext.time_base. |
|
3771 * |
|
3772 * Set to INT_MIN when dts_sync_point unused. Otherwise, it must |
|
3773 * contain valid non-negative timestamp delta (presentation time of a frame |
|
3774 * must not lie in the past). |
|
3775 * |
|
3776 * This delay represents the difference between decoding and presentation |
|
3777 * time of the frame. |
|
3778 * |
|
3779 * For example, this corresponds to H.264 dpb_output_delay. |
|
3780 */ |
|
3781 int pts_dts_delta; |
|
3782 |
|
3783 /** |
|
3784 * Position of the packet in file. |
|
3785 * |
|
3786 * Analogous to cur_frame_pts/dts |
|
3787 */ |
|
3788 int64_t cur_frame_pos[AV_PARSER_PTS_NB]; |
|
3789 |
|
3790 /** |
|
3791 * Byte position of currently parsed frame in stream. |
|
3792 */ |
|
3793 int64_t pos; |
|
3794 |
|
3795 /** |
|
3796 * Previous frame byte position. |
|
3797 */ |
|
3798 int64_t last_pos; |
|
3799 |
|
3800 /** |
|
3801 * Duration of the current frame. |
|
3802 * For audio, this is in units of 1 / AVCodecContext.sample_rate. |
|
3803 * For all other types, this is in units of AVCodecContext.time_base. |
|
3804 */ |
|
3805 int duration; |
|
3806 } AVCodecParserContext; |
|
3807 |
|
3808 typedef struct AVCodecParser { |
|
3809 int codec_ids[5]; /* several codec IDs are permitted */ |
|
3810 int priv_data_size; |
|
3811 int (*parser_init)(AVCodecParserContext *s); |
|
3812 int (*parser_parse)(AVCodecParserContext *s, |
|
3813 AVCodecContext *avctx, |
|
3814 const uint8_t **poutbuf, int *poutbuf_size, |
|
3815 const uint8_t *buf, int buf_size); |
|
3816 void (*parser_close)(AVCodecParserContext *s); |
|
3817 int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); |
|
3818 struct AVCodecParser *next; |
|
3819 } AVCodecParser; |
|
3820 |
|
3821 AVCodecParser *av_parser_next(AVCodecParser *c); |
|
3822 |
|
3823 void av_register_codec_parser(AVCodecParser *parser); |
|
3824 AVCodecParserContext *av_parser_init(int codec_id); |
|
3825 |
|
3826 /** |
|
3827 * Parse a packet. |
|
3828 * |
|
3829 * @param s parser context. |
|
3830 * @param avctx codec context. |
|
3831 * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. |
|
3832 * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. |
|
3833 * @param buf input buffer. |
|
3834 * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). |
|
3835 * @param pts input presentation timestamp. |
|
3836 * @param dts input decoding timestamp. |
|
3837 * @param pos input byte position in stream. |
|
3838 * @return the number of bytes of the input bitstream used. |
|
3839 * |
|
3840 * Example: |
|
3841 * @code |
|
3842 * while(in_len){ |
|
3843 * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, |
|
3844 * in_data, in_len, |
|
3845 * pts, dts, pos); |
|
3846 * in_data += len; |
|
3847 * in_len -= len; |
|
3848 * |
|
3849 * if(size) |
|
3850 * decode_frame(data, size); |
|
3851 * } |
|
3852 * @endcode |
|
3853 */ |
|
3854 int av_parser_parse2(AVCodecParserContext *s, |
|
3855 AVCodecContext *avctx, |
|
3856 uint8_t **poutbuf, int *poutbuf_size, |
|
3857 const uint8_t *buf, int buf_size, |
|
3858 int64_t pts, int64_t dts, |
|
3859 int64_t pos); |
|
3860 |
|
3861 int av_parser_change(AVCodecParserContext *s, |
|
3862 AVCodecContext *avctx, |
|
3863 uint8_t **poutbuf, int *poutbuf_size, |
|
3864 const uint8_t *buf, int buf_size, int keyframe); |
|
3865 void av_parser_close(AVCodecParserContext *s); |
|
3866 |
|
3867 /** |
|
3868 * @} |
|
3869 * @} |
|
3870 */ |
|
3871 |
|
3872 /** |
|
3873 * @addtogroup lavc_encoding |
|
3874 * @{ |
|
3875 */ |
|
3876 |
|
3877 /** |
|
3878 * Find a registered encoder with a matching codec ID. |
|
3879 * |
|
3880 * @param id AVCodecID of the requested encoder |
|
3881 * @return An encoder if one was found, NULL otherwise. |
|
3882 */ |
|
3883 AVCodec *avcodec_find_encoder(enum AVCodecID id); |
|
3884 |
|
3885 /** |
|
3886 * Find a registered encoder with the specified name. |
|
3887 * |
|
3888 * @param name name of the requested encoder |
|
3889 * @return An encoder if one was found, NULL otherwise. |
|
3890 */ |
|
3891 AVCodec *avcodec_find_encoder_by_name(const char *name); |
|
3892 |
|
3893 #if FF_API_OLD_ENCODE_AUDIO |
|
3894 /** |
|
3895 * Encode an audio frame from samples into buf. |
|
3896 * |
|
3897 * @deprecated Use avcodec_encode_audio2 instead. |
|
3898 * |
|
3899 * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. |
|
3900 * However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user |
|
3901 * will know how much space is needed because it depends on the value passed |
|
3902 * in buf_size as described below. In that case a lower value can be used. |
|
3903 * |
|
3904 * @param avctx the codec context |
|
3905 * @param[out] buf the output buffer |
|
3906 * @param[in] buf_size the output buffer size |
|
3907 * @param[in] samples the input buffer containing the samples |
|
3908 * The number of samples read from this buffer is frame_size*channels, |
|
3909 * both of which are defined in avctx. |
|
3910 * For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of |
|
3911 * samples read from samples is equal to: |
|
3912 * buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) |
|
3913 * This also implies that av_get_bits_per_sample() must not return 0 for these |
|
3914 * codecs. |
|
3915 * @return On error a negative value is returned, on success zero or the number |
|
3916 * of bytes used to encode the data read from the input buffer. |
|
3917 */ |
|
3918 int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx, |
|
3919 uint8_t *buf, int buf_size, |
|
3920 const short *samples); |
|
3921 #endif |
|
3922 |
|
3923 /** |
|
3924 * Encode a frame of audio. |
|
3925 * |
|
3926 * Takes input samples from frame and writes the next output packet, if |
|
3927 * available, to avpkt. The output packet does not necessarily contain data for |
|
3928 * the most recent frame, as encoders can delay, split, and combine input frames |
|
3929 * internally as needed. |
|
3930 * |
|
3931 * @param avctx codec context |
|
3932 * @param avpkt output AVPacket. |
|
3933 * The user can supply an output buffer by setting |
|
3934 * avpkt->data and avpkt->size prior to calling the |
|
3935 * function, but if the size of the user-provided data is not |
|
3936 * large enough, encoding will fail. All other AVPacket fields |
|
3937 * will be reset by the encoder using av_init_packet(). If |
|
3938 * avpkt->data is NULL, the encoder will allocate it. |
|
3939 * The encoder will set avpkt->size to the size of the |
|
3940 * output packet. |
|
3941 * |
|
3942 * If this function fails or produces no output, avpkt will be |
|
3943 * freed using av_free_packet() (i.e. avpkt->destruct will be |
|
3944 * called to free the user supplied buffer). |
|
3945 * @param[in] frame AVFrame containing the raw audio data to be encoded. |
|
3946 * May be NULL when flushing an encoder that has the |
|
3947 * CODEC_CAP_DELAY capability set. |
|
3948 * If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame |
|
3949 * can have any number of samples. |
|
3950 * If it is not set, frame->nb_samples must be equal to |
|
3951 * avctx->frame_size for all frames except the last. |
|
3952 * The final frame may be smaller than avctx->frame_size. |
|
3953 * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the |
|
3954 * output packet is non-empty, and to 0 if it is |
|
3955 * empty. If the function returns an error, the |
|
3956 * packet can be assumed to be invalid, and the |
|
3957 * value of got_packet_ptr is undefined and should |
|
3958 * not be used. |
|
3959 * @return 0 on success, negative error code on failure |
|
3960 */ |
|
3961 int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, |
|
3962 const AVFrame *frame, int *got_packet_ptr); |
|
3963 |
|
3964 #if FF_API_OLD_ENCODE_VIDEO |
|
3965 /** |
|
3966 * @deprecated use avcodec_encode_video2() instead. |
|
3967 * |
|
3968 * Encode a video frame from pict into buf. |
|
3969 * The input picture should be |
|
3970 * stored using a specific format, namely avctx.pix_fmt. |
|
3971 * |
|
3972 * @param avctx the codec context |
|
3973 * @param[out] buf the output buffer for the bitstream of encoded frame |
|
3974 * @param[in] buf_size the size of the output buffer in bytes |
|
3975 * @param[in] pict the input picture to encode |
|
3976 * @return On error a negative value is returned, on success zero or the number |
|
3977 * of bytes used from the output buffer. |
|
3978 */ |
|
3979 attribute_deprecated |
|
3980 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
|
3981 const AVFrame *pict); |
|
3982 #endif |
|
3983 |
|
3984 /** |
|
3985 * Encode a frame of video. |
|
3986 * |
|
3987 * Takes input raw video data from frame and writes the next output packet, if |
|
3988 * available, to avpkt. The output packet does not necessarily contain data for |
|
3989 * the most recent frame, as encoders can delay and reorder input frames |
|
3990 * internally as needed. |
|
3991 * |
|
3992 * @param avctx codec context |
|
3993 * @param avpkt output AVPacket. |
|
3994 * The user can supply an output buffer by setting |
|
3995 * avpkt->data and avpkt->size prior to calling the |
|
3996 * function, but if the size of the user-provided data is not |
|
3997 * large enough, encoding will fail. All other AVPacket fields |
|
3998 * will be reset by the encoder using av_init_packet(). If |
|
3999 * avpkt->data is NULL, the encoder will allocate it. |
|
4000 * The encoder will set avpkt->size to the size of the |
|
4001 * output packet. The returned data (if any) belongs to the |
|
4002 * caller, he is responsible for freeing it. |
|
4003 * |
|
4004 * If this function fails or produces no output, avpkt will be |
|
4005 * freed using av_free_packet() (i.e. avpkt->destruct will be |
|
4006 * called to free the user supplied buffer). |
|
4007 * @param[in] frame AVFrame containing the raw video data to be encoded. |
|
4008 * May be NULL when flushing an encoder that has the |
|
4009 * CODEC_CAP_DELAY capability set. |
|
4010 * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the |
|
4011 * output packet is non-empty, and to 0 if it is |
|
4012 * empty. If the function returns an error, the |
|
4013 * packet can be assumed to be invalid, and the |
|
4014 * value of got_packet_ptr is undefined and should |
|
4015 * not be used. |
|
4016 * @return 0 on success, negative error code on failure |
|
4017 */ |
|
4018 int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, |
|
4019 const AVFrame *frame, int *got_packet_ptr); |
|
4020 |
|
4021 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
|
4022 const AVSubtitle *sub); |
|
4023 |
|
4024 |
|
4025 /** |
|
4026 * @} |
|
4027 */ |
|
4028 |
|
4029 #if FF_API_AVCODEC_RESAMPLE |
|
4030 /** |
|
4031 * @defgroup lavc_resample Audio resampling |
|
4032 * @ingroup libavc |
|
4033 * @deprecated use libavresample instead |
|
4034 * |
|
4035 * @{ |
|
4036 */ |
|
4037 struct ReSampleContext; |
|
4038 struct AVResampleContext; |
|
4039 |
|
4040 typedef struct ReSampleContext ReSampleContext; |
|
4041 |
|
4042 /** |
|
4043 * Initialize audio resampling context. |
|
4044 * |
|
4045 * @param output_channels number of output channels |
|
4046 * @param input_channels number of input channels |
|
4047 * @param output_rate output sample rate |
|
4048 * @param input_rate input sample rate |
|
4049 * @param sample_fmt_out requested output sample format |
|
4050 * @param sample_fmt_in input sample format |
|
4051 * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency |
|
4052 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank |
|
4053 * @param linear if 1 then the used FIR filter will be linearly interpolated |
|
4054 between the 2 closest, if 0 the closest will be used |
|
4055 * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate |
|
4056 * @return allocated ReSampleContext, NULL if error occurred |
|
4057 */ |
|
4058 attribute_deprecated |
|
4059 ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, |
|
4060 int output_rate, int input_rate, |
|
4061 enum AVSampleFormat sample_fmt_out, |
|
4062 enum AVSampleFormat sample_fmt_in, |
|
4063 int filter_length, int log2_phase_count, |
|
4064 int linear, double cutoff); |
|
4065 |
|
4066 attribute_deprecated |
|
4067 int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); |
|
4068 |
|
4069 /** |
|
4070 * Free resample context. |
|
4071 * |
|
4072 * @param s a non-NULL pointer to a resample context previously |
|
4073 * created with av_audio_resample_init() |
|
4074 */ |
|
4075 attribute_deprecated |
|
4076 void audio_resample_close(ReSampleContext *s); |
|
4077 |
|
4078 |
|
4079 /** |
|
4080 * Initialize an audio resampler. |
|
4081 * Note, if either rate is not an integer then simply scale both rates up so they are. |
|
4082 * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq |
|
4083 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank |
|
4084 * @param linear If 1 then the used FIR filter will be linearly interpolated |
|
4085 between the 2 closest, if 0 the closest will be used |
|
4086 * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate |
|
4087 */ |
|
4088 attribute_deprecated |
|
4089 struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); |
|
4090 |
|
4091 /** |
|
4092 * Resample an array of samples using a previously configured context. |
|
4093 * @param src an array of unconsumed samples |
|
4094 * @param consumed the number of samples of src which have been consumed are returned here |
|
4095 * @param src_size the number of unconsumed samples available |
|
4096 * @param dst_size the amount of space in samples available in dst |
|
4097 * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. |
|
4098 * @return the number of samples written in dst or -1 if an error occurred |
|
4099 */ |
|
4100 attribute_deprecated |
|
4101 int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); |
|
4102 |
|
4103 |
|
4104 /** |
|
4105 * Compensate samplerate/timestamp drift. The compensation is done by changing |
|
4106 * the resampler parameters, so no audible clicks or similar distortions occur |
|
4107 * @param compensation_distance distance in output samples over which the compensation should be performed |
|
4108 * @param sample_delta number of output samples which should be output less |
|
4109 * |
|
4110 * example: av_resample_compensate(c, 10, 500) |
|
4111 * here instead of 510 samples only 500 samples would be output |
|
4112 * |
|
4113 * note, due to rounding the actual compensation might be slightly different, |
|
4114 * especially if the compensation_distance is large and the in_rate used during init is small |
|
4115 */ |
|
4116 attribute_deprecated |
|
4117 void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); |
|
4118 attribute_deprecated |
|
4119 void av_resample_close(struct AVResampleContext *c); |
|
4120 |
|
4121 /** |
|
4122 * @} |
|
4123 */ |
|
4124 #endif |
|
4125 |
|
4126 /** |
|
4127 * @addtogroup lavc_picture |
|
4128 * @{ |
|
4129 */ |
|
4130 |
|
4131 /** |
|
4132 * Allocate memory for a picture. Call avpicture_free() to free it. |
|
4133 * |
|
4134 * @see avpicture_fill() |
|
4135 * |
|
4136 * @param picture the picture to be filled in |
|
4137 * @param pix_fmt the format of the picture |
|
4138 * @param width the width of the picture |
|
4139 * @param height the height of the picture |
|
4140 * @return zero if successful, a negative value if not |
|
4141 */ |
|
4142 int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height); |
|
4143 |
|
4144 /** |
|
4145 * Free a picture previously allocated by avpicture_alloc(). |
|
4146 * The data buffer used by the AVPicture is freed, but the AVPicture structure |
|
4147 * itself is not. |
|
4148 * |
|
4149 * @param picture the AVPicture to be freed |
|
4150 */ |
|
4151 void avpicture_free(AVPicture *picture); |
|
4152 |
|
4153 /** |
|
4154 * Fill in the AVPicture fields. |
|
4155 * The fields of the given AVPicture are filled in by using the 'ptr' address |
|
4156 * which points to the image data buffer. Depending on the specified picture |
|
4157 * format, one or multiple image data pointers and line sizes will be set. |
|
4158 * If a planar format is specified, several pointers will be set pointing to |
|
4159 * the different picture planes and the line sizes of the different planes |
|
4160 * will be stored in the lines_sizes array. |
|
4161 * Call with ptr == NULL to get the required size for the ptr buffer. |
|
4162 * |
|
4163 * To allocate the buffer and fill in the AVPicture fields in one call, |
|
4164 * use avpicture_alloc(). |
|
4165 * |
|
4166 * @param picture AVPicture whose fields are to be filled in |
|
4167 * @param ptr Buffer which will contain or contains the actual image data |
|
4168 * @param pix_fmt The format in which the picture data is stored. |
|
4169 * @param width the width of the image in pixels |
|
4170 * @param height the height of the image in pixels |
|
4171 * @return size of the image data in bytes |
|
4172 */ |
|
4173 int avpicture_fill(AVPicture *picture, uint8_t *ptr, |
|
4174 enum AVPixelFormat pix_fmt, int width, int height); |
|
4175 |
|
4176 /** |
|
4177 * Copy pixel data from an AVPicture into a buffer. |
|
4178 * The data is stored compactly, without any gaps for alignment or padding |
|
4179 * which may be applied by avpicture_fill(). |
|
4180 * |
|
4181 * @see avpicture_get_size() |
|
4182 * |
|
4183 * @param[in] src AVPicture containing image data |
|
4184 * @param[in] pix_fmt The format in which the picture data is stored. |
|
4185 * @param[in] width the width of the image in pixels. |
|
4186 * @param[in] height the height of the image in pixels. |
|
4187 * @param[out] dest A buffer into which picture data will be copied. |
|
4188 * @param[in] dest_size The size of 'dest'. |
|
4189 * @return The number of bytes written to dest, or a negative value (error code) on error. |
|
4190 */ |
|
4191 int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, |
|
4192 int width, int height, |
|
4193 unsigned char *dest, int dest_size); |
|
4194 |
|
4195 /** |
|
4196 * Calculate the size in bytes that a picture of the given width and height |
|
4197 * would occupy if stored in the given picture format. |
|
4198 * Note that this returns the size of a compact representation as generated |
|
4199 * by avpicture_layout(), which can be smaller than the size required for e.g. |
|
4200 * avpicture_fill(). |
|
4201 * |
|
4202 * @param pix_fmt the given picture format |
|
4203 * @param width the width of the image |
|
4204 * @param height the height of the image |
|
4205 * @return Image data size in bytes or -1 on error (e.g. too large dimensions). |
|
4206 */ |
|
4207 int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); |
|
4208 |
|
4209 /** |
|
4210 * deinterlace - if not supported return -1 |
|
4211 */ |
|
4212 int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, |
|
4213 enum AVPixelFormat pix_fmt, int width, int height); |
|
4214 /** |
|
4215 * Copy image src to dst. Wraps av_picture_data_copy() above. |
|
4216 */ |
|
4217 void av_picture_copy(AVPicture *dst, const AVPicture *src, |
|
4218 enum AVPixelFormat pix_fmt, int width, int height); |
|
4219 |
|
4220 /** |
|
4221 * Crop image top and left side. |
|
4222 */ |
|
4223 int av_picture_crop(AVPicture *dst, const AVPicture *src, |
|
4224 enum AVPixelFormat pix_fmt, int top_band, int left_band); |
|
4225 |
|
4226 /** |
|
4227 * Pad image. |
|
4228 */ |
|
4229 int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, |
|
4230 int padtop, int padbottom, int padleft, int padright, int *color); |
|
4231 |
|
4232 /** |
|
4233 * @} |
|
4234 */ |
|
4235 |
|
4236 /** |
|
4237 * @defgroup lavc_misc Utility functions |
|
4238 * @ingroup libavc |
|
4239 * |
|
4240 * Miscellaneous utility functions related to both encoding and decoding |
|
4241 * (or neither). |
|
4242 * @{ |
|
4243 */ |
|
4244 |
|
4245 /** |
|
4246 * @defgroup lavc_misc_pixfmt Pixel formats |
|
4247 * |
|
4248 * Functions for working with pixel formats. |
|
4249 * @{ |
|
4250 */ |
|
4251 |
|
4252 void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift); |
|
4253 |
|
4254 /** |
|
4255 * Return a value representing the fourCC code associated to the |
|
4256 * pixel format pix_fmt, or 0 if no associated fourCC code can be |
|
4257 * found. |
|
4258 */ |
|
4259 unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); |
|
4260 |
|
4261 #define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ |
|
4262 #define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ |
|
4263 #define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ |
|
4264 #define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ |
|
4265 #define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ |
|
4266 #define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ |
|
4267 |
|
4268 /** |
|
4269 * Compute what kind of losses will occur when converting from one specific |
|
4270 * pixel format to another. |
|
4271 * When converting from one pixel format to another, information loss may occur. |
|
4272 * For example, when converting from RGB24 to GRAY, the color information will |
|
4273 * be lost. Similarly, other losses occur when converting from some formats to |
|
4274 * other formats. These losses can involve loss of chroma, but also loss of |
|
4275 * resolution, loss of color depth, loss due to the color space conversion, loss |
|
4276 * of the alpha bits or loss due to color quantization. |
|
4277 * avcodec_get_fix_fmt_loss() informs you about the various types of losses |
|
4278 * which will occur when converting from one pixel format to another. |
|
4279 * |
|
4280 * @param[in] dst_pix_fmt destination pixel format |
|
4281 * @param[in] src_pix_fmt source pixel format |
|
4282 * @param[in] has_alpha Whether the source pixel format alpha channel is used. |
|
4283 * @return Combination of flags informing you what kind of losses will occur. |
|
4284 */ |
|
4285 int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, |
|
4286 int has_alpha); |
|
4287 |
|
4288 #if FF_API_FIND_BEST_PIX_FMT |
|
4289 /** |
|
4290 * @deprecated use avcodec_find_best_pix_fmt2() instead. |
|
4291 * |
|
4292 * Find the best pixel format to convert to given a certain source pixel |
|
4293 * format. When converting from one pixel format to another, information loss |
|
4294 * may occur. For example, when converting from RGB24 to GRAY, the color |
|
4295 * information will be lost. Similarly, other losses occur when converting from |
|
4296 * some formats to other formats. avcodec_find_best_pix_fmt() searches which of |
|
4297 * the given pixel formats should be used to suffer the least amount of loss. |
|
4298 * The pixel formats from which it chooses one, are determined by the |
|
4299 * pix_fmt_mask parameter. |
|
4300 * |
|
4301 * @code |
|
4302 * src_pix_fmt = AV_PIX_FMT_YUV420P; |
|
4303 * pix_fmt_mask = (1 << AV_PIX_FMT_YUV422P) || (1 << AV_PIX_FMT_RGB24); |
|
4304 * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss); |
|
4305 * @endcode |
|
4306 * |
|
4307 * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from |
|
4308 * @param[in] src_pix_fmt source pixel format |
|
4309 * @param[in] has_alpha Whether the source pixel format alpha channel is used. |
|
4310 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. |
|
4311 * @return The best pixel format to convert to or -1 if none was found. |
|
4312 */ |
|
4313 attribute_deprecated |
|
4314 enum AVPixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum AVPixelFormat src_pix_fmt, |
|
4315 int has_alpha, int *loss_ptr); |
|
4316 #endif /* FF_API_FIND_BEST_PIX_FMT */ |
|
4317 |
|
4318 /** |
|
4319 * Find the best pixel format to convert to given a certain source pixel |
|
4320 * format. When converting from one pixel format to another, information loss |
|
4321 * may occur. For example, when converting from RGB24 to GRAY, the color |
|
4322 * information will be lost. Similarly, other losses occur when converting from |
|
4323 * some formats to other formats. avcodec_find_best_pix_fmt2() searches which of |
|
4324 * the given pixel formats should be used to suffer the least amount of loss. |
|
4325 * The pixel formats from which it chooses one, are determined by the |
|
4326 * pix_fmt_list parameter. |
|
4327 * |
|
4328 * |
|
4329 * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from |
|
4330 * @param[in] src_pix_fmt source pixel format |
|
4331 * @param[in] has_alpha Whether the source pixel format alpha channel is used. |
|
4332 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. |
|
4333 * @return The best pixel format to convert to or -1 if none was found. |
|
4334 */ |
|
4335 enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list, |
|
4336 enum AVPixelFormat src_pix_fmt, |
|
4337 int has_alpha, int *loss_ptr); |
|
4338 |
|
4339 enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); |
|
4340 |
|
4341 /** |
|
4342 * @} |
|
4343 */ |
|
4344 |
|
4345 void avcodec_set_dimensions(AVCodecContext *s, int width, int height); |
|
4346 |
|
4347 /** |
|
4348 * Put a string representing the codec tag codec_tag in buf. |
|
4349 * |
|
4350 * @param buf_size size in bytes of buf |
|
4351 * @return the length of the string that would have been generated if |
|
4352 * enough space had been available, excluding the trailing null |
|
4353 */ |
|
4354 size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); |
|
4355 |
|
4356 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); |
|
4357 |
|
4358 /** |
|
4359 * Return a name for the specified profile, if available. |
|
4360 * |
|
4361 * @param codec the codec that is searched for the given profile |
|
4362 * @param profile the profile value for which a name is requested |
|
4363 * @return A name for the profile if found, NULL otherwise. |
|
4364 */ |
|
4365 const char *av_get_profile_name(const AVCodec *codec, int profile); |
|
4366 |
|
4367 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); |
|
4368 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); |
|
4369 //FIXME func typedef |
|
4370 |
|
4371 /** |
|
4372 * Fill audio frame data and linesize. |
|
4373 * AVFrame extended_data channel pointers are allocated if necessary for |
|
4374 * planar audio. |
|
4375 * |
|
4376 * @param frame the AVFrame |
|
4377 * frame->nb_samples must be set prior to calling the |
|
4378 * function. This function fills in frame->data, |
|
4379 * frame->extended_data, frame->linesize[0]. |
|
4380 * @param nb_channels channel count |
|
4381 * @param sample_fmt sample format |
|
4382 * @param buf buffer to use for frame data |
|
4383 * @param buf_size size of buffer |
|
4384 * @param align plane size sample alignment (0 = default) |
|
4385 * @return 0 on success, negative error code on failure |
|
4386 */ |
|
4387 int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, |
|
4388 enum AVSampleFormat sample_fmt, const uint8_t *buf, |
|
4389 int buf_size, int align); |
|
4390 |
|
4391 /** |
|
4392 * Flush buffers, should be called when seeking or when switching to a different stream. |
|
4393 */ |
|
4394 void avcodec_flush_buffers(AVCodecContext *avctx); |
|
4395 |
|
4396 void avcodec_default_free_buffers(AVCodecContext *s); |
|
4397 |
|
4398 /** |
|
4399 * Return codec bits per sample. |
|
4400 * |
|
4401 * @param[in] codec_id the codec |
|
4402 * @return Number of bits per sample or zero if unknown for the given codec. |
|
4403 */ |
|
4404 int av_get_bits_per_sample(enum AVCodecID codec_id); |
|
4405 |
|
4406 /** |
|
4407 * Return codec bits per sample. |
|
4408 * Only return non-zero if the bits per sample is exactly correct, not an |
|
4409 * approximation. |
|
4410 * |
|
4411 * @param[in] codec_id the codec |
|
4412 * @return Number of bits per sample or zero if unknown for the given codec. |
|
4413 */ |
|
4414 int av_get_exact_bits_per_sample(enum AVCodecID codec_id); |
|
4415 |
|
4416 /** |
|
4417 * Return audio frame duration. |
|
4418 * |
|
4419 * @param avctx codec context |
|
4420 * @param frame_bytes size of the frame, or 0 if unknown |
|
4421 * @return frame duration, in samples, if known. 0 if not able to |
|
4422 * determine. |
|
4423 */ |
|
4424 int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); |
|
4425 |
|
4426 |
|
4427 typedef struct AVBitStreamFilterContext { |
|
4428 void *priv_data; |
|
4429 struct AVBitStreamFilter *filter; |
|
4430 AVCodecParserContext *parser; |
|
4431 struct AVBitStreamFilterContext *next; |
|
4432 } AVBitStreamFilterContext; |
|
4433 |
|
4434 |
|
4435 typedef struct AVBitStreamFilter { |
|
4436 const char *name; |
|
4437 int priv_data_size; |
|
4438 int (*filter)(AVBitStreamFilterContext *bsfc, |
|
4439 AVCodecContext *avctx, const char *args, |
|
4440 uint8_t **poutbuf, int *poutbuf_size, |
|
4441 const uint8_t *buf, int buf_size, int keyframe); |
|
4442 void (*close)(AVBitStreamFilterContext *bsfc); |
|
4443 struct AVBitStreamFilter *next; |
|
4444 } AVBitStreamFilter; |
|
4445 |
|
4446 void av_register_bitstream_filter(AVBitStreamFilter *bsf); |
|
4447 AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); |
|
4448 int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, |
|
4449 AVCodecContext *avctx, const char *args, |
|
4450 uint8_t **poutbuf, int *poutbuf_size, |
|
4451 const uint8_t *buf, int buf_size, int keyframe); |
|
4452 void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); |
|
4453 |
|
4454 AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); |
|
4455 |
|
4456 /* memory */ |
|
4457 |
|
4458 /** |
|
4459 * Reallocate the given block if it is not large enough, otherwise do nothing. |
|
4460 * |
|
4461 * @see av_realloc |
|
4462 */ |
|
4463 void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); |
|
4464 |
|
4465 /** |
|
4466 * Allocate a buffer, reusing the given one if large enough. |
|
4467 * |
|
4468 * Contrary to av_fast_realloc the current buffer contents might not be |
|
4469 * preserved and on error the old buffer is freed, thus no special |
|
4470 * handling to avoid memleaks is necessary. |
|
4471 * |
|
4472 * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer |
|
4473 * @param size size of the buffer *ptr points to |
|
4474 * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and |
|
4475 * *size 0 if an error occurred. |
|
4476 */ |
|
4477 void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); |
|
4478 |
|
4479 /** |
|
4480 * Allocate a buffer with padding, reusing the given one if large enough. |
|
4481 * |
|
4482 * Same behaviour av_fast_malloc but the buffer has additional |
|
4483 * FF_INPUT_PADDING_SIZE at the end which will always memset to 0. |
|
4484 * |
|
4485 */ |
|
4486 void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); |
|
4487 |
|
4488 /** |
|
4489 * Encode extradata length to a buffer. Used by xiph codecs. |
|
4490 * |
|
4491 * @param s buffer to write to; must be at least (v/255+1) bytes long |
|
4492 * @param v size of extradata in bytes |
|
4493 * @return number of bytes written to the buffer. |
|
4494 */ |
|
4495 unsigned int av_xiphlacing(unsigned char *s, unsigned int v); |
|
4496 |
|
4497 /** |
|
4498 * Log a generic warning message about a missing feature. This function is |
|
4499 * intended to be used internally by Libav (libavcodec, libavformat, etc.) |
|
4500 * only, and would normally not be used by applications. |
|
4501 * @param[in] avc a pointer to an arbitrary struct of which the first field is |
|
4502 * a pointer to an AVClass struct |
|
4503 * @param[in] feature string containing the name of the missing feature |
|
4504 * @param[in] want_sample indicates if samples are wanted which exhibit this feature. |
|
4505 * If want_sample is non-zero, additional verbage will be added to the log |
|
4506 * message which tells the user how to report samples to the development |
|
4507 * mailing list. |
|
4508 */ |
|
4509 void av_log_missing_feature(void *avc, const char *feature, int want_sample); |
|
4510 |
|
4511 /** |
|
4512 * Log a generic warning message asking for a sample. This function is |
|
4513 * intended to be used internally by Libav (libavcodec, libavformat, etc.) |
|
4514 * only, and would normally not be used by applications. |
|
4515 * @param[in] avc a pointer to an arbitrary struct of which the first field is |
|
4516 * a pointer to an AVClass struct |
|
4517 * @param[in] msg string containing an optional message, or NULL if no message |
|
4518 */ |
|
4519 void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); |
|
4520 |
|
4521 /** |
|
4522 * Register the hardware accelerator hwaccel. |
|
4523 */ |
|
4524 void av_register_hwaccel(AVHWAccel *hwaccel); |
|
4525 |
|
4526 /** |
|
4527 * If hwaccel is NULL, returns the first registered hardware accelerator, |
|
4528 * if hwaccel is non-NULL, returns the next registered hardware accelerator |
|
4529 * after hwaccel, or NULL if hwaccel is the last one. |
|
4530 */ |
|
4531 AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); |
|
4532 |
|
4533 |
|
4534 /** |
|
4535 * Lock operation used by lockmgr |
|
4536 */ |
|
4537 enum AVLockOp { |
|
4538 AV_LOCK_CREATE, ///< Create a mutex |
|
4539 AV_LOCK_OBTAIN, ///< Lock the mutex |
|
4540 AV_LOCK_RELEASE, ///< Unlock the mutex |
|
4541 AV_LOCK_DESTROY, ///< Free mutex resources |
|
4542 }; |
|
4543 |
|
4544 /** |
|
4545 * Register a user provided lock manager supporting the operations |
|
4546 * specified by AVLockOp. mutex points to a (void *) where the |
|
4547 * lockmgr should store/get a pointer to a user allocated mutex. It's |
|
4548 * NULL upon AV_LOCK_CREATE and != NULL for all other ops. |
|
4549 * |
|
4550 * @param cb User defined callback. Note: Libav may invoke calls to this |
|
4551 * callback during the call to av_lockmgr_register(). |
|
4552 * Thus, the application must be prepared to handle that. |
|
4553 * If cb is set to NULL the lockmgr will be unregistered. |
|
4554 * Also note that during unregistration the previously registered |
|
4555 * lockmgr callback may also be invoked. |
|
4556 */ |
|
4557 int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); |
|
4558 |
|
4559 /** |
|
4560 * Get the type of the given codec. |
|
4561 */ |
|
4562 enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); |
|
4563 |
|
4564 /** |
|
4565 * @return a positive value if s is open (i.e. avcodec_open2() was called on it |
|
4566 * with no corresponding avcodec_close()), 0 otherwise. |
|
4567 */ |
|
4568 int avcodec_is_open(AVCodecContext *s); |
|
4569 |
|
4570 /** |
|
4571 * @return a non-zero number if codec is an encoder, zero otherwise |
|
4572 */ |
|
4573 int av_codec_is_encoder(const AVCodec *codec); |
|
4574 |
|
4575 /** |
|
4576 * @return a non-zero number if codec is a decoder, zero otherwise |
|
4577 */ |
|
4578 int av_codec_is_decoder(const AVCodec *codec); |
|
4579 |
|
4580 /** |
|
4581 * @return descriptor for given codec ID or NULL if no descriptor exists. |
|
4582 */ |
|
4583 const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); |
|
4584 |
|
4585 /** |
|
4586 * Iterate over all codec descriptors known to libavcodec. |
|
4587 * |
|
4588 * @param prev previous descriptor. NULL to get the first descriptor. |
|
4589 * |
|
4590 * @return next descriptor or NULL after the last descriptor |
|
4591 */ |
|
4592 const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); |
|
4593 |
|
4594 /** |
|
4595 * @return codec descriptor with the given name or NULL if no such descriptor |
|
4596 * exists. |
|
4597 */ |
|
4598 const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); |
|
4599 |
|
4600 /** |
|
4601 * @} |
|
4602 */ |
|
4603 |
|
4604 #endif /* AVCODEC_AVCODEC_H */ |