FFmpeg
avcodec.h
Go to the documentation of this file.
1 /*
2  * copyright (c) 2001 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg 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  * FFmpeg 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 FFmpeg; 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  * @ingroup libavc
27  * Libavcodec external API header
28  */
29 
30 #include "libavutil/samplefmt.h"
31 #include "libavutil/attributes.h"
32 #include "libavutil/avutil.h"
33 #include "libavutil/buffer.h"
35 #include "libavutil/dict.h"
36 #include "libavutil/frame.h"
37 #include "libavutil/log.h"
38 #include "libavutil/pixfmt.h"
39 #include "libavutil/rational.h"
40 
41 #include "codec.h"
42 #include "codec_id.h"
43 #include "defs.h"
44 #include "packet.h"
45 #include "version_major.h"
46 #ifndef HAVE_AV_CONFIG_H
47 /* When included as part of the ffmpeg build, only include the major version
48  * to avoid unnecessary rebuilds. When included externally, keep including
49  * the full version information. */
50 #include "version.h"
51 
52 #include "codec_desc.h"
53 #include "codec_par.h"
54 #endif
55 
56 struct AVCodecParameters;
57 
58 /**
59  * @defgroup libavc libavcodec
60  * Encoding/Decoding Library
61  *
62  * @{
63  *
64  * @defgroup lavc_decoding Decoding
65  * @{
66  * @}
67  *
68  * @defgroup lavc_encoding Encoding
69  * @{
70  * @}
71  *
72  * @defgroup lavc_codec Codecs
73  * @{
74  * @defgroup lavc_codec_native Native Codecs
75  * @{
76  * @}
77  * @defgroup lavc_codec_wrappers External library wrappers
78  * @{
79  * @}
80  * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge
81  * @{
82  * @}
83  * @}
84  * @defgroup lavc_internal Internal
85  * @{
86  * @}
87  * @}
88  */
89 
90 /**
91  * @ingroup libavc
92  * @defgroup lavc_encdec send/receive encoding and decoding API overview
93  * @{
94  *
95  * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/
96  * avcodec_receive_packet() functions provide an encode/decode API, which
97  * decouples input and output.
98  *
99  * The API is very similar for encoding/decoding and audio/video, and works as
100  * follows:
101  * - Set up and open the AVCodecContext as usual.
102  * - Send valid input:
103  * - For decoding, call avcodec_send_packet() to give the decoder raw
104  * compressed data in an AVPacket.
105  * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame
106  * containing uncompressed audio or video.
107  *
108  * In both cases, it is recommended that AVPackets and AVFrames are
109  * refcounted, or libavcodec might have to copy the input data. (libavformat
110  * always returns refcounted AVPackets, and av_frame_get_buffer() allocates
111  * refcounted AVFrames.)
112  * - Receive output in a loop. Periodically call one of the avcodec_receive_*()
113  * functions and process their output:
114  * - For decoding, call avcodec_receive_frame(). On success, it will return
115  * an AVFrame containing uncompressed audio or video data.
116  * - For encoding, call avcodec_receive_packet(). On success, it will return
117  * an AVPacket with a compressed frame.
118  *
119  * Repeat this call until it returns AVERROR(EAGAIN) or an error. The
120  * AVERROR(EAGAIN) return value means that new input data is required to
121  * return new output. In this case, continue with sending input. For each
122  * input frame/packet, the codec will typically return 1 output frame/packet,
123  * but it can also be 0 or more than 1.
124  *
125  * At the beginning of decoding or encoding, the codec might accept multiple
126  * input frames/packets without returning a frame, until its internal buffers
127  * are filled. This situation is handled transparently if you follow the steps
128  * outlined above.
129  *
130  * In theory, sending input can result in EAGAIN - this should happen only if
131  * not all output was received. You can use this to structure alternative decode
132  * or encode loops other than the one suggested above. For example, you could
133  * try sending new input on each iteration, and try to receive output if that
134  * returns EAGAIN.
135  *
136  * End of stream situations. These require "flushing" (aka draining) the codec,
137  * as the codec might buffer multiple frames or packets internally for
138  * performance or out of necessity (consider B-frames).
139  * This is handled as follows:
140  * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding)
141  * or avcodec_send_frame() (encoding) functions. This will enter draining
142  * mode.
143  * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet()
144  * (encoding) in a loop until AVERROR_EOF is returned. The functions will
145  * not return AVERROR(EAGAIN), unless you forgot to enter draining mode.
146  * - Before decoding can be resumed again, the codec has to be reset with
147  * avcodec_flush_buffers().
148  *
149  * Using the API as outlined above is highly recommended. But it is also
150  * possible to call functions outside of this rigid schema. For example, you can
151  * call avcodec_send_packet() repeatedly without calling
152  * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed
153  * until the codec's internal buffer has been filled up (which is typically of
154  * size 1 per output frame, after initial input), and then reject input with
155  * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to
156  * read at least some output.
157  *
158  * Not all codecs will follow a rigid and predictable dataflow; the only
159  * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on
160  * one end implies that a receive/send call on the other end will succeed, or
161  * at least will not fail with AVERROR(EAGAIN). In general, no codec will
162  * permit unlimited buffering of input or output.
163  *
164  * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This
165  * would be an invalid state, which could put the codec user into an endless
166  * loop. The API has no concept of time either: it cannot happen that trying to
167  * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second
168  * later accepts the packet (with no other receive/flush API calls involved).
169  * The API is a strict state machine, and the passage of time is not supposed
170  * to influence it. Some timing-dependent behavior might still be deemed
171  * acceptable in certain cases. But it must never result in both send/receive
172  * returning EAGAIN at the same time at any point. It must also absolutely be
173  * avoided that the current state is "unstable" and can "flip-flop" between
174  * the send/receive APIs allowing progress. For example, it's not allowed that
175  * the codec randomly decides that it actually wants to consume a packet now
176  * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an
177  * avcodec_send_packet() call.
178  * @}
179  */
180 
181 /**
182  * @defgroup lavc_core Core functions/structures.
183  * @ingroup libavc
184  *
185  * Basic definitions, functions for querying libavcodec capabilities,
186  * allocating core structures, etc.
187  * @{
188  */
189 
190 /**
191  * @ingroup lavc_encoding
192  */
193 typedef struct RcOverride{
196  int qscale; // If this is 0 then quality_factor will be used instead.
198 } RcOverride;
199 
200 /* encoding support
201  These flags can be passed in AVCodecContext.flags before initialization.
202  Note: Not everything is supported yet.
203 */
204 
205 /**
206  * Allow decoders to produce frames with data planes that are not aligned
207  * to CPU requirements (e.g. due to cropping).
208  */
209 #define AV_CODEC_FLAG_UNALIGNED (1 << 0)
210 /**
211  * Use fixed qscale.
212  */
213 #define AV_CODEC_FLAG_QSCALE (1 << 1)
214 /**
215  * 4 MV per MB allowed / advanced prediction for H.263.
216  */
217 #define AV_CODEC_FLAG_4MV (1 << 2)
218 /**
219  * Output even those frames that might be corrupted.
220  */
221 #define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3)
222 /**
223  * Use qpel MC.
224  */
225 #define AV_CODEC_FLAG_QPEL (1 << 4)
226 /**
227  * Request the encoder to output reconstructed frames, i.e.\ frames that would
228  * be produced by decoding the encoded bitstream. These frames may be retrieved
229  * by calling avcodec_receive_frame() immediately after a successful call to
230  * avcodec_receive_packet().
231  *
232  * Should only be used with encoders flagged with the
233  * @ref AV_CODEC_CAP_ENCODER_RECON_FRAME capability.
234  *
235  * @note
236  * Each reconstructed frame returned by the encoder corresponds to the last
237  * encoded packet, i.e. the frames are returned in coded order rather than
238  * presentation order.
239  *
240  * @note
241  * Frame parameters (like pixel format or dimensions) do not have to match the
242  * AVCodecContext values. Make sure to use the values from the returned frame.
243  */
244 #define AV_CODEC_FLAG_RECON_FRAME (1 << 6)
245 /**
246  * @par decoding
247  * Request the decoder to propagate each packet's AVPacket.opaque and
248  * AVPacket.opaque_ref to its corresponding output AVFrame.
249  *
250  * @par encoding:
251  * Request the encoder to propagate each frame's AVFrame.opaque and
252  * AVFrame.opaque_ref values to its corresponding output AVPacket.
253  *
254  * @par
255  * May only be set on encoders that have the
256  * @ref AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability flag.
257  *
258  * @note
259  * While in typical cases one input frame produces exactly one output packet
260  * (perhaps after a delay), in general the mapping of frames to packets is
261  * M-to-N, so
262  * - Any number of input frames may be associated with any given output packet.
263  * This includes zero - e.g. some encoders may output packets that carry only
264  * metadata about the whole stream.
265  * - A given input frame may be associated with any number of output packets.
266  * Again this includes zero - e.g. some encoders may drop frames under certain
267  * conditions.
268  * .
269  * This implies that when using this flag, the caller must NOT assume that
270  * - a given input frame's opaques will necessarily appear on some output packet;
271  * - every output packet will have some non-NULL opaque value.
272  * .
273  * When an output packet contains multiple frames, the opaque values will be
274  * taken from the first of those.
275  *
276  * @note
277  * The converse holds for decoders, with frames and packets switched.
278  */
279 #define AV_CODEC_FLAG_COPY_OPAQUE (1 << 7)
280 /**
281  * Signal to the encoder that the values of AVFrame.duration are valid and
282  * should be used (typically for transferring them to output packets).
283  *
284  * If this flag is not set, frame durations are ignored.
285  */
286 #define AV_CODEC_FLAG_FRAME_DURATION (1 << 8)
287 /**
288  * Use internal 2pass ratecontrol in first pass mode.
289  */
290 #define AV_CODEC_FLAG_PASS1 (1 << 9)
291 /**
292  * Use internal 2pass ratecontrol in second pass mode.
293  */
294 #define AV_CODEC_FLAG_PASS2 (1 << 10)
295 /**
296  * loop filter.
297  */
298 #define AV_CODEC_FLAG_LOOP_FILTER (1 << 11)
299 /**
300  * Only decode/encode grayscale.
301  */
302 #define AV_CODEC_FLAG_GRAY (1 << 13)
303 /**
304  * error[?] variables will be set during encoding.
305  */
306 #define AV_CODEC_FLAG_PSNR (1 << 15)
307 /**
308  * Use interlaced DCT.
309  */
310 #define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18)
311 /**
312  * Force low delay.
313  */
314 #define AV_CODEC_FLAG_LOW_DELAY (1 << 19)
315 /**
316  * Place global headers in extradata instead of every keyframe.
317  */
318 #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
319 /**
320  * Use only bitexact stuff (except (I)DCT).
321  */
322 #define AV_CODEC_FLAG_BITEXACT (1 << 23)
323 /* Fx : Flag for H.263+ extra options */
324 /**
325  * H.263 advanced intra coding / MPEG-4 AC prediction
326  */
327 #define AV_CODEC_FLAG_AC_PRED (1 << 24)
328 /**
329  * interlaced motion estimation
330  */
331 #define AV_CODEC_FLAG_INTERLACED_ME (1 << 29)
332 #define AV_CODEC_FLAG_CLOSED_GOP (1U << 31)
333 
334 /**
335  * Allow non spec compliant speedup tricks.
336  */
337 #define AV_CODEC_FLAG2_FAST (1 << 0)
338 /**
339  * Skip bitstream encoding.
340  */
341 #define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2)
342 /**
343  * Place global headers at every keyframe instead of in extradata.
344  */
345 #define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3)
346 
347 /**
348  * Input bitstream might be truncated at a packet boundaries
349  * instead of only at frame boundaries.
350  */
351 #define AV_CODEC_FLAG2_CHUNKS (1 << 15)
352 /**
353  * Discard cropping information from SPS.
354  */
355 #define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16)
356 /**
357  * Force audio encoders to use a fixed frame size.
358  */
359 #define AV_CODEC_FLAG2_FIXED_FRAME_SIZE (1 << 17)
360 
361 /**
362  * Show all frames before the first keyframe
363  */
364 #define AV_CODEC_FLAG2_SHOW_ALL (1 << 22)
365 /**
366  * Export motion vectors through frame side data
367  */
368 #define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28)
369 /**
370  * Do not skip samples and export skip information as frame side data
371  */
372 #define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29)
373 /**
374  * Do not reset ASS ReadOrder field on flush (subtitles decoding)
375  */
376 #define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30)
377 /**
378  * Generate/parse ICC profiles on encode/decode, as appropriate for the type of
379  * file. No effect on codecs which cannot contain embedded ICC profiles, or
380  * when compiled without support for lcms2.
381  */
382 #define AV_CODEC_FLAG2_ICC_PROFILES (1U << 31)
383 
384 /* Exported side data.
385  These flags can be passed in AVCodecContext.export_side_data before initialization.
386 */
387 /**
388  * Export motion vectors through frame side data
389  */
390 #define AV_CODEC_EXPORT_DATA_MVS (1 << 0)
391 /**
392  * Export encoder Producer Reference Time through packet side data
393  */
394 #define AV_CODEC_EXPORT_DATA_PRFT (1 << 1)
395 /**
396  * Decoding only.
397  * Export the AVVideoEncParams structure through frame side data.
398  */
399 #define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2)
400 /**
401  * Decoding only.
402  * Do not apply film grain, export it instead.
403  */
404 #define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3)
405 
406 /**
407  * Decoding only.
408  * Do not apply picture enhancement layers, export them instead.
409  */
410 #define AV_CODEC_EXPORT_DATA_ENHANCEMENTS (1 << 4)
411 
412 /**
413  * The decoder will keep a reference to the frame and may reuse it later.
414  */
415 #define AV_GET_BUFFER_FLAG_REF (1 << 0)
416 
417 /**
418  * The encoder will keep a reference to the packet and may reuse it later.
419  */
420 #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0)
421 
422 /**
423  * The decoder will bypass frame threading and return the next frame as soon as
424  * possible. Note that this may deliver frames earlier than the advertised
425  * `AVCodecContext.delay`. No effect when frame threading is disabled, or on
426  * encoding.
427  */
428 #define AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS (1 << 0)
429 
430 /**
431  * main external API structure.
432  * New fields can be added to the end with minor version bumps.
433  * Removal, reordering and changes to existing fields require a major
434  * version bump.
435  * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
436  * applications.
437  * The name string for AVOptions options matches the associated command line
438  * parameter name and can be found in libavcodec/options_table.h
439  * The AVOption/command line parameter names differ in some cases from the C
440  * structure field names for historic reasons or brevity.
441  * sizeof(AVCodecContext) must not be used outside libav*.
442  */
443 typedef struct AVCodecContext {
444  /**
445  * information on struct for av_log
446  * - set by avcodec_alloc_context3
447  */
450 
451  enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
452  const struct AVCodec *codec;
453  enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
454 
455  /**
456  * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
457  * This is used to work around some encoder bugs.
458  * A demuxer should set this to what is stored in the field used to identify the codec.
459  * If there are multiple such fields in a container then the demuxer should choose the one
460  * which maximizes the information about the used codec.
461  * If the codec tag field in a container is larger than 32 bits then the demuxer should
462  * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
463  * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
464  * first.
465  * - encoding: Set by user, if not then the default based on codec_id will be used.
466  * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
467  */
468  unsigned int codec_tag;
469 
470  void *priv_data;
471 
472  /**
473  * Private context used for internal data.
474  *
475  * Unlike priv_data, this is not codec-specific. It is used in general
476  * libavcodec functions.
477  */
478  struct AVCodecInternal *internal;
479 
480  /**
481  * Private data of the user, can be used to carry app specific stuff.
482  * - encoding: Set by user.
483  * - decoding: Set by user.
484  */
485  void *opaque;
486 
487  /**
488  * the average bitrate
489  * - encoding: Set by user; unused for constant quantizer encoding.
490  * - decoding: Set by user, may be overwritten by libavcodec
491  * if this info is available in the stream
492  */
494 
495  /**
496  * AV_CODEC_FLAG_*.
497  * - encoding: Set by user.
498  * - decoding: Set by user.
499  */
500  int flags;
501 
502  /**
503  * AV_CODEC_FLAG2_*
504  * - encoding: Set by user.
505  * - decoding: Set by user.
506  */
507  int flags2;
508 
509  /**
510  * Out-of-band global headers that may be used by some codecs.
511  *
512  * - decoding: Should be set by the caller when available (typically from a
513  * demuxer) before opening the decoder; some decoders require this to be
514  * set and will fail to initialize otherwise.
515  *
516  * The array must be allocated with the av_malloc() family of functions;
517  * allocated size must be at least AV_INPUT_BUFFER_PADDING_SIZE bytes
518  * larger than extradata_size.
519  *
520  * - encoding: May be set by the encoder in avcodec_open2() (possibly
521  * depending on whether the AV_CODEC_FLAG_GLOBAL_HEADER flag is set).
522  *
523  * After being set, the array is owned by the codec and freed in
524  * avcodec_free_context().
525  */
526  uint8_t *extradata;
528 
529  /**
530  * This is the fundamental unit of time (in seconds) in terms
531  * of which frame timestamps are represented. For fixed-fps content,
532  * timebase should be 1/framerate and timestamp increments should be
533  * identically 1.
534  * This often, but not always is the inverse of the frame rate or field rate
535  * for video. 1/time_base is not the average frame rate if the frame rate is not
536  * constant.
537  *
538  * Like containers, elementary streams also can store timestamps, 1/time_base
539  * is the unit in which these timestamps are specified.
540  * As example of such codec time base see ISO/IEC 14496-2:2001(E)
541  * vop_time_increment_resolution and fixed_vop_rate
542  * (fixed_vop_rate == 0 implies that it is different from the framerate)
543  *
544  * - encoding: MUST be set by user.
545  * - decoding: unused.
546  */
548 
549  /**
550  * Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed.
551  * - encoding: unused.
552  * - decoding: set by user.
553  */
555 
556  /**
557  * - decoding: For codecs that store a framerate value in the compressed
558  * bitstream, the decoder may export it here. { 0, 1} when
559  * unknown.
560  * - encoding: May be used to signal the framerate of CFR content to an
561  * encoder.
562  */
564 
565  /**
566  * Codec delay.
567  *
568  * Encoding: Number of frames delay there will be from the encoder input to
569  * the decoder output. (we assume the decoder matches the spec)
570  * Decoding: Number of frames delay in addition to what a standard decoder
571  * as specified in the spec would produce.
572  *
573  * Video:
574  * Number of frames the decoded output will be delayed relative to the
575  * encoded input.
576  *
577  * Audio:
578  * For encoding, this field is unused (see initial_padding).
579  *
580  * For decoding, this is the number of samples the decoder needs to
581  * output before the decoder's output is valid. When seeking, you should
582  * start decoding this many samples prior to your desired seek point.
583  *
584  * - encoding: Set by libavcodec.
585  * - decoding: Set by libavcodec.
586  */
587  int delay;
588 
589 
590  /* video only */
591  /**
592  * picture width / height.
593  *
594  * @note Those fields may not match the values of the last
595  * AVFrame output by avcodec_receive_frame() due frame
596  * reordering.
597  *
598  * - encoding: MUST be set by user.
599  * - decoding: May be set by the user before opening the decoder if known e.g.
600  * from the container. Some decoders will require the dimensions
601  * to be set by the caller. During decoding, the decoder may
602  * overwrite those values as required while parsing the data.
603  */
604  int width, height;
605 
606  /**
607  * Bitstream width / height, may be different from width/height e.g. when
608  * the decoded frame is cropped before being output or lowres is enabled.
609  *
610  * @note Those field may not match the value of the last
611  * AVFrame output by avcodec_receive_frame() due frame
612  * reordering.
613  *
614  * - encoding: unused
615  * - decoding: May be set by the user before opening the decoder if known
616  * e.g. from the container. During decoding, the decoder may
617  * overwrite those values as required while parsing the data.
618  */
620 
621  /**
622  * sample aspect ratio (0 if unknown)
623  * That is the width of a pixel divided by the height of the pixel.
624  * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
625  * - encoding: Set by user.
626  * - decoding: Set by libavcodec.
627  */
629 
630  /**
631  * Pixel format, see AV_PIX_FMT_xxx.
632  * May be set by the demuxer if known from headers.
633  * May be overridden by the decoder if it knows better.
634  *
635  * @note This field may not match the value of the last
636  * AVFrame output by avcodec_receive_frame() due frame
637  * reordering.
638  *
639  * - encoding: Set by user.
640  * - decoding: Set by user if known, overridden by libavcodec while
641  * parsing the data.
642  */
644 
645  /**
646  * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
647  * - encoding: unused.
648  * - decoding: Set by libavcodec before calling get_format()
649  */
651 
652  /**
653  * Chromaticity coordinates of the source primaries.
654  * - encoding: Set by user
655  * - decoding: Set by libavcodec
656  */
658 
659  /**
660  * Color Transfer Characteristic.
661  * - encoding: Set by user
662  * - decoding: Set by libavcodec
663  */
665 
666  /**
667  * YUV colorspace type.
668  * - encoding: Set by user
669  * - decoding: Set by libavcodec
670  */
672 
673  /**
674  * MPEG vs JPEG YUV range.
675  * - encoding: Set by user to override the default output color range value,
676  * If not specified, libavcodec sets the color range depending on the
677  * output format.
678  * - decoding: Set by libavcodec, can be set by the user to propagate the
679  * color range to components reading from the decoder context.
680  */
682 
683  /**
684  * This defines the location of chroma samples.
685  * - encoding: Set by user
686  * - decoding: Set by libavcodec
687  */
689 
690  /** Field order
691  * - encoding: set by libavcodec
692  * - decoding: Set by user.
693  */
695 
696  /**
697  * number of reference frames
698  * - encoding: Set by user.
699  * - decoding: Set by lavc.
700  */
701  int refs;
702 
703  /**
704  * Size of the frame reordering buffer in the decoder.
705  * For MPEG-2 it is 1 IPB or 0 low delay IP.
706  * - encoding: Set by libavcodec.
707  * - decoding: Set by libavcodec.
708  */
710 
711  /**
712  * slice flags
713  * - encoding: unused
714  * - decoding: Set by user.
715  */
717 #define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display
718 #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics)
719 #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
720 
721  /**
722  * If non NULL, 'draw_horiz_band' is called by the libavcodec
723  * decoder to draw a horizontal band. It improves cache usage. Not
724  * all codecs can do that. You must check the codec capabilities
725  * beforehand.
726  * When multithreading is used, it may be called from multiple threads
727  * at the same time; threads might draw different parts of the same AVFrame,
728  * or multiple AVFrames, and there is no guarantee that slices will be drawn
729  * in order.
730  * The function is also used by hardware acceleration APIs.
731  * It is called at least once during frame decoding to pass
732  * the data needed for hardware render.
733  * In that mode instead of pixel data, AVFrame points to
734  * a structure specific to the acceleration API. The application
735  * reads the structure and can change some fields to indicate progress
736  * or mark state.
737  * - encoding: unused
738  * - decoding: Set by user.
739  * @param height the height of the slice
740  * @param y the y position of the slice
741  * @param type 1->top field, 2->bottom field, 3->frame
742  * @param offset offset into the AVFrame.data from which the slice should be read
743  */
745  const AVFrame *src, int offset[AV_NUM_DATA_POINTERS],
746  int y, int type, int height);
747 
748  /**
749  * Callback to negotiate the pixel format. Decoding only, may be set by the
750  * caller before avcodec_open2().
751  *
752  * Called by some decoders to select the pixel format that will be used for
753  * the output frames. This is mainly used to set up hardware acceleration,
754  * then the provided format list contains the corresponding hwaccel pixel
755  * formats alongside the "software" one. The software pixel format may also
756  * be retrieved from \ref sw_pix_fmt.
757  *
758  * This callback will be called when the coded frame properties (such as
759  * resolution, pixel format, etc.) change and more than one output format is
760  * supported for those new properties. If a hardware pixel format is chosen
761  * and initialization for it fails, the callback may be called again
762  * immediately.
763  *
764  * This callback may be called from different threads if the decoder is
765  * multi-threaded, but not from more than one thread simultaneously.
766  *
767  * @param fmt list of formats which may be used in the current
768  * configuration, terminated by AV_PIX_FMT_NONE.
769  * @warning Behavior is undefined if the callback returns a value other
770  * than one of the formats in fmt or AV_PIX_FMT_NONE.
771  * @return the chosen format or AV_PIX_FMT_NONE
772  */
773  enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
774 
775  /**
776  * maximum number of B-frames between non-B-frames
777  * Note: The output will be delayed by max_b_frames+1 relative to the input.
778  * - encoding: Set by user.
779  * - decoding: unused
780  */
782 
783  /**
784  * qscale factor between IP and B-frames
785  * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
786  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
787  * - encoding: Set by user.
788  * - decoding: unused
789  */
791 
792  /**
793  * qscale offset between IP and B-frames
794  * - encoding: Set by user.
795  * - decoding: unused
796  */
798 
799  /**
800  * qscale factor between P- and I-frames
801  * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
802  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
803  * - encoding: Set by user.
804  * - decoding: unused
805  */
807 
808  /**
809  * qscale offset between P and I-frames
810  * - encoding: Set by user.
811  * - decoding: unused
812  */
814 
815  /**
816  * luminance masking (0-> disabled)
817  * - encoding: Set by user.
818  * - decoding: unused
819  */
821 
822  /**
823  * temporary complexity masking (0-> disabled)
824  * - encoding: Set by user.
825  * - decoding: unused
826  */
828 
829  /**
830  * spatial complexity masking (0-> disabled)
831  * - encoding: Set by user.
832  * - decoding: unused
833  */
835 
836  /**
837  * p block masking (0-> disabled)
838  * - encoding: Set by user.
839  * - decoding: unused
840  */
841  float p_masking;
842 
843  /**
844  * darkness masking (0-> disabled)
845  * - encoding: Set by user.
846  * - decoding: unused
847  */
849 
850  /**
851  * noise vs. sse weight for the nsse comparison function
852  * - encoding: Set by user.
853  * - decoding: unused
854  */
856 
857  /**
858  * motion estimation comparison function
859  * - encoding: Set by user.
860  * - decoding: unused
861  */
862  int me_cmp;
863  /**
864  * subpixel motion estimation comparison function
865  * - encoding: Set by user.
866  * - decoding: unused
867  */
869  /**
870  * macroblock comparison function (not supported yet)
871  * - encoding: Set by user.
872  * - decoding: unused
873  */
874  int mb_cmp;
875  /**
876  * interlaced DCT comparison function
877  * - encoding: Set by user.
878  * - decoding: unused
879  */
881 #define FF_CMP_SAD 0
882 #define FF_CMP_SSE 1
883 #define FF_CMP_SATD 2
884 #define FF_CMP_DCT 3
885 #define FF_CMP_PSNR 4
886 #define FF_CMP_BIT 5
887 #define FF_CMP_RD 6
888 #define FF_CMP_ZERO 7
889 #define FF_CMP_VSAD 8
890 #define FF_CMP_VSSE 9
891 #define FF_CMP_NSSE 10
892 #define FF_CMP_W53 11
893 #define FF_CMP_W97 12
894 #define FF_CMP_DCTMAX 13
895 #define FF_CMP_DCT264 14
896 #define FF_CMP_MEDIAN_SAD 15
897 #define FF_CMP_CHROMA 256
898 
899  /**
900  * ME diamond size & shape
901  * - encoding: Set by user.
902  * - decoding: unused
903  */
904  int dia_size;
905 
906  /**
907  * amount of previous MV predictors (2a+1 x 2a+1 square)
908  * - encoding: Set by user.
909  * - decoding: unused
910  */
912 
913  /**
914  * motion estimation prepass comparison function
915  * - encoding: Set by user.
916  * - decoding: unused
917  */
919 
920  /**
921  * ME prepass diamond size & shape
922  * - encoding: Set by user.
923  * - decoding: unused
924  */
926 
927  /**
928  * subpel ME quality
929  * - encoding: Set by user.
930  * - decoding: unused
931  */
933 
934  /**
935  * maximum motion estimation search range in subpel units
936  * If 0 then no limit.
937  *
938  * - encoding: Set by user.
939  * - decoding: unused
940  */
941  int me_range;
942 
943  /**
944  * macroblock decision mode
945  * - encoding: Set by user.
946  * - decoding: unused
947  */
949 #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp
950 #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits
951 #define FF_MB_DECISION_RD 2 ///< rate distortion
952 
953  /**
954  * custom intra quantization matrix
955  * Must be allocated with the av_malloc() family of functions, and will be freed in
956  * avcodec_free_context().
957  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
958  * - decoding: Set/allocated/freed by libavcodec.
959  */
960  uint16_t *intra_matrix;
961 
962  /**
963  * custom inter quantization matrix
964  * Must be allocated with the av_malloc() family of functions, and will be freed in
965  * avcodec_free_context().
966  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
967  * - decoding: Set/allocated/freed by libavcodec.
968  */
969  uint16_t *inter_matrix;
970 
971  /**
972  * custom intra quantization matrix
973  * - encoding: Set by user, can be NULL.
974  * - decoding: unused.
975  */
977 
978 #if FF_API_INTRA_DC_PRECISION
979  /**
980  * precision of the intra DC coefficient - 8
981  * - encoding: Set by user.
982  * - decoding: Set by libavcodec
983  * @deprecated Use the MPEG-2 encoder's private option "intra_dc_precision" instead.
984  */
987 #endif
988 
989  /**
990  * minimum MB Lagrange multiplier
991  * - encoding: Set by user.
992  * - decoding: unused
993  */
994  int mb_lmin;
995 
996  /**
997  * maximum MB Lagrange multiplier
998  * - encoding: Set by user.
999  * - decoding: unused
1000  */
1001  int mb_lmax;
1002 
1003  /**
1004  * - encoding: Set by user.
1005  * - decoding: unused
1006  */
1008 
1009  /**
1010  * minimum GOP size
1011  * - encoding: Set by user.
1012  * - decoding: unused
1013  */
1015 
1016  /**
1017  * the number of pictures in a group of pictures, or 0 for intra_only
1018  * - encoding: Set by user.
1019  * - decoding: unused
1020  */
1022 
1023  /**
1024  * Note: Value depends upon the compare function used for fullpel ME.
1025  * - encoding: Set by user.
1026  * - decoding: unused
1027  */
1029 
1030  /**
1031  * Number of slices.
1032  * Indicates number of picture subdivisions. Used for parallelized
1033  * decoding.
1034  * - encoding: Set by user
1035  * - decoding: unused
1036  */
1037  int slices;
1038 
1039  /* audio only */
1040  int sample_rate; ///< samples per second
1041 
1042  /**
1043  * audio sample format
1044  * - encoding: Set by user.
1045  * - decoding: Set by libavcodec.
1046  */
1047  enum AVSampleFormat sample_fmt; ///< sample format
1048 
1049  /**
1050  * Audio channel layout.
1051  * - encoding: must be set by the caller, to one of AVCodec.ch_layouts.
1052  * - decoding: may be set by the caller if known e.g. from the container.
1053  * The decoder can then override during decoding as needed.
1054  */
1056 
1057  /**
1058  * Number of samples per channel in an audio frame.
1059  *
1060  * - encoding: may be set by the user before calling avcodec_open2(), and
1061  * libavcodec may then overwrite it if needed. Each submitted frame
1062  * except the last must contain exactly frame_size samples per channel.
1063  * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, except
1064  * when AV_CODEC_FLAG2_FIXED_FRAME_SIZE is requested, then the
1065  * frame size is not restricted.
1066  * - decoding: may be set by some decoders to indicate constant frame size
1067  */
1069 
1070  /* The following data should not be initialized. */
1071  /**
1072  * number of bytes per packet if constant and known or 0
1073  * Used by some WAV based audio codecs.
1074  */
1076 
1077  /**
1078  * Audio cutoff bandwidth (0 means "automatic")
1079  * - encoding: Set by user.
1080  * - decoding: unused
1081  */
1082  int cutoff;
1083 
1084  /**
1085  * Type of service that the audio stream conveys.
1086  * - encoding: Set by user.
1087  * - decoding: Set by libavcodec.
1088  */
1090 
1091  /**
1092  * desired sample format
1093  * - encoding: Not used.
1094  * - decoding: Set by user.
1095  * Decoder will decode to this format if it can.
1096  */
1098 
1099  /**
1100  * Audio only. The number of "priming" samples (padding) inserted by the
1101  * encoder at the beginning of the audio. I.e. this number of leading
1102  * decoded samples must be discarded by the caller to get the original audio
1103  * without leading padding.
1104  *
1105  * - decoding: unused
1106  * - encoding: Set by libavcodec. The timestamps on the output packets are
1107  * adjusted by the encoder so that they always refer to the
1108  * first sample of the data actually contained in the packet,
1109  * including any added padding. E.g. if the timebase is
1110  * 1/samplerate and the timestamp of the first input sample is
1111  * 0, the timestamp of the first output packet will be
1112  * -initial_padding.
1113  */
1115 
1116  /**
1117  * Audio only. The amount of padding (in samples) appended by the encoder to
1118  * the end of the audio. I.e. this number of decoded samples must be
1119  * discarded by the caller from the end of the stream to get the original
1120  * audio without any trailing padding.
1121  *
1122  * - decoding: unused
1123  * - encoding: unused
1124  */
1126 
1127  /**
1128  * Number of samples to skip after a discontinuity
1129  * - decoding: unused
1130  * - encoding: set by libavcodec
1131  */
1133 
1134  /**
1135  * This callback is called at the beginning of each frame to get data
1136  * buffer(s) for it. There may be one contiguous buffer for all the data or
1137  * there may be a buffer per each data plane or anything in between. What
1138  * this means is, you may set however many entries in buf[] you feel necessary.
1139  * Each buffer must be reference-counted using the AVBuffer API (see description
1140  * of buf[] below).
1141  *
1142  * The following fields will be set in the frame before this callback is
1143  * called:
1144  * - format
1145  * - width, height (video only)
1146  * - sample_rate, channel_layout, nb_samples (audio only)
1147  * Their values may differ from the corresponding values in
1148  * AVCodecContext. This callback must use the frame values, not the codec
1149  * context values, to calculate the required buffer size.
1150  *
1151  * This callback must fill the following fields in the frame:
1152  * - data[]
1153  * - linesize[]
1154  * - extended_data:
1155  * * if the data is planar audio with more than 8 channels, then this
1156  * callback must allocate and fill extended_data to contain all pointers
1157  * to all data planes. data[] must hold as many pointers as it can.
1158  * extended_data must be allocated with av_malloc() and will be freed in
1159  * av_frame_unref().
1160  * * otherwise extended_data must point to data
1161  * - buf[] must contain one or more pointers to AVBufferRef structures. Each of
1162  * the frame's data and extended_data pointers must be contained in these. That
1163  * is, one AVBufferRef for each allocated chunk of memory, not necessarily one
1164  * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
1165  * and av_buffer_ref().
1166  * - extended_buf and nb_extended_buf must be allocated with av_malloc() by
1167  * this callback and filled with the extra buffers if there are more
1168  * buffers than buf[] can hold. extended_buf will be freed in
1169  * av_frame_unref().
1170  * Decoders will generally initialize the whole buffer before it is output
1171  * but it can in rare error conditions happen that uninitialized data is passed
1172  * through. \important The buffers returned by get_buffer* should thus not contain sensitive
1173  * data.
1174  *
1175  * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
1176  * avcodec_default_get_buffer2() instead of providing buffers allocated by
1177  * some other means.
1178  *
1179  * Each data plane must be aligned to the maximum required by the target
1180  * CPU.
1181  *
1182  * @see avcodec_default_get_buffer2()
1183  *
1184  * Video:
1185  *
1186  * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
1187  * (read and/or written to if it is writable) later by libavcodec.
1188  *
1189  * avcodec_align_dimensions2() should be used to find the required width and
1190  * height, as they normally need to be rounded up to the next multiple of 16.
1191  *
1192  * Some decoders do not support linesizes changing between frames.
1193  *
1194  * If frame multithreading is used, this callback may be called from a
1195  * different thread, but not from more than one at once. Does not need to be
1196  * reentrant.
1197  *
1198  * @see avcodec_align_dimensions2()
1199  *
1200  * Audio:
1201  *
1202  * Decoders request a buffer of a particular size by setting
1203  * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
1204  * however, utilize only part of the buffer by setting AVFrame.nb_samples
1205  * to a smaller value in the output frame.
1206  *
1207  * As a convenience, av_samples_get_buffer_size() and
1208  * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
1209  * functions to find the required data size and to fill data pointers and
1210  * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
1211  * since all planes must be the same size.
1212  *
1213  * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
1214  *
1215  * - encoding: unused
1216  * - decoding: Set by libavcodec, user can override.
1217  */
1218  int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags);
1219 
1220  /* - encoding parameters */
1221  /**
1222  * number of bits the bitstream is allowed to diverge from the reference.
1223  * the reference can be CBR (for CBR pass1) or VBR (for pass2)
1224  * - encoding: Set by user; unused for constant quantizer encoding.
1225  * - decoding: unused
1226  */
1228 
1229  /**
1230  * Global quality for codecs which cannot change it per frame.
1231  * This should be proportional to MPEG-1/2/4 qscale.
1232  * - encoding: Set by user.
1233  * - decoding: unused
1234  */
1236 
1237  /**
1238  * - encoding: Set by user.
1239  * - decoding: unused
1240  */
1242 #define FF_COMPRESSION_DEFAULT -1
1243 
1244  float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
1245  float qblur; ///< amount of qscale smoothing over time (0.0-1.0)
1246 
1247  /**
1248  * minimum quantizer
1249  * - encoding: Set by user.
1250  * - decoding: unused
1251  */
1252  int qmin;
1253 
1254  /**
1255  * maximum quantizer
1256  * - encoding: Set by user.
1257  * - decoding: unused
1258  */
1259  int qmax;
1260 
1261  /**
1262  * maximum quantizer difference between frames
1263  * - encoding: Set by user.
1264  * - decoding: unused
1265  */
1267 
1268  /**
1269  * decoder bitstream buffer size
1270  * - encoding: Set by user.
1271  * - decoding: May be set by libavcodec.
1272  */
1274 
1275  /**
1276  * ratecontrol override, see RcOverride
1277  * - encoding: Allocated/set/freed by user.
1278  * - decoding: unused
1279  */
1282 
1283  /**
1284  * maximum bitrate
1285  * - encoding: Set by user.
1286  * - decoding: Set by user, may be overwritten by libavcodec.
1287  */
1289 
1290  /**
1291  * minimum bitrate
1292  * - encoding: Set by user.
1293  * - decoding: unused
1294  */
1296 
1297  /**
1298  * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
1299  * - encoding: Set by user.
1300  * - decoding: unused.
1301  */
1303 
1304  /**
1305  * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
1306  * - encoding: Set by user.
1307  * - decoding: unused.
1308  */
1310 
1311  /**
1312  * Number of bits which should be loaded into the rc buffer before decoding starts.
1313  * - encoding: Set by user.
1314  * - decoding: unused
1315  */
1317 
1318  /**
1319  * trellis RD quantization
1320  * - encoding: Set by user.
1321  * - decoding: unused
1322  */
1323  int trellis;
1324 
1325  /**
1326  * pass1 encoding statistics output buffer
1327  * - encoding: Set by libavcodec.
1328  * - decoding: unused
1329  */
1330  char *stats_out;
1331 
1332  /**
1333  * pass2 encoding statistics input buffer
1334  * Concatenated stuff from stats_out of pass1 should be placed here.
1335  * - encoding: Allocated/set/freed by user.
1336  * - decoding: unused
1337  */
1338  char *stats_in;
1339 
1340  /**
1341  * Work around bugs in encoders which sometimes cannot be detected automatically.
1342  * - encoding: Set by user
1343  * - decoding: Set by user
1344  */
1346 #define FF_BUG_AUTODETECT 1 ///< autodetection
1347 #define FF_BUG_XVID_ILACE 4
1348 #define FF_BUG_UMP4 8
1349 #define FF_BUG_NO_PADDING 16
1350 #define FF_BUG_AMV 32
1351 #define FF_BUG_QPEL_CHROMA 64
1352 #define FF_BUG_STD_QPEL 128
1353 #define FF_BUG_QPEL_CHROMA2 256
1354 #define FF_BUG_DIRECT_BLOCKSIZE 512
1355 #define FF_BUG_EDGE 1024
1356 #define FF_BUG_HPEL_CHROMA 2048
1357 #define FF_BUG_DC_CLIP 4096
1358 #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders.
1359 #define FF_BUG_TRUNCATED 16384
1360 #define FF_BUG_IEDGE 32768
1361 
1362  /**
1363  * strictly follow the standard (MPEG-4, ...).
1364  * - encoding: Set by user.
1365  * - decoding: Set by user.
1366  * Setting this to STRICT or higher means the encoder and decoder will
1367  * generally do stupid things, whereas setting it to unofficial or lower
1368  * will mean the encoder might produce output that is not supported by all
1369  * spec-compliant decoders. Decoders don't differentiate between normal,
1370  * unofficial and experimental (that is, they always try to decode things
1371  * when they can) unless they are explicitly asked to behave stupidly
1372  * (=strictly conform to the specs)
1373  * This may only be set to one of the FF_COMPLIANCE_* values in defs.h.
1374  */
1376 
1377  /**
1378  * error concealment flags
1379  * - encoding: unused
1380  * - decoding: Set by user.
1381  */
1383 #define FF_EC_GUESS_MVS 1
1384 #define FF_EC_DEBLOCK 2
1385 #define FF_EC_FAVOR_INTER 256
1386 
1387  /**
1388  * debug
1389  * - encoding: Set by user.
1390  * - decoding: Set by user.
1391  */
1392  int debug;
1393 #define FF_DEBUG_PICT_INFO 1
1394 #define FF_DEBUG_RC 2
1395 #define FF_DEBUG_BITSTREAM 4
1396 #define FF_DEBUG_MB_TYPE 8
1397 #define FF_DEBUG_QP 16
1398 #define FF_DEBUG_DCT_COEFF 0x00000040
1399 #define FF_DEBUG_SKIP 0x00000080
1400 #define FF_DEBUG_STARTCODE 0x00000100
1401 #define FF_DEBUG_ER 0x00000400
1402 #define FF_DEBUG_MMCO 0x00000800
1403 #define FF_DEBUG_BUGS 0x00001000
1404 #define FF_DEBUG_BUFFERS 0x00008000
1405 #define FF_DEBUG_THREADS 0x00010000
1406 #define FF_DEBUG_GREEN_MD 0x00800000
1407 #define FF_DEBUG_NOMC 0x01000000
1408 
1409  /**
1410  * Error recognition; may misdetect some more or less valid parts as errors.
1411  * This is a bitfield of the AV_EF_* values defined in defs.h.
1412  *
1413  * - encoding: Set by user.
1414  * - decoding: Set by user.
1415  */
1417 
1418  /**
1419  * Hardware accelerator in use
1420  * - encoding: unused.
1421  * - decoding: Set by libavcodec
1422  */
1423  const struct AVHWAccel *hwaccel;
1424 
1425  /**
1426  * Legacy hardware accelerator context.
1427  *
1428  * For some hardware acceleration methods, the caller may use this field to
1429  * signal hwaccel-specific data to the codec. The struct pointed to by this
1430  * pointer is hwaccel-dependent and defined in the respective header. Please
1431  * refer to the FFmpeg HW accelerator documentation to know how to fill
1432  * this.
1433  *
1434  * In most cases this field is optional - the necessary information may also
1435  * be provided to libavcodec through @ref hw_frames_ctx or @ref
1436  * hw_device_ctx (see avcodec_get_hw_config()). However, in some cases it
1437  * may be the only method of signalling some (optional) information.
1438  *
1439  * The struct and its contents are owned by the caller.
1440  *
1441  * - encoding: May be set by the caller before avcodec_open2(). Must remain
1442  * valid until avcodec_free_context().
1443  * - decoding: May be set by the caller in the get_format() callback.
1444  * Must remain valid until the next get_format() call,
1445  * or avcodec_free_context() (whichever comes first).
1446  */
1448 
1449  /**
1450  * A reference to the AVHWFramesContext describing the input (for encoding)
1451  * or output (decoding) frames. The reference is set by the caller and
1452  * afterwards owned (and freed) by libavcodec - it should never be read by
1453  * the caller after being set.
1454  *
1455  * - decoding: This field should be set by the caller from the get_format()
1456  * callback. The previous reference (if any) will always be
1457  * unreffed by libavcodec before the get_format() call.
1458  *
1459  * If the default get_buffer2() is used with a hwaccel pixel
1460  * format, then this AVHWFramesContext will be used for
1461  * allocating the frame buffers.
1462  *
1463  * - encoding: For hardware encoders configured to use a hwaccel pixel
1464  * format, this field should be set by the caller to a reference
1465  * to the AVHWFramesContext describing input frames.
1466  * AVHWFramesContext.format must be equal to
1467  * AVCodecContext.pix_fmt.
1468  *
1469  * This field should be set before avcodec_open2() is called.
1470  */
1472 
1473  /**
1474  * A reference to the AVHWDeviceContext describing the device which will
1475  * be used by a hardware encoder/decoder. The reference is set by the
1476  * caller and afterwards owned (and freed) by libavcodec.
1477  *
1478  * This should be used if either the codec device does not require
1479  * hardware frames or any that are used are to be allocated internally by
1480  * libavcodec. If the user wishes to supply any of the frames used as
1481  * encoder input or decoder output then hw_frames_ctx should be used
1482  * instead. When hw_frames_ctx is set in get_format() for a decoder, this
1483  * field will be ignored while decoding the associated stream segment, but
1484  * may again be used on a following one after another get_format() call.
1485  *
1486  * For both encoders and decoders this field should be set before
1487  * avcodec_open2() is called and must not be written to thereafter.
1488  *
1489  * Note that some decoders may require this field to be set initially in
1490  * order to support hw_frames_ctx at all - in that case, all frames
1491  * contexts used must be created on the same device.
1492  */
1494 
1495  /**
1496  * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
1497  * decoding (if active).
1498  * - encoding: unused
1499  * - decoding: Set by user (either before avcodec_open2(), or in the
1500  * AVCodecContext.get_format callback)
1501  */
1503 
1504  /**
1505  * Video decoding only. Sets the number of extra hardware frames which
1506  * the decoder will allocate for use by the caller. This must be set
1507  * before avcodec_open2() is called.
1508  *
1509  * Some hardware decoders require all frames that they will use for
1510  * output to be defined in advance before decoding starts. For such
1511  * decoders, the hardware frame pool must therefore be of a fixed size.
1512  * The extra frames set here are on top of any number that the decoder
1513  * needs internally in order to operate normally (for example, frames
1514  * used as reference pictures).
1515  */
1517 
1518  /**
1519  * error
1520  * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
1521  * - decoding: unused
1522  */
1524 
1525  /**
1526  * DCT algorithm, see FF_DCT_* below
1527  * - encoding: Set by user.
1528  * - decoding: unused
1529  */
1531 #define FF_DCT_AUTO 0
1532 #define FF_DCT_FASTINT 1
1533 #define FF_DCT_INT 2
1534 #define FF_DCT_MMX 3
1535 #define FF_DCT_ALTIVEC 5
1536 #define FF_DCT_FAAN 6
1537 #define FF_DCT_NEON 7
1538 
1539  /**
1540  * IDCT algorithm, see FF_IDCT_* below.
1541  * - encoding: Set by user.
1542  * - decoding: Set by user.
1543  */
1545 #define FF_IDCT_AUTO 0
1546 #define FF_IDCT_INT 1
1547 #define FF_IDCT_SIMPLE 2
1548 #define FF_IDCT_SIMPLEMMX 3
1549 #define FF_IDCT_ARM 7
1550 #define FF_IDCT_ALTIVEC 8
1551 #define FF_IDCT_SIMPLEARM 10
1552 #define FF_IDCT_XVID 14
1553 #define FF_IDCT_SIMPLEARMV5TE 16
1554 #define FF_IDCT_SIMPLEARMV6 17
1555 #define FF_IDCT_FAAN 20
1556 #define FF_IDCT_SIMPLENEON 22
1557 #define FF_IDCT_SIMPLEAUTO 128
1558 
1559  /**
1560  * bits per sample/pixel from the demuxer (needed for huffyuv).
1561  * - encoding: Set by libavcodec.
1562  * - decoding: Set by user.
1563  */
1565 
1566  /**
1567  * Bits per sample/pixel of internal libavcodec pixel/sample format.
1568  * - encoding: set by user.
1569  * - decoding: set by libavcodec.
1570  */
1572 
1573  /**
1574  * thread count
1575  * is used to decide how many independent tasks should be passed to execute()
1576  * - encoding: Set by user.
1577  * - decoding: Set by user.
1578  */
1580 
1581  /**
1582  * Which multithreading methods to use.
1583  * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
1584  * so clients which cannot provide future frames should not use it.
1585  *
1586  * - encoding: Set by user, otherwise the default is used.
1587  * - decoding: Set by user, otherwise the default is used.
1588  */
1590 #define FF_THREAD_FRAME 1 ///< Decode more than one frame at once
1591 #define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once
1592 
1593  /**
1594  * Which multithreading methods are in use by the codec.
1595  * - encoding: Set by libavcodec.
1596  * - decoding: Set by libavcodec.
1597  */
1599 
1600  /**
1601  * The codec may call this to execute several independent things.
1602  * It will return only after finishing all tasks.
1603  * The user may replace this with some multithreaded implementation,
1604  * the default implementation will execute the parts serially.
1605  * @param count the number of things to execute
1606  * - encoding: Set by libavcodec, user can override.
1607  * - decoding: Set by libavcodec, user can override.
1608  */
1609  int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size);
1610 
1611  /**
1612  * The codec may call this to execute several independent things.
1613  * It will return only after finishing all tasks.
1614  * The user may replace this with some multithreaded implementation,
1615  * the default implementation will execute the parts serially.
1616  * @param c context passed also to func
1617  * @param count the number of things to execute
1618  * @param arg2 argument passed unchanged to func
1619  * @param ret return values of executed functions, must have space for "count" values. May be NULL.
1620  * @param func function that will be called count times, with jobnr from 0 to count-1.
1621  * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
1622  * two instances of func executing at the same time will have the same threadnr.
1623  * @return always 0 currently, but code should handle a future improvement where when any call to func
1624  * returns < 0 no further calls to func may be done and < 0 is returned.
1625  * - encoding: Set by libavcodec, user can override.
1626  * - decoding: Set by libavcodec, user can override.
1627  */
1628  int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
1629 
1630  /**
1631  * profile
1632  * - encoding: Set by user.
1633  * - decoding: Set by libavcodec.
1634  * See the AV_PROFILE_* defines in defs.h.
1635  */
1636  int profile;
1637 
1638  /**
1639  * Encoding level descriptor.
1640  * - encoding: Set by user, corresponds to a specific level defined by the
1641  * codec, usually corresponding to the profile level, if not specified it
1642  * is set to AV_LEVEL_UNKNOWN.
1643  * - decoding: Set by libavcodec.
1644  * See AV_LEVEL_* in defs.h.
1645  */
1646  int level;
1647 
1648 #if FF_API_CODEC_PROPS
1649  /**
1650  * Properties of the stream that gets decoded
1651  * - encoding: unused
1652  * - decoding: set by libavcodec
1653  */
1655  unsigned properties;
1656 #define FF_CODEC_PROPERTY_LOSSLESS 0x00000001
1657 #define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002
1658 #define FF_CODEC_PROPERTY_FILM_GRAIN 0x00000004
1659 #endif
1660 
1661  /**
1662  * Skip loop filtering for selected frames.
1663  * - encoding: unused
1664  * - decoding: Set by user.
1665  */
1667 
1668  /**
1669  * Skip IDCT/dequantization for selected frames.
1670  * - encoding: unused
1671  * - decoding: Set by user.
1672  */
1674 
1675  /**
1676  * Skip decoding for selected frames.
1677  * - encoding: unused
1678  * - decoding: Set by user.
1679  */
1681 
1682  /**
1683  * Skip processing alpha if supported by codec.
1684  * Note that if the format uses pre-multiplied alpha (common with VP6,
1685  * and recommended due to better video quality/compression)
1686  * the image will look as if alpha-blended onto a black background.
1687  * However for formats that do not use pre-multiplied alpha
1688  * there might be serious artefacts (though e.g. libswscale currently
1689  * assumes pre-multiplied alpha anyway).
1690  *
1691  * - decoding: set by user
1692  * - encoding: unused
1693  */
1695 
1696  /**
1697  * Number of macroblock rows at the top which are skipped.
1698  * - encoding: unused
1699  * - decoding: Set by user.
1700  */
1702 
1703  /**
1704  * Number of macroblock rows at the bottom which are skipped.
1705  * - encoding: unused
1706  * - decoding: Set by user.
1707  */
1709 
1710  /**
1711  * low resolution decoding, 1-> 1/2 size, 2->1/4 size
1712  * - encoding: unused
1713  * - decoding: Set by user.
1714  */
1715  int lowres;
1716 
1717  /**
1718  * AVCodecDescriptor
1719  * - encoding: unused.
1720  * - decoding: set by libavcodec.
1721  */
1723 
1724  /**
1725  * Character encoding of the input subtitles file.
1726  * - decoding: set by user
1727  * - encoding: unused
1728  */
1730 
1731  /**
1732  * Subtitles character encoding mode. Formats or codecs might be adjusting
1733  * this setting (if they are doing the conversion themselves for instance).
1734  * - decoding: set by libavcodec
1735  * - encoding: unused
1736  */
1738 #define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance)
1739 #define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself
1740 #define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv
1741 #define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8
1742 
1743  /**
1744  * Header containing style information for text subtitles.
1745  * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
1746  * [Script Info] and [V4+ Styles] section, plus the [Events] line and
1747  * the Format line following. It shouldn't include any Dialogue line.
1748  *
1749  * - encoding: May be set by the caller before avcodec_open2() to an array
1750  * allocated with the av_malloc() family of functions.
1751  * - decoding: May be set by libavcodec in avcodec_open2().
1752  *
1753  * After being set, the array is owned by the codec and freed in
1754  * avcodec_free_context().
1755  */
1758 
1759  /**
1760  * dump format separator.
1761  * can be ", " or "\n " or anything else
1762  * - encoding: Set by user.
1763  * - decoding: Set by user.
1764  */
1765  uint8_t *dump_separator;
1766 
1767  /**
1768  * ',' separated list of allowed decoders.
1769  * If NULL then all are allowed
1770  * - encoding: unused
1771  * - decoding: set by user
1772  */
1774 
1775  /**
1776  * Additional data associated with the entire coded stream.
1777  *
1778  * - decoding: may be set by user before calling avcodec_open2().
1779  * - encoding: may be set by libavcodec after avcodec_open2().
1780  */
1783 
1784  /**
1785  * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of
1786  * metadata exported in frame, packet, or coded stream side data by
1787  * decoders and encoders.
1788  *
1789  * - decoding: set by user
1790  * - encoding: set by user
1791  */
1793 
1794  /**
1795  * The number of pixels per image to maximally accept.
1796  *
1797  * - decoding: set by user
1798  * - encoding: set by user
1799  */
1801 
1802  /**
1803  * Video decoding only. Certain video codecs support cropping, meaning that
1804  * only a sub-rectangle of the decoded frame is intended for display. This
1805  * option controls how cropping is handled by libavcodec.
1806  *
1807  * When set to 1 (the default), libavcodec will apply cropping internally.
1808  * I.e. it will modify the output frame width/height fields and offset the
1809  * data pointers (only by as much as possible while preserving alignment, or
1810  * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
1811  * the frames output by the decoder refer only to the cropped area. The
1812  * crop_* fields of the output frames will be zero.
1813  *
1814  * When set to 0, the width/height fields of the output frames will be set
1815  * to the coded dimensions and the crop_* fields will describe the cropping
1816  * rectangle. Applying the cropping is left to the caller.
1817  *
1818  * @warning When hardware acceleration with opaque output frames is used,
1819  * libavcodec is unable to apply cropping from the top/left border.
1820  *
1821  * @note when this option is set to zero, the width/height fields of the
1822  * AVCodecContext and output AVFrames have different meanings. The codec
1823  * context fields store display dimensions (with the coded dimensions in
1824  * coded_width/height), while the frame fields store the coded dimensions
1825  * (with the display dimensions being determined by the crop_* fields).
1826  */
1828 
1829  /**
1830  * The percentage of damaged samples to discard a frame.
1831  *
1832  * - decoding: set by user
1833  * - encoding: unused
1834  */
1836 
1837  /**
1838  * The number of samples per frame to maximally accept.
1839  *
1840  * - decoding: set by user
1841  * - encoding: set by user
1842  */
1844 
1845  /**
1846  * This callback is called at the beginning of each packet to get a data
1847  * buffer for it.
1848  *
1849  * The following field will be set in the packet before this callback is
1850  * called:
1851  * - size
1852  * This callback must use the above value to calculate the required buffer size,
1853  * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes.
1854  *
1855  * In some specific cases, the encoder may not use the entire buffer allocated by this
1856  * callback. This will be reflected in the size value in the packet once returned by
1857  * avcodec_receive_packet().
1858  *
1859  * This callback must fill the following fields in the packet:
1860  * - data: alignment requirements for AVPacket apply, if any. Some architectures and
1861  * encoders may benefit from having aligned data.
1862  * - buf: must contain a pointer to an AVBufferRef structure. The packet's
1863  * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(),
1864  * and av_buffer_ref().
1865  *
1866  * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call
1867  * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by
1868  * some other means.
1869  *
1870  * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags.
1871  * They may be used for example to hint what use the buffer may get after being
1872  * created.
1873  * Implementations of this callback may ignore flags they don't understand.
1874  * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused
1875  * (read and/or written to if it is writable) later by libavcodec.
1876  *
1877  * This callback must be thread-safe, as when frame threading is used, it may
1878  * be called from multiple threads simultaneously.
1879  *
1880  * @see avcodec_default_get_encode_buffer()
1881  *
1882  * - encoding: Set by libavcodec, user can override.
1883  * - decoding: unused
1884  */
1886 
1887  /**
1888  * Frame counter, set by libavcodec.
1889  *
1890  * - decoding: total number of frames returned from the decoder so far.
1891  * - encoding: total number of frames passed to the encoder so far.
1892  *
1893  * @note the counter is not incremented if encoding/decoding resulted in
1894  * an error.
1895  */
1897 
1898  /**
1899  * Decoding only. May be set by the caller before avcodec_open2() to an
1900  * av_malloc()'ed array (or via AVOptions). Owned and freed by the decoder
1901  * afterwards.
1902  *
1903  * Side data attached to decoded frames may come from several sources:
1904  * 1. coded_side_data, which the decoder will for certain types translate
1905  * from packet-type to frame-type and attach to frames;
1906  * 2. side data attached to an AVPacket sent for decoding (same
1907  * considerations as above);
1908  * 3. extracted from the coded bytestream.
1909  * The first two cases are supplied by the caller and typically come from a
1910  * container.
1911  *
1912  * This array configures decoder behaviour in cases when side data of the
1913  * same type is present both in the coded bytestream and in the
1914  * user-supplied side data (items 1. and 2. above). In all cases, at most
1915  * one instance of each side data type will be attached to output frames. By
1916  * default it will be the bytestream side data. Adding an
1917  * AVPacketSideDataType value to this array will flip the preference for
1918  * this type, thus making the decoder prefer user-supplied side data over
1919  * bytestream. In case side data of the same type is present both in
1920  * coded_data and attacked to a packet, the packet instance always has
1921  * priority.
1922  *
1923  * The array may also contain a single -1, in which case the preference is
1924  * switched for all side data types.
1925  */
1927  /**
1928  * Number of entries in side_data_prefer_packet.
1929  */
1931 
1932  /**
1933  * Array containing static side data, such as HDR10 CLL / MDCV structures.
1934  * Side data entries should be allocated by usage of helpers defined in
1935  * libavutil/frame.h.
1936  *
1937  * - encoding: may be set by user before calling avcodec_open2() for
1938  * encoder configuration. Afterwards owned and freed by the
1939  * encoder.
1940  * - decoding: may be set by libavcodec in avcodec_open2().
1941  */
1944 
1945  /**
1946  * Indicates how the alpha channel of the video is represented.
1947  * - encoding: Set by user
1948  * - decoding: Set by libavcodec
1949  */
1951 } AVCodecContext;
1952 
1953 /**
1954  * @defgroup lavc_hwaccel AVHWAccel
1955  *
1956  * @note Nothing in this structure should be accessed by the user. At some
1957  * point in future it will not be externally visible at all.
1958  *
1959  * @{
1960  */
1961 typedef struct AVHWAccel {
1962  /**
1963  * Name of the hardware accelerated codec.
1964  * The name is globally unique among encoders and among decoders (but an
1965  * encoder and a decoder can share the same name).
1966  */
1967  const char *name;
1968 
1969  /**
1970  * Type of codec implemented by the hardware accelerator.
1971  *
1972  * See AVMEDIA_TYPE_xxx
1973  */
1975 
1976  /**
1977  * Codec implemented by the hardware accelerator.
1978  *
1979  * See AV_CODEC_ID_xxx
1980  */
1982 
1983  /**
1984  * Supported pixel format.
1985  *
1986  * Only hardware accelerated formats are supported here.
1987  */
1989 
1990  /**
1991  * Hardware accelerated codec capabilities.
1992  * see AV_HWACCEL_CODEC_CAP_*
1993  */
1995 } AVHWAccel;
1996 
1997 /**
1998  * HWAccel is experimental and is thus avoided in favor of non experimental
1999  * codecs
2000  */
2001 #define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200
2002 
2003 /**
2004  * Hardware acceleration should be used for decoding even if the codec level
2005  * used is unknown or higher than the maximum supported level reported by the
2006  * hardware driver.
2007  *
2008  * It's generally a good idea to pass this flag unless you have a specific
2009  * reason not to, as hardware tends to under-report supported levels.
2010  */
2011 #define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0)
2012 
2013 /**
2014  * Hardware acceleration can output YUV pixel formats with a different chroma
2015  * sampling than 4:2:0 and/or other than 8 bits per component.
2016  */
2017 #define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1)
2018 
2019 /**
2020  * Hardware acceleration should still be attempted for decoding when the
2021  * codec profile does not match the reported capabilities of the hardware.
2022  *
2023  * For example, this can be used to try to decode baseline profile H.264
2024  * streams in hardware - it will often succeed, because many streams marked
2025  * as baseline profile actually conform to constrained baseline profile.
2026  *
2027  * @warning If the stream is actually not supported then the behaviour is
2028  * undefined, and may include returning entirely incorrect output
2029  * while indicating success.
2030  */
2031 #define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2)
2032 
2033 /**
2034  * Some hardware decoders (namely nvdec) can either output direct decoder
2035  * surfaces, or make an on-device copy and return said copy.
2036  * There is a hard limit on how many decoder surfaces there can be, and it
2037  * cannot be accurately guessed ahead of time.
2038  * For some processing chains, this can be okay, but others will run into the
2039  * limit and in turn produce very confusing errors that require fine tuning of
2040  * more or less obscure options by the user, or in extreme cases cannot be
2041  * resolved at all without inserting an avfilter that forces a copy.
2042  *
2043  * Thus, the hwaccel will by default make a copy for safety and resilience.
2044  * If a users really wants to minimize the amount of copies, they can set this
2045  * flag and ensure their processing chain does not exhaust the surface pool.
2046  */
2047 #define AV_HWACCEL_FLAG_UNSAFE_OUTPUT (1 << 3)
2048 
2049 /**
2050  * @}
2051  */
2052 
2055 
2056  SUBTITLE_BITMAP, ///< A bitmap, pict will be set
2057 
2058  /**
2059  * Plain text, the text field must be set by the decoder and is
2060  * authoritative. ass and pict fields may contain approximations.
2061  */
2063 
2064  /**
2065  * Formatted text, the ass field must be set by the decoder and is
2066  * authoritative. pict and text fields may contain approximations.
2067  */
2069 };
2070 
2071 #define AV_SUBTITLE_FLAG_FORCED 0x00000001
2072 
2073 typedef struct AVSubtitleRect {
2074  int x; ///< top left corner of pict, undefined when pict is not set
2075  int y; ///< top left corner of pict, undefined when pict is not set
2076  int w; ///< width of pict, undefined when pict is not set
2077  int h; ///< height of pict, undefined when pict is not set
2078  int nb_colors; ///< number of colors in pict, undefined when pict is not set
2079 
2080  /**
2081  * data+linesize for the bitmap of this subtitle.
2082  * Can be set for text/ass as well once they are rendered.
2083  */
2084  uint8_t *data[4];
2085  int linesize[4];
2086 
2087  int flags;
2089 
2090  char *text; ///< 0 terminated plain UTF-8 text
2091 
2092  /**
2093  * 0 terminated ASS/SSA compatible event line.
2094  * The presentation of this is unaffected by the other values in this
2095  * struct.
2096  */
2097  char *ass;
2098 } AVSubtitleRect;
2099 
2100 typedef struct AVSubtitle {
2101  uint16_t format; /* 0 = graphics */
2102  uint32_t start_display_time; /* relative to packet pts, in ms */
2103  uint32_t end_display_time; /* relative to packet pts, in ms */
2104  unsigned num_rects;
2106  int64_t pts; ///< Same as packet pts, in AV_TIME_BASE
2107 } AVSubtitle;
2108 
2109 /**
2110  * Return the LIBAVCODEC_VERSION_INT constant.
2111  */
2112 unsigned avcodec_version(void);
2113 
2114 /**
2115  * Return the libavcodec build-time configuration.
2116  */
2117 const char *avcodec_configuration(void);
2118 
2119 /**
2120  * Return the libavcodec license.
2121  */
2122 const char *avcodec_license(void);
2123 
2124 /**
2125  * Allocate an AVCodecContext and set its fields to default values. The
2126  * resulting struct should be freed with avcodec_free_context().
2127  *
2128  * @param codec if non-NULL, allocate private data and initialize defaults
2129  * for the given codec. It is illegal to then call avcodec_open2()
2130  * with a different codec.
2131  * If NULL, then the codec-specific defaults won't be initialized,
2132  * which may result in suboptimal default settings (this is
2133  * important mainly for encoders, e.g. libx264).
2134  *
2135  * @return An AVCodecContext filled with default values or NULL on failure.
2136  */
2138 
2139 /**
2140  * Free the codec context and everything associated with it and write NULL to
2141  * the provided pointer.
2142  */
2143 void avcodec_free_context(AVCodecContext **avctx);
2144 
2145 /**
2146  * Get the AVClass for AVCodecContext. It can be used in combination with
2147  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2148  *
2149  * @see av_opt_find().
2150  */
2151 const AVClass *avcodec_get_class(void);
2152 
2153 /**
2154  * Get the AVClass for AVSubtitleRect. It can be used in combination with
2155  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2156  *
2157  * @see av_opt_find().
2158  */
2160 
2161 /**
2162  * Fill the parameters struct based on the values from the supplied codec
2163  * context. Any allocated fields in par are freed and replaced with duplicates
2164  * of the corresponding fields in codec.
2165  *
2166  * @return >= 0 on success, a negative AVERROR code on failure
2167  *
2168  * @relates AVCodecParameters
2169  */
2171  const AVCodecContext *codec);
2172 
2173 /**
2174  * Fill the codec context based on the values from the supplied codec
2175  * parameters. Any allocated fields in codec that have a corresponding field in
2176  * par are freed and replaced with duplicates of the corresponding field in par.
2177  * Fields in codec that do not have a counterpart in par are not touched.
2178  *
2179  * @return >= 0 on success, a negative AVERROR code on failure.
2180  *
2181  * @relates AVCodecParameters
2182  */
2184  const struct AVCodecParameters *par);
2185 
2186 /**
2187  * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
2188  * function the context has to be allocated with avcodec_alloc_context3().
2189  *
2190  * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
2191  * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
2192  * retrieving a codec.
2193  *
2194  * Depending on the codec, you might need to set options in the codec context
2195  * also for decoding (e.g. width, height, or the pixel or audio sample format in
2196  * the case the information is not available in the bitstream, as when decoding
2197  * raw audio or video).
2198  *
2199  * Options in the codec context can be set either by setting them in the options
2200  * AVDictionary, or by setting the values in the context itself, directly or by
2201  * using the av_opt_set() API before calling this function.
2202  *
2203  * Example:
2204  * @code
2205  * av_dict_set(&opts, "b", "2.5M", 0);
2206  * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
2207  * if (!codec)
2208  * exit(1);
2209  *
2210  * context = avcodec_alloc_context3(codec);
2211  *
2212  * if (avcodec_open2(context, codec, opts) < 0)
2213  * exit(1);
2214  * @endcode
2215  *
2216  * In the case AVCodecParameters are available (e.g. when demuxing a stream
2217  * using libavformat, and accessing the AVStream contained in the demuxer), the
2218  * codec parameters can be copied to the codec context using
2219  * avcodec_parameters_to_context(), as in the following example:
2220  *
2221  * @code
2222  * AVStream *stream = ...;
2223  * context = avcodec_alloc_context3(codec);
2224  * if (avcodec_parameters_to_context(context, stream->codecpar) < 0)
2225  * exit(1);
2226  * if (avcodec_open2(context, codec, NULL) < 0)
2227  * exit(1);
2228  * @endcode
2229  *
2230  * @note Always call this function before using decoding routines (such as
2231  * @ref avcodec_receive_frame()).
2232  *
2233  * @param avctx The context to initialize.
2234  * @param codec The codec to open this context for. If a non-NULL codec has been
2235  * previously passed to avcodec_alloc_context3() or
2236  * for this context, then this parameter MUST be either NULL or
2237  * equal to the previously passed codec.
2238  * @param options A dictionary filled with AVCodecContext and codec-private
2239  * options, which are set on top of the options already set in
2240  * avctx, can be NULL. On return this object will be filled with
2241  * options that were not found in the avctx codec context.
2242  *
2243  * @return zero on success, a negative value on error
2244  * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
2245  * av_dict_set(), av_opt_set(), av_opt_find(), avcodec_parameters_to_context()
2246  */
2247 int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
2248 
2249 /**
2250  * Free all allocated data in the given subtitle struct.
2251  *
2252  * @param sub AVSubtitle to free.
2253  */
2254 void avsubtitle_free(AVSubtitle *sub);
2255 
2256 /**
2257  * @}
2258  */
2259 
2260 /**
2261  * @addtogroup lavc_decoding
2262  * @{
2263  */
2264 
2265 /**
2266  * The default callback for AVCodecContext.get_buffer2(). It is made public so
2267  * it can be called by custom get_buffer2() implementations for decoders without
2268  * AV_CODEC_CAP_DR1 set.
2269  */
2271 
2272 /**
2273  * The default callback for AVCodecContext.get_encode_buffer(). It is made public so
2274  * it can be called by custom get_encode_buffer() implementations for encoders without
2275  * AV_CODEC_CAP_DR1 set.
2276  */
2278 
2279 /**
2280  * Modify width and height values so that they will result in a memory
2281  * buffer that is acceptable for the codec if you do not use any horizontal
2282  * padding.
2283  *
2284  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2285  */
2287 
2288 /**
2289  * Modify width and height values so that they will result in a memory
2290  * buffer that is acceptable for the codec if you also ensure that all
2291  * line sizes are a multiple of the respective linesize_align[i].
2292  *
2293  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2294  */
2296  int linesize_align[AV_NUM_DATA_POINTERS]);
2297 
2298 /**
2299  * Decode a subtitle message.
2300  * Return a negative value on error, otherwise return the number of bytes used.
2301  * If no subtitle could be decompressed, got_sub_ptr is zero.
2302  * Otherwise, the subtitle is stored in *sub.
2303  * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
2304  * simplicity, because the performance difference is expected to be negligible
2305  * and reusing a get_buffer written for video codecs would probably perform badly
2306  * due to a potentially very different allocation pattern.
2307  *
2308  * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
2309  * and output. This means that for some packets they will not immediately
2310  * produce decoded output and need to be flushed at the end of decoding to get
2311  * all the decoded data. Flushing is done by calling this function with packets
2312  * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
2313  * returning subtitles. It is safe to flush even those decoders that are not
2314  * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
2315  *
2316  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
2317  * before packets may be fed to the decoder.
2318  *
2319  * @param avctx the codec context
2320  * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored,
2321  * must be freed with avsubtitle_free if *got_sub_ptr is set.
2322  * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
2323  * @param[in] avpkt The input AVPacket containing the input buffer.
2324  */
2326  int *got_sub_ptr, const AVPacket *avpkt);
2327 
2328 /**
2329  * Supply raw packet data as input to a decoder.
2330  *
2331  * Internally, this call will copy relevant AVCodecContext fields, which can
2332  * influence decoding per-packet, and apply them when the packet is actually
2333  * decoded. (For example AVCodecContext.skip_frame, which might direct the
2334  * decoder to drop the frame contained by the packet sent with this function.)
2335  *
2336  * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
2337  * larger than the actual read bytes because some optimized bitstream
2338  * readers read 32 or 64 bits at once and could read over the end.
2339  *
2340  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
2341  * before packets may be fed to the decoder.
2342  *
2343  * @param avctx codec context
2344  * @param[in] avpkt The input AVPacket. Usually, this will be a single video
2345  * frame, or several complete audio frames.
2346  * Ownership of the packet remains with the caller, and the
2347  * decoder will not write to the packet. The decoder may create
2348  * a reference to the packet data (or copy it if the packet is
2349  * not reference-counted).
2350  * Unlike with older APIs, the packet is always fully consumed,
2351  * and if it contains multiple frames (e.g. some audio codecs),
2352  * will require you to call avcodec_receive_frame() multiple
2353  * times afterwards before you can send a new packet.
2354  * It can be NULL (or an AVPacket with data set to NULL and
2355  * size set to 0); in this case, it is considered a flush
2356  * packet, which signals the end of the stream. Sending the
2357  * first flush packet will return success. Subsequent ones are
2358  * unnecessary and will return AVERROR_EOF. If the decoder
2359  * still has frames buffered, it will return them after sending
2360  * a flush packet.
2361  *
2362  * @retval 0 success
2363  * @retval AVERROR(EAGAIN) input is not accepted in the current state - user
2364  * must read output with avcodec_receive_frame() (once
2365  * all output is read, the packet should be resent,
2366  * and the call will not fail with EAGAIN).
2367  * @retval AVERROR_EOF the decoder has been flushed, and no new packets can be
2368  * sent to it (also returned if more than 1 flush
2369  * packet is sent)
2370  * @retval AVERROR(EINVAL) codec not opened, it is an encoder, or requires flush
2371  * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar
2372  * @retval "another negative error code" legitimate decoding errors
2373  */
2374 int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
2375 
2376 /**
2377  * Return decoded output data from a decoder or encoder (when the
2378  * @ref AV_CODEC_FLAG_RECON_FRAME flag is used).
2379  *
2380  * @param avctx codec context
2381  * @param frame This will be set to a reference-counted video or audio
2382  * frame (depending on the decoder type) allocated by the
2383  * codec. Note that the function will always call
2384  * av_frame_unref(frame) before doing anything else.
2385  * @param flags Combination of AV_CODEC_RECEIVE_FRAME_FLAG_* flags.
2386  *
2387  * @retval 0 success, a frame was returned
2388  * @retval AVERROR(EAGAIN) output is not available in this state - user must
2389  * try to send new input
2390  * @retval AVERROR_EOF the codec has been fully flushed, and there will be
2391  * no more output frames
2392  * @retval AVERROR(EINVAL) codec not opened, or it is an encoder without the
2393  * @ref AV_CODEC_FLAG_RECON_FRAME flag enabled
2394  * @retval "other negative error code" legitimate decoding errors
2395  */
2397 
2398 /**
2399  * Alias for `avcodec_receive_frame_flags(avctx, frame, 0)`.
2400  */
2402 
2403 /**
2404  * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
2405  * to retrieve buffered output packets.
2406  *
2407  * @param avctx codec context
2408  * @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
2409  * Ownership of the frame remains with the caller, and the
2410  * encoder will not write to the frame. The encoder may create
2411  * a reference to the frame data (or copy it if the frame is
2412  * not reference-counted).
2413  * It can be NULL, in which case it is considered a flush
2414  * packet. This signals the end of the stream. If the encoder
2415  * still has packets buffered, it will return them after this
2416  * call. Once flushing mode has been entered, additional flush
2417  * packets are ignored, and sending frames will return
2418  * AVERROR_EOF.
2419  *
2420  * For audio:
2421  * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
2422  * can have any number of samples.
2423  * If it is not set, or AV_CODEC_FLAG2_FIXED_FRAME_SIZE was
2424  * requested, then frame->nb_samples must be equal to
2425  * avctx->frame_size for all frames except the last.
2426  * The final frame may be smaller than avctx->frame_size.
2427  * @retval 0 success
2428  * @retval AVERROR(EAGAIN) input is not accepted in the current state - user must
2429  * read output with avcodec_receive_packet() (once all
2430  * output is read, the packet should be resent, and the
2431  * call will not fail with EAGAIN).
2432  * @retval AVERROR_EOF the encoder has been flushed, and no new frames can
2433  * be sent to it
2434  * @retval AVERROR(EINVAL) codec not opened, it is a decoder, or requires flush
2435  * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar
2436  * @retval "another negative error code" legitimate encoding errors
2437  */
2438 int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
2439 
2440 /**
2441  * Read encoded data from the encoder.
2442  *
2443  * @param avctx codec context
2444  * @param avpkt This will be set to a reference-counted packet allocated by the
2445  * encoder. Note that the function will always call
2446  * av_packet_unref(avpkt) before doing anything else.
2447  * @retval 0 success
2448  * @retval AVERROR(EAGAIN) output is not available in the current state - user must
2449  * try to send input
2450  * @retval AVERROR_EOF the encoder has been fully flushed, and there will be no
2451  * more output packets
2452  * @retval AVERROR(EINVAL) codec not opened, or it is a decoder
2453  * @retval "another negative error code" legitimate encoding errors
2454  */
2455 int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
2456 
2457 /**
2458  * Create and return a AVHWFramesContext with values adequate for hardware
2459  * decoding. This is meant to get called from the get_format callback, and is
2460  * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
2461  * This API is for decoding with certain hardware acceleration modes/APIs only.
2462  *
2463  * The returned AVHWFramesContext is not initialized. The caller must do this
2464  * with av_hwframe_ctx_init().
2465  *
2466  * Calling this function is not a requirement, but makes it simpler to avoid
2467  * codec or hardware API specific details when manually allocating frames.
2468  *
2469  * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
2470  * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
2471  * it unnecessary to call this function or having to care about
2472  * AVHWFramesContext initialization at all.
2473  *
2474  * There are a number of requirements for calling this function:
2475  *
2476  * - It must be called from get_format with the same avctx parameter that was
2477  * passed to get_format. Calling it outside of get_format is not allowed, and
2478  * can trigger undefined behavior.
2479  * - The function is not always supported (see description of return values).
2480  * Even if this function returns successfully, hwaccel initialization could
2481  * fail later. (The degree to which implementations check whether the stream
2482  * is actually supported varies. Some do this check only after the user's
2483  * get_format callback returns.)
2484  * - The hw_pix_fmt must be one of the choices suggested by get_format. If the
2485  * user decides to use a AVHWFramesContext prepared with this API function,
2486  * the user must return the same hw_pix_fmt from get_format.
2487  * - The device_ref passed to this function must support the given hw_pix_fmt.
2488  * - After calling this API function, it is the user's responsibility to
2489  * initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
2490  * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
2491  * before returning from get_format (this is implied by the normal
2492  * AVCodecContext.hw_frames_ctx API rules).
2493  * - The AVHWFramesContext parameters may change every time time get_format is
2494  * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
2495  * you are inherently required to go through this process again on every
2496  * get_format call.
2497  * - It is perfectly possible to call this function without actually using
2498  * the resulting AVHWFramesContext. One use-case might be trying to reuse a
2499  * previously initialized AVHWFramesContext, and calling this API function
2500  * only to test whether the required frame parameters have changed.
2501  * - Fields that use dynamically allocated values of any kind must not be set
2502  * by the user unless setting them is explicitly allowed by the documentation.
2503  * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
2504  * the new free callback must call the potentially set previous free callback.
2505  * This API call may set any dynamically allocated fields, including the free
2506  * callback.
2507  *
2508  * The function will set at least the following fields on AVHWFramesContext
2509  * (potentially more, depending on hwaccel API):
2510  *
2511  * - All fields set by av_hwframe_ctx_alloc().
2512  * - Set the format field to hw_pix_fmt.
2513  * - Set the sw_format field to the most suited and most versatile format. (An
2514  * implication is that this will prefer generic formats over opaque formats
2515  * with arbitrary restrictions, if possible.)
2516  * - Set the width/height fields to the coded frame size, rounded up to the
2517  * API-specific minimum alignment.
2518  * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
2519  * field to the number of maximum reference surfaces possible with the codec,
2520  * plus 1 surface for the user to work (meaning the user can safely reference
2521  * at most 1 decoded surface at a time), plus additional buffering introduced
2522  * by frame threading. If the hwaccel does not require pre-allocation, the
2523  * field is left to 0, and the decoder will allocate new surfaces on demand
2524  * during decoding.
2525  * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
2526  * hardware API.
2527  *
2528  * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
2529  * with basic frame parameters set.
2530  *
2531  * The function is stateless, and does not change the AVCodecContext or the
2532  * device_ref AVHWDeviceContext.
2533  *
2534  * @param avctx The context which is currently calling get_format, and which
2535  * implicitly contains all state needed for filling the returned
2536  * AVHWFramesContext properly.
2537  * @param device_ref A reference to the AVHWDeviceContext describing the device
2538  * which will be used by the hardware decoder.
2539  * @param hw_pix_fmt The hwaccel format you are going to return from get_format.
2540  * @param out_frames_ref On success, set to a reference to an _uninitialized_
2541  * AVHWFramesContext, created from the given device_ref.
2542  * Fields will be set to values required for decoding.
2543  * Not changed if an error is returned.
2544  * @return zero on success, a negative value on error. The following error codes
2545  * have special semantics:
2546  * AVERROR(ENOENT): the decoder does not support this functionality. Setup
2547  * is always manual, or it is a decoder which does not
2548  * support setting AVCodecContext.hw_frames_ctx at all,
2549  * or it is a software format.
2550  * AVERROR(EINVAL): it is known that hardware decoding is not supported for
2551  * this configuration, or the device_ref is not supported
2552  * for the hwaccel referenced by hw_pix_fmt.
2553  */
2555  AVBufferRef *device_ref,
2557  AVBufferRef **out_frames_ref);
2558 
2560  AV_CODEC_CONFIG_PIX_FORMAT, ///< AVPixelFormat, terminated by AV_PIX_FMT_NONE
2561  AV_CODEC_CONFIG_FRAME_RATE, ///< AVRational, terminated by {0, 0}
2562  AV_CODEC_CONFIG_SAMPLE_RATE, ///< int, terminated by 0
2563  AV_CODEC_CONFIG_SAMPLE_FORMAT, ///< AVSampleFormat, terminated by AV_SAMPLE_FMT_NONE
2564  AV_CODEC_CONFIG_CHANNEL_LAYOUT, ///< AVChannelLayout, terminated by {0}
2565  AV_CODEC_CONFIG_COLOR_RANGE, ///< AVColorRange, terminated by AVCOL_RANGE_UNSPECIFIED
2566  AV_CODEC_CONFIG_COLOR_SPACE, ///< AVColorSpace, terminated by AVCOL_SPC_UNSPECIFIED
2567  AV_CODEC_CONFIG_ALPHA_MODE, ///< AVAlphaMode, terminated by AVALPHA_MODE_UNSPECIFIED
2568 };
2569 
2570 /**
2571  * Retrieve a list of all supported values for a given configuration type.
2572  *
2573  * @param avctx An optional context to use. Values such as
2574  * `strict_std_compliance` may affect the result. If NULL,
2575  * default values are used.
2576  * @param codec The codec to query, or NULL to use avctx->codec.
2577  * @param config The configuration to query.
2578  * @param flags Currently unused; should be set to zero.
2579  * @param out_configs On success, set to a list of configurations, terminated
2580  * by a config-specific terminator, or NULL if all
2581  * possible values are supported.
2582  * @param out_num_configs On success, set to the number of elements in
2583  *out_configs, excluding the terminator. Optional.
2584  */
2586  const AVCodec *codec, enum AVCodecConfig config,
2587  unsigned flags, const void **out_configs,
2588  int *out_num_configs);
2589 
2590 
2591 
2592 /**
2593  * @defgroup lavc_parsing Frame parsing
2594  * @{
2595  */
2596 
2599  AV_PICTURE_STRUCTURE_TOP_FIELD, ///< coded as top field
2600  AV_PICTURE_STRUCTURE_BOTTOM_FIELD, ///< coded as bottom field
2601  AV_PICTURE_STRUCTURE_FRAME, ///< coded as frame
2602 };
2603 
2604 typedef struct AVCodecParserContext {
2605  void *priv_data;
2606  const struct AVCodecParser *parser;
2607  int64_t frame_offset; /* offset of the current frame */
2608  int64_t cur_offset; /* current offset
2609  (incremented by each av_parser_parse()) */
2610  int64_t next_frame_offset; /* offset of the next frame */
2611  /* video info */
2612  int pict_type; /* XXX: Put it back in AVCodecContext. */
2613  /**
2614  * This field is used for proper frame duration computation in lavf.
2615  * It signals, how much longer the frame duration of the current frame
2616  * is compared to normal frame duration.
2617  *
2618  * frame_duration = (1 + repeat_pict) * time_base
2619  *
2620  * It is used by codecs like H.264 to display telecined material.
2621  */
2622  int repeat_pict; /* XXX: Put it back in AVCodecContext. */
2623  int64_t pts; /* pts of the current frame */
2624  int64_t dts; /* dts of the current frame */
2625 
2626  /* private data */
2630 
2631 #define AV_PARSER_PTS_NB 4
2636 
2637  int flags;
2638 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001
2639 #define PARSER_FLAG_ONCE 0x0002
2640 /// Set if the parser has a valid file offset
2641 #define PARSER_FLAG_FETCHED_OFFSET 0x0004
2642 #define PARSER_FLAG_USE_CODEC_TS 0x1000
2643 
2644  int64_t offset; ///< byte offset from starting packet start
2646 
2647  /**
2648  * Set by parser to 1 for key frames and 0 for non-key frames.
2649  * It is initialized to -1, so if the parser doesn't set this flag,
2650  * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
2651  * will be used.
2652  */
2654 
2655  // Timestamp generation support:
2656  /**
2657  * Synchronization point for start of timestamp generation.
2658  *
2659  * Set to >0 for sync point, 0 for no sync point and <0 for undefined
2660  * (default).
2661  *
2662  * For example, this corresponds to presence of H.264 buffering period
2663  * SEI message.
2664  */
2666 
2667  /**
2668  * Offset of the current timestamp against last timestamp sync point in
2669  * units of AVCodecContext.time_base.
2670  *
2671  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
2672  * contain a valid timestamp offset.
2673  *
2674  * Note that the timestamp of sync point has usually a nonzero
2675  * dts_ref_dts_delta, which refers to the previous sync point. Offset of
2676  * the next frame after timestamp sync point will be usually 1.
2677  *
2678  * For example, this corresponds to H.264 cpb_removal_delay.
2679  */
2681 
2682  /**
2683  * Presentation delay of current frame in units of AVCodecContext.time_base.
2684  *
2685  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
2686  * contain valid non-negative timestamp delta (presentation time of a frame
2687  * must not lie in the past).
2688  *
2689  * This delay represents the difference between decoding and presentation
2690  * time of the frame.
2691  *
2692  * For example, this corresponds to H.264 dpb_output_delay.
2693  */
2695 
2696  /**
2697  * Position of the packet in file.
2698  *
2699  * Analogous to cur_frame_pts/dts
2700  */
2702 
2703  /**
2704  * Byte position of currently parsed frame in stream.
2705  */
2707 
2708  /**
2709  * Previous frame byte position.
2710  */
2712 
2713  /**
2714  * Duration of the current frame.
2715  * For audio, this is in units of 1 / AVCodecContext.sample_rate.
2716  * For all other types, this is in units of AVCodecContext.time_base.
2717  */
2719 
2721 
2722  /**
2723  * Indicate whether a picture is coded as a frame, top field or bottom field.
2724  *
2725  * For example, H.264 field_pic_flag equal to 0 corresponds to
2726  * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
2727  * equal to 1 and bottom_field_flag equal to 0 corresponds to
2728  * AV_PICTURE_STRUCTURE_TOP_FIELD.
2729  */
2731 
2732  /**
2733  * Picture number incremented in presentation or output order.
2734  * This field may be reinitialized at the first picture of a new sequence.
2735  *
2736  * For example, this corresponds to H.264 PicOrderCnt.
2737  */
2739 
2740  /**
2741  * Dimensions of the decoded video intended for presentation.
2742  */
2743  int width;
2744  int height;
2745 
2746  /**
2747  * Dimensions of the coded video.
2748  */
2751 
2752  /**
2753  * The format of the coded data, corresponds to enum AVPixelFormat for video
2754  * and for enum AVSampleFormat for audio.
2755  *
2756  * Note that a decoder can have considerable freedom in how exactly it
2757  * decodes the data, so the format reported here might be different from the
2758  * one returned by a decoder.
2759  */
2760  int format;
2762 
2763 typedef struct AVCodecParser {
2764 #if FF_API_PARSER_CODECID
2765  int codec_ids[7]; /* several codec IDs are permitted */
2766 #else
2767  enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */
2768 #endif
2769 #if FF_API_PARSER_PRIVATE
2770  /*****************************************************************
2771  * All fields below this line are not part of the public API. They
2772  * may not be used outside of libavcodec and can be changed and
2773  * removed at will.
2774  * New public fields should be added right above.
2775  *****************************************************************
2776  */
2781  /* This callback never returns an error, a negative value means that
2782  * the frame start was in a previous packet. */
2785  AVCodecContext *avctx,
2786  const uint8_t **poutbuf, int *poutbuf_size,
2787  const uint8_t *buf, int buf_size);
2791  int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
2792 #endif
2793 } AVCodecParser;
2794 
2795 /**
2796  * Iterate over all registered codec parsers.
2797  *
2798  * @param opaque a pointer where libavcodec will store the iteration state. Must
2799  * point to NULL to start the iteration.
2800  *
2801  * @return the next registered codec parser or NULL when the iteration is
2802  * finished
2803  */
2804 const AVCodecParser *av_parser_iterate(void **opaque);
2805 
2806 #if FF_API_PARSER_CODECID
2808 #else
2810 #endif
2811 
2812 /**
2813  * Parse a packet.
2814  *
2815  * @param s parser context.
2816  * @param avctx codec context.
2817  * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
2818  * @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
2819  * @param buf input buffer.
2820  * @param buf_size buffer size in bytes without the padding. I.e. the full buffer
2821  size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
2822  To signal EOF, this should be 0 (so that the last frame
2823  can be output).
2824  * @param pts input presentation timestamp.
2825  * @param dts input decoding timestamp.
2826  * @param pos input byte position in stream.
2827  * @return the number of bytes of the input bitstream used.
2828  *
2829  * Example:
2830  * @code
2831  * while(in_len){
2832  * len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
2833  * in_data, in_len,
2834  * pts, dts, pos);
2835  * in_data += len;
2836  * in_len -= len;
2837  *
2838  * if(size)
2839  * decode_frame(data, size);
2840  * }
2841  * @endcode
2842  */
2844  AVCodecContext *avctx,
2845  uint8_t **poutbuf, int *poutbuf_size,
2846  const uint8_t *buf, int buf_size,
2847  int64_t pts, int64_t dts,
2848  int64_t pos);
2849 
2851 
2852 /**
2853  * @}
2854  * @}
2855  */
2856 
2857 /**
2858  * @addtogroup lavc_encoding
2859  * @{
2860  */
2861 
2862 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
2863  const AVSubtitle *sub);
2864 
2865 
2866 /**
2867  * @}
2868  */
2869 
2870 /**
2871  * @defgroup lavc_misc Utility functions
2872  * @ingroup libavc
2873  *
2874  * Miscellaneous utility functions related to both encoding and decoding
2875  * (or neither).
2876  * @{
2877  */
2878 
2879 /**
2880  * @defgroup lavc_misc_pixfmt Pixel formats
2881  *
2882  * Functions for working with pixel formats.
2883  * @{
2884  */
2885 
2886 /**
2887  * Return a value representing the fourCC code associated to the
2888  * pixel format pix_fmt, or 0 if no associated fourCC code can be
2889  * found.
2890  */
2892 
2893 /**
2894  * Find the best pixel format to convert to given a certain source pixel
2895  * format. When converting from one pixel format to another, information loss
2896  * may occur. For example, when converting from RGB24 to GRAY, the color
2897  * information will be lost. Similarly, other losses occur when converting from
2898  * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
2899  * the given pixel formats should be used to suffer the least amount of loss.
2900  * The pixel formats from which it chooses one, are determined by the
2901  * pix_fmt_list parameter.
2902  *
2903  *
2904  * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
2905  * @param[in] src_pix_fmt source pixel format
2906  * @param[in] has_alpha Whether the source pixel format alpha channel is used.
2907  * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
2908  * @return The best pixel format to convert to or -1 if none was found.
2909  */
2910 enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
2911  enum AVPixelFormat src_pix_fmt,
2912  int has_alpha, int *loss_ptr);
2913 
2915 
2916 /**
2917  * @}
2918  */
2919 
2920 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
2921 
2922 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
2923 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
2924 //FIXME func typedef
2925 
2926 /**
2927  * Fill AVFrame audio data and linesize pointers.
2928  *
2929  * The buffer buf must be a preallocated buffer with a size big enough
2930  * to contain the specified samples amount. The filled AVFrame data
2931  * pointers will point to this buffer.
2932  *
2933  * AVFrame extended_data channel pointers are allocated if necessary for
2934  * planar audio.
2935  *
2936  * @param frame the AVFrame
2937  * frame->nb_samples must be set prior to calling the
2938  * function. This function fills in frame->data,
2939  * frame->extended_data, frame->linesize[0].
2940  * @param nb_channels channel count
2941  * @param sample_fmt sample format
2942  * @param buf buffer to use for frame data
2943  * @param buf_size size of buffer
2944  * @param align plane size sample alignment (0 = default)
2945  * @return >=0 on success, negative error code on failure
2946  * @todo return the size in bytes required to store the samples in
2947  * case of success, at the next libavutil bump
2948  */
2949 int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
2950  enum AVSampleFormat sample_fmt, const uint8_t *buf,
2951  int buf_size, int align);
2952 
2953 /**
2954  * Reset the internal codec state / flush internal buffers. Should be called
2955  * e.g. when seeking or when switching to a different stream.
2956  *
2957  * @note for decoders, this function just releases any references the decoder
2958  * might keep internally, but the caller's references remain valid.
2959  *
2960  * @note for encoders, this function will only do something if the encoder
2961  * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder
2962  * will drain any remaining packets, and can then be reused for a different
2963  * stream (as opposed to sending a null frame which will leave the encoder
2964  * in a permanent EOF state after draining). This can be desirable if the
2965  * cost of tearing down and replacing the encoder instance is high.
2966  */
2968 
2969 /**
2970  * Return audio frame duration.
2971  *
2972  * @param avctx codec context
2973  * @param frame_bytes size of the frame, or 0 if unknown
2974  * @return frame duration, in samples, if known. 0 if not able to
2975  * determine.
2976  */
2977 int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes);
2978 
2979 /* memory */
2980 
2981 /**
2982  * Same behaviour av_fast_malloc but the buffer has additional
2983  * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
2984  *
2985  * In addition the whole buffer will initially and after resizes
2986  * be 0-initialized so that no uninitialized data will ever appear.
2987  */
2988 void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
2989 
2990 /**
2991  * Same behaviour av_fast_padded_malloc except that buffer will always
2992  * be 0-initialized after call.
2993  */
2994 void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
2995 
2996 /**
2997  * @return a positive value if s is open (i.e. avcodec_open2() was called on it),
2998  * 0 otherwise.
2999  */
3001 
3002 /**
3003  * @}
3004  */
3005 
3006 #endif /* AVCODEC_AVCODEC_H */
flags
const SwsFlags flags[]
Definition: swscale.c:72
AVSubtitle
Definition: avcodec.h:2100
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:66
avcodec_encode_subtitle
int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, const AVSubtitle *sub)
Definition: encode.c:203
AVCodecContext::frame_size
int frame_size
Number of samples per channel in an audio frame.
Definition: avcodec.h:1068
AVCodecContext::hwaccel
const struct AVHWAccel * hwaccel
Hardware accelerator in use.
Definition: avcodec.h:1423
AVCodec
AVCodec.
Definition: codec.h:172
AVCodecContext::hwaccel_context
void * hwaccel_context
Legacy hardware accelerator context.
Definition: avcodec.h:1447
hw_pix_fmt
static enum AVPixelFormat hw_pix_fmt
Definition: hw_decode.c:46
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
AVCodecParserContext::pts
int64_t pts
Definition: avcodec.h:2623
AVCodecContext::alpha_mode
enum AVAlphaMode alpha_mode
Indicates how the alpha channel of the video is represented.
Definition: avcodec.h:1950
AVCodecContext::log_level_offset
int log_level_offset
Definition: avcodec.h:449
AVCodecContext::keyint_min
int keyint_min
minimum GOP size
Definition: avcodec.h:1014
avcodec_receive_packet
int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt)
Read encoded data from the encoder.
Definition: encode.c:552
AVCodecContext::workaround_bugs
int workaround_bugs
Work around bugs in encoders which sometimes cannot be detected automatically.
Definition: avcodec.h:1345
AVSubtitle::rects
AVSubtitleRect ** rects
Definition: avcodec.h:2105
AVCodecContext::get_format
enum AVPixelFormat(* get_format)(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
Callback to negotiate the pixel format.
Definition: avcodec.h:773
AVCodecParserContext::dts_sync_point
int dts_sync_point
Synchronization point for start of timestamp generation.
Definition: avcodec.h:2665
AVCodecContext::audio_service_type
enum AVAudioServiceType audio_service_type
Type of service that the audio stream conveys.
Definition: avcodec.h:1089
AVCodecContext::colorspace
enum AVColorSpace colorspace
YUV colorspace type.
Definition: avcodec.h:671
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:666
AVCodecContext::decoded_side_data
AVFrameSideData ** decoded_side_data
Array containing static side data, such as HDR10 CLL / MDCV structures.
Definition: avcodec.h:1942
AVCodecContext::av_class
const AVClass * av_class
information on struct for av_log
Definition: avcodec.h:448
AVCodecParserContext::pict_type
int pict_type
Definition: avcodec.h:2612
AVFieldOrder
AVFieldOrder
Definition: defs.h:211
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition: avcodec.h:1040
AVCodecContext::rc_min_rate
int64_t rc_min_rate
minimum bitrate
Definition: avcodec.h:1295
AVCodecParserContext::output_picture_number
int output_picture_number
Picture number incremented in presentation or output order.
Definition: avcodec.h:2738
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:49
AVHWAccel::type
enum AVMediaType type
Type of codec implemented by the hardware accelerator.
Definition: avcodec.h:1974
AV_CODEC_CONFIG_SAMPLE_RATE
@ AV_CODEC_CONFIG_SAMPLE_RATE
int, terminated by 0
Definition: avcodec.h:2562
AV_PICTURE_STRUCTURE_UNKNOWN
@ AV_PICTURE_STRUCTURE_UNKNOWN
unknown
Definition: avcodec.h:2598
AVCodecParserContext::duration
int duration
Duration of the current frame.
Definition: avcodec.h:2718
AVCodecContext::err_recognition
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
Definition: avcodec.h:1416
avcodec_string
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
Definition: avcodec.c:514
AVCodecContext::codec_descriptor
const struct AVCodecDescriptor * codec_descriptor
AVCodecDescriptor.
Definition: avcodec.h:1722
rational.h
AVCodecContext::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the entire coded stream.
Definition: avcodec.h:1781
int64_t
long long int64_t
Definition: coverity.c:34
AVSubtitleRect
Definition: avcodec.h:2073
AVSubtitle::num_rects
unsigned num_rects
Definition: avcodec.h:2104
av_parser_iterate
const AVCodecParser * av_parser_iterate(void **opaque)
Iterate over all registered codec parsers.
Definition: parsers.c:111
AVCodecContext::intra_matrix
uint16_t * intra_matrix
custom intra quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:960
AVCodecContext::mv0_threshold
int mv0_threshold
Note: Value depends upon the compare function used for fullpel ME.
Definition: avcodec.h:1028
AVCodecContext::lumi_masking
float lumi_masking
luminance masking (0-> disabled)
Definition: avcodec.h:820
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:459
AVCodecContext::color_trc
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
Definition: avcodec.h:664
AVPacketSideData
This structure stores auxiliary information for decoding, presenting, or otherwise processing the cod...
Definition: packet.h:416
AVCodecParserContext::pts_dts_delta
int pts_dts_delta
Presentation delay of current frame in units of AVCodecContext.time_base.
Definition: avcodec.h:2694
AVCodecContext::field_order
enum AVFieldOrder field_order
Field order.
Definition: avcodec.h:694
AV_CODEC_CONFIG_COLOR_RANGE
@ AV_CODEC_CONFIG_COLOR_RANGE
AVColorRange, terminated by AVCOL_RANGE_UNSPECIFIED.
Definition: avcodec.h:2565
AVHWAccel::capabilities
int capabilities
Hardware accelerated codec capabilities.
Definition: avcodec.h:1994
version_major.h
AVCodecContext::b_quant_offset
float b_quant_offset
qscale offset between IP and B-frames
Definition: avcodec.h:797
AVCodecParserContext::height
int height
Definition: avcodec.h:2744
avcodec_align_dimensions
void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height)
Modify width and height values so that they will result in a memory buffer that is acceptable for the...
Definition: utils.c:351
RcOverride::qscale
int qscale
Definition: avcodec.h:196
AVCodecContext::subtitle_header
uint8_t * subtitle_header
Definition: avcodec.h:1757
AVSubtitleRect::linesize
int linesize[4]
Definition: avcodec.h:2085
AVCodecParserContext::cur_frame_start_index
int cur_frame_start_index
Definition: avcodec.h:2632
AVCodecContext::me_pre_cmp
int me_pre_cmp
motion estimation prepass comparison function
Definition: avcodec.h:918
AVDictionary
Definition: dict.c:32
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:636
avcodec_default_get_format
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
Definition: decode.c:997
AV_CODEC_CONFIG_PIX_FORMAT
@ AV_CODEC_CONFIG_PIX_FORMAT
AVPixelFormat, terminated by AV_PIX_FMT_NONE.
Definition: avcodec.h:2560
avcodec_find_best_pix_fmt_of_list
enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Find the best pixel format to convert to given a certain source pixel format.
Definition: imgconvert.c:31
AVCodecContext::mb_decision
int mb_decision
macroblock decision mode
Definition: avcodec.h:948
avcodec_is_open
int avcodec_is_open(AVCodecContext *s)
Definition: avcodec.c:713
AVCodecContext::qmax
int qmax
maximum quantizer
Definition: avcodec.h:1259
AVCodecParserContext::coded_width
int coded_width
Dimensions of the coded video.
Definition: avcodec.h:2749
tf_sess_config.config
config
Definition: tf_sess_config.py:33
AVCodecContext::delay
int delay
Codec delay.
Definition: avcodec.h:587
AVCodecContext::me_subpel_quality
int me_subpel_quality
subpel ME quality
Definition: avcodec.h:932
AVCodecContext::mb_cmp
int mb_cmp
macroblock comparison function (not supported yet)
Definition: avcodec.h:874
AVPictureStructure
AVPictureStructure
Definition: avcodec.h:2597
avcodec_pix_fmt_to_codec_tag
unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt)
Return a value representing the fourCC code associated to the pixel format pix_fmt,...
Definition: raw.c:31
SUBTITLE_ASS
@ SUBTITLE_ASS
Formatted text, the ass field must be set by the decoder and is authoritative.
Definition: avcodec.h:2068
AVCodecParserContext::parser
const struct AVCodecParser * parser
Definition: avcodec.h:2606
AVCodecContext::framerate
AVRational framerate
Definition: avcodec.h:563
AVCodecContext::skip_top
int skip_top
Number of macroblock rows at the top which are skipped.
Definition: avcodec.h:1701
AVCodecParserContext::offset
int64_t offset
byte offset from starting packet start
Definition: avcodec.h:2644
AVHWAccel
Definition: avcodec.h:1961
AVCodecParserContext::key_frame
int key_frame
Set by parser to 1 for key frames and 0 for non-key frames.
Definition: avcodec.h:2653
AVCodecContext::skip_idct
enum AVDiscard skip_idct
Skip IDCT/dequantization for selected frames.
Definition: avcodec.h:1673
AVCodecContext::i_quant_factor
float i_quant_factor
qscale factor between P- and I-frames If > 0 then the last P-frame quantizer will be used (q = lastp_...
Definition: avcodec.h:806
AVCodecContext::nsse_weight
int nsse_weight
noise vs.
Definition: avcodec.h:855
AVCodecContext::codec
const struct AVCodec * codec
Definition: avcodec.h:452
AVCodecContext::ch_layout
AVChannelLayout ch_layout
Audio channel layout.
Definition: avcodec.h:1055
AVCodecContext::skip_frame
enum AVDiscard skip_frame
Skip decoding for selected frames.
Definition: avcodec.h:1680
AVCodecContext::thread_count
int thread_count
thread count is used to decide how many independent tasks should be passed to execute()
Definition: avcodec.h:1579
samplefmt.h
AVSubtitleRect::x
int x
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2074
AVCodecContext::initial_padding
int initial_padding
Audio only.
Definition: avcodec.h:1114
AVCodecContext::refs
int refs
number of reference frames
Definition: avcodec.h:701
avcodec_default_execute2
int avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int, int), void *arg, int *ret, int count)
AVCodecContext::flags
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:500
AVCodecContext::bit_rate_tolerance
int bit_rate_tolerance
number of bits the bitstream is allowed to diverge from the reference.
Definition: avcodec.h:1227
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
AVCodecContext::dct_algo
int dct_algo
DCT algorithm, see FF_DCT_* below.
Definition: avcodec.h:1530
av_parser_init
AVCodecParserContext * av_parser_init(int codec_id)
Definition: parser.c:36
pts
static int64_t pts
Definition: transcode_aac.c:644
AVCodecContext::coded_height
int coded_height
Definition: avcodec.h:619
AVCodecContext::max_samples
int64_t max_samples
The number of samples per frame to maximally accept.
Definition: avcodec.h:1843
codec.h
AVCodecParserContext::dts
int64_t dts
Definition: avcodec.h:2624
AVSubtitleRect::ass
char * ass
0 terminated ASS/SSA compatible event line.
Definition: avcodec.h:2097
avsubtitle_free
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
Definition: avcodec.c:421
AVCodecContext::get_buffer2
int(* get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags)
This callback is called at the beginning of each frame to get data buffer(s) for it.
Definition: avcodec.h:1218
avcodec_decode_subtitle2
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, const AVPacket *avpkt)
Decode a subtitle message.
Definition: decode.c:926
AV_PICTURE_STRUCTURE_FRAME
@ AV_PICTURE_STRUCTURE_FRAME
coded as frame
Definition: avcodec.h:2601
RcOverride::quality_factor
float quality_factor
Definition: avcodec.h:197
AVCodecContext::color_primaries
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
Definition: avcodec.h:657
AVCodecParserContext::cur_frame_end
int64_t cur_frame_end[AV_PARSER_PTS_NB]
Definition: avcodec.h:2645
AVCodecContext::rc_initial_buffer_occupancy
int rc_initial_buffer_occupancy
Number of bits which should be loaded into the rc buffer before decoding starts.
Definition: avcodec.h:1316
codec_id.h
AVCodecContext::extradata_size
int extradata_size
Definition: avcodec.h:527
AVCodecContext::has_b_frames
int has_b_frames
Size of the frame reordering buffer in the decoder.
Definition: avcodec.h:709
AVCodecContext::side_data_prefer_packet
int * side_data_prefer_packet
Decoding only.
Definition: avcodec.h:1926
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
Definition: options.c:149
avcodec_receive_frame_flags
int avcodec_receive_frame_flags(AVCodecContext *avctx, AVFrame *frame, unsigned flags)
Return decoded output data from a decoder or encoder (when the AV_CODEC_FLAG_RECON_FRAME flag is used...
Definition: avcodec.c:718
AVCodecDescriptor
This struct describes the properties of a single codec described by an AVCodecID.
Definition: codec_desc.h:38
AV_CODEC_CONFIG_SAMPLE_FORMAT
@ AV_CODEC_CONFIG_SAMPLE_FORMAT
AVSampleFormat, terminated by AV_SAMPLE_FMT_NONE.
Definition: avcodec.h:2563
s
#define s(width, name)
Definition: cbs_vp9.c:198
AVCodecContext::stats_in
char * stats_in
pass2 encoding statistics input buffer Concatenated stuff from stats_out of pass1 should be placed he...
Definition: avcodec.h:1338
AVCodecContext::global_quality
int global_quality
Global quality for codecs which cannot change it per frame.
Definition: avcodec.h:1235
AVCodecParserContext::fetch_timestamp
int fetch_timestamp
Definition: avcodec.h:2629
AVCodecContext::nb_decoded_side_data
int nb_decoded_side_data
Definition: avcodec.h:1943
RcOverride
Definition: avcodec.h:193
pix_fmt
static enum AVPixelFormat pix_fmt
Definition: demux_decode.c:41
AVCodecParserContext::last_pts
int64_t last_pts
Definition: avcodec.h:2627
AVSubtitleRect::y
int y
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2075
AVCodecContext::error_concealment
int error_concealment
error concealment flags
Definition: avcodec.h:1382
avcodec_receive_frame
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Alias for avcodec_receive_frame_flags(avctx, frame, 0).
Definition: avcodec.c:731
AVSubtitleType
AVSubtitleType
Definition: avcodec.h:2053
AVCodecContext::thread_type
int thread_type
Which multithreading methods to use.
Definition: avcodec.h:1589
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1571
avcodec_fill_audio_frame
int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align)
Fill AVFrame audio data and linesize pointers.
Definition: utils.c:366
RcOverride::start_frame
int start_frame
Definition: avcodec.h:194
AVCodecParserContext::format
int format
The format of the coded data, corresponds to enum AVPixelFormat for video and for enum AVSampleFormat...
Definition: avcodec.h:2760
AVSubtitle::pts
int64_t pts
Same as packet pts, in AV_TIME_BASE.
Definition: avcodec.h:2106
avcodec_align_dimensions2
void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int linesize_align[AV_NUM_DATA_POINTERS])
Modify width and height values so that they will result in a memory buffer that is acceptable for the...
Definition: utils.c:141
AVCodecContext::max_pixels
int64_t max_pixels
The number of pixels per image to maximally accept.
Definition: avcodec.h:1800
codec_id
enum AVCodecID codec_id
Definition: vaapi_decode.c:410
AVCodecContext::rc_max_rate
int64_t rc_max_rate
maximum bitrate
Definition: avcodec.h:1288
AVCodecContext::error
uint64_t error[AV_NUM_DATA_POINTERS]
error
Definition: avcodec.h:1523
AVSubtitleRect::text
char * text
0 terminated plain UTF-8 text
Definition: avcodec.h:2090
AVCodecContext::codec_id
enum AVCodecID codec_id
Definition: avcodec.h:453
AVCodecContext::p_masking
float p_masking
p block masking (0-> disabled)
Definition: avcodec.h:841
arg
const char * arg
Definition: jacosubdec.c:65
AVCodecParserContext::dts_ref_dts_delta
int dts_ref_dts_delta
Offset of the current timestamp against last timestamp sync point in units of AVCodecContext....
Definition: avcodec.h:2680
AVCodecParserContext::repeat_pict
int repeat_pict
This field is used for proper frame duration computation in lavf.
Definition: avcodec.h:2622
AV_PICTURE_STRUCTURE_BOTTOM_FIELD
@ AV_PICTURE_STRUCTURE_BOTTOM_FIELD
coded as bottom field
Definition: avcodec.h:2600
AVCodecContext::rc_buffer_size
int rc_buffer_size
decoder bitstream buffer size
Definition: avcodec.h:1273
AVCodecContext::sub_charenc
char * sub_charenc
Character encoding of the input subtitles file.
Definition: avcodec.h:1729
AVCodecParameters::avcodec_parameters_to_context
int avcodec_parameters_to_context(AVCodecContext *codec, const struct AVCodecParameters *par)
Fill the codec context based on the values from the supplied codec parameters.
AVSubtitleRect::w
int w
width of pict, undefined when pict is not set
Definition: avcodec.h:2076
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:76
avcodec_get_class
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
Definition: options.c:184
AVCodecContext::apply_cropping
int apply_cropping
Video decoding only.
Definition: avcodec.h:1827
AVCodecContext::color_range
enum AVColorRange color_range
MPEG vs JPEG YUV range.
Definition: avcodec.h:681
AV_CODEC_CONFIG_FRAME_RATE
@ AV_CODEC_CONFIG_FRAME_RATE
AVRational, terminated by {0, 0}.
Definition: avcodec.h:2561
AVCodecContext::slice_flags
int slice_flags
slice flags
Definition: avcodec.h:716
avcodec_free_context
void avcodec_free_context(AVCodecContext **avctx)
Free the codec context and everything associated with it and write NULL to the provided pointer.
Definition: options.c:164
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVCodecContext::nb_coded_side_data
int nb_coded_side_data
Definition: avcodec.h:1782
AVCodecContext::qblur
float qblur
amount of qscale smoothing over time (0.0-1.0)
Definition: avcodec.h:1245
AV_PICTURE_STRUCTURE_TOP_FIELD
@ AV_PICTURE_STRUCTURE_TOP_FIELD
coded as top field
Definition: avcodec.h:2599
AVCodecContext::bit_rate
int64_t bit_rate
the average bitrate
Definition: avcodec.h:493
AVCodecContext::subtitle_header_size
int subtitle_header_size
Header containing style information for text subtitles.
Definition: avcodec.h:1756
AVSubtitleRect::data
uint8_t * data[4]
data+linesize for the bitmap of this subtitle.
Definition: avcodec.h:2084
AVCodecContext::trailing_padding
int trailing_padding
Audio only.
Definition: avcodec.h:1125
options
Definition: swscale.c:45
AVCodecContext::ildct_cmp
int ildct_cmp
interlaced DCT comparison function
Definition: avcodec.h:880
avcodec_license
const char * avcodec_license(void)
Return the libavcodec license.
Definition: version.c:52
AVCodecContext::rc_min_vbv_overflow_use
float rc_min_vbv_overflow_use
Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow.
Definition: avcodec.h:1309
avcodec_open2
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
Definition: avcodec.c:144
AVCodecParserContext::flags
int flags
Definition: avcodec.h:2637
avcodec_version
unsigned avcodec_version(void)
Return the LIBAVCODEC_VERSION_INT constant.
Definition: version.c:32
AVCodecContext::me_cmp
int me_cmp
motion estimation comparison function
Definition: avcodec.h:862
AVCodecParserContext::picture_structure
enum AVPictureStructure picture_structure
Indicate whether a picture is coded as a frame, top field or bottom field.
Definition: avcodec.h:2730
AVCodecContext::trellis
int trellis
trellis RD quantization
Definition: avcodec.h:1323
AVCodecContext::level
int level
Encoding level descriptor.
Definition: avcodec.h:1646
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
AVAudioServiceType
AVAudioServiceType
Definition: defs.h:235
avcodec_get_subtitle_rect_class
const AVClass * avcodec_get_subtitle_rect_class(void)
Get the AVClass for AVSubtitleRect.
Definition: options.c:209
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:49
AVCodecContext::temporal_cplx_masking
float temporal_cplx_masking
temporary complexity masking (0-> disabled)
Definition: avcodec.h:827
AVCodecContext::qcompress
float qcompress
amount of qscale change between easy & hard scenes (0.0-1.0)
Definition: avcodec.h:1244
AVCodecContext::time_base
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
Definition: avcodec.h:547
AVAlphaMode
AVAlphaMode
Correlation between the alpha channel and color values.
Definition: pixfmt.h:810
AVCodecContext::lowres
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
Definition: avcodec.h:1715
avcodec_get_supported_config
int avcodec_get_supported_config(const AVCodecContext *avctx, const AVCodec *codec, enum AVCodecConfig config, unsigned flags, const void **out_configs, int *out_num_configs)
Retrieve a list of all supported values for a given configuration type.
Definition: avcodec.c:831
AV_CODEC_CONFIG_CHANNEL_LAYOUT
@ AV_CODEC_CONFIG_CHANNEL_LAYOUT
AVChannelLayout, terminated by {0}.
Definition: avcodec.h:2564
AVCodecContext::stats_out
char * stats_out
pass1 encoding statistics output buffer
Definition: avcodec.h:1330
AVCodecContext::rc_override
RcOverride * rc_override
Definition: avcodec.h:1281
AVCodecContext::flags2
int flags2
AV_CODEC_FLAG2_*.
Definition: avcodec.h:507
AVMediaType
AVMediaType
Definition: avutil.h:198
AVCodecParserContext::frame_offset
int64_t frame_offset
Definition: avcodec.h:2607
AVCodecContext::gop_size
int gop_size
the number of pictures in a group of pictures, or 0 for intra_only
Definition: avcodec.h:1021
height
#define height
Definition: dsp.h:89
AVCodecParser::codec_ids
int codec_ids[7]
Definition: avcodec.h:2765
AVCodecContext::extra_hw_frames
int extra_hw_frames
Video decoding only.
Definition: avcodec.h:1516
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:319
AVCodecParserContext::next_frame_offset
int64_t next_frame_offset
Definition: avcodec.h:2610
AVCodecParserContext::cur_frame_offset
int64_t cur_frame_offset[AV_PARSER_PTS_NB]
Definition: avcodec.h:2633
AVCodecContext::sample_fmt
enum AVSampleFormat sample_fmt
audio sample format
Definition: avcodec.h:1047
AVCodecContext::pkt_timebase
AVRational pkt_timebase
Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed.
Definition: avcodec.h:554
size
int size
Definition: twinvq_data.h:10344
AVCodecParserContext::width
int width
Dimensions of the decoded video intended for presentation.
Definition: avcodec.h:2743
AV_CODEC_CONFIG_ALPHA_MODE
@ AV_CODEC_CONFIG_ALPHA_MODE
AVAlphaMode, terminated by AVALPHA_MODE_UNSPECIFIED.
Definition: avcodec.h:2567
AV_NUM_DATA_POINTERS
#define AV_NUM_DATA_POINTERS
Definition: frame.h:460
AVCodecParser::split
attribute_deprecated int(* split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
Definition: avcodec.h:2791
AVCodecContext::me_range
int me_range
maximum motion estimation search range in subpel units If 0 then no limit.
Definition: avcodec.h:941
AVCodecContext::skip_alpha
int skip_alpha
Skip processing alpha if supported by codec.
Definition: avcodec.h:1694
AVCodecContext::chroma_intra_matrix
uint16_t * chroma_intra_matrix
custom intra quantization matrix
Definition: avcodec.h:976
AVCodecContext::skip_bottom
int skip_bottom
Number of macroblock rows at the bottom which are skipped.
Definition: avcodec.h:1708
AVCodecContext::last_predictor_count
int last_predictor_count
amount of previous MV predictors (2a+1 x 2a+1 square)
Definition: avcodec.h:911
AVSubtitle::end_display_time
uint32_t end_display_time
Definition: avcodec.h:2103
frame.h
AVSubtitleRect::type
enum AVSubtitleType type
Definition: avcodec.h:2088
SUBTITLE_TEXT
@ SUBTITLE_TEXT
Plain text, the text field must be set by the decoder and is authoritative.
Definition: avcodec.h:2062
buffer.h
align
static const uint8_t *BS_FUNC() align(BSCTX *bc)
Skip bits to a byte boundary.
Definition: bitstream_template.h:419
attribute_deprecated
#define attribute_deprecated
Definition: attributes.h:135
SUBTITLE_NONE
@ SUBTITLE_NONE
Definition: avcodec.h:2054
encode
static void encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *output)
Definition: encode_audio.c:94
AVCodecContext::me_sub_cmp
int me_sub_cmp
subpixel motion estimation comparison function
Definition: avcodec.h:868
avcodec_default_execute
int avcodec_default_execute(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
Definition: avcodec.c:73
offset
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
Definition: writing_filters.txt:86
AVCodecContext::request_sample_fmt
enum AVSampleFormat request_sample_fmt
desired sample format
Definition: avcodec.h:1097
attributes.h
AVCodecInternal
Definition: internal.h:49
AVCodecContext::skip_loop_filter
enum AVDiscard skip_loop_filter
Skip loop filtering for selected frames.
Definition: avcodec.h:1666
AVCodecContext::nb_side_data_prefer_packet
unsigned nb_side_data_prefer_packet
Number of entries in side_data_prefer_packet.
Definition: avcodec.h:1930
AVCodecParser::parser_parse
attribute_deprecated int(* parser_parse)(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size)
Definition: avcodec.h:2784
SUBTITLE_BITMAP
@ SUBTITLE_BITMAP
A bitmap, pict will be set.
Definition: avcodec.h:2056
AVCodecContext::b_quant_factor
float b_quant_factor
qscale factor between IP and B-frames If > 0 then the last P-frame quantizer will be used (q= lastp_q...
Definition: avcodec.h:790
AVCodecParserContext::cur_frame_pts
int64_t cur_frame_pts[AV_PARSER_PTS_NB]
Definition: avcodec.h:2634
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:796
AVCodecParserContext::cur_frame_pos
int64_t cur_frame_pos[AV_PARSER_PTS_NB]
Position of the packet in file.
Definition: avcodec.h:2701
AVHWAccel::name
const char * name
Name of the hardware accelerated codec.
Definition: avcodec.h:1967
AVSubtitleRect::flags
int flags
Definition: avcodec.h:2087
AVCodecContext::bits_per_coded_sample
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
Definition: avcodec.h:1564
avcodec_default_get_buffer2
int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags)
The default callback for AVCodecContext.get_buffer2().
Definition: get_buffer.c:253
avcodec_send_packet
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
Definition: decode.c:721
AVCodecParserContext::pos
int64_t pos
Byte position of currently parsed frame in stream.
Definition: avcodec.h:2706
AVSubtitle::format
uint16_t format
Definition: avcodec.h:2101
log.h
RcOverride::end_frame
int end_frame
Definition: avcodec.h:195
AVCodecContext::extradata
uint8_t * extradata
Out-of-band global headers that may be used by some codecs.
Definition: avcodec.h:526
AVSubtitleRect::nb_colors
int nb_colors
number of colors in pict, undefined when pict is not set
Definition: avcodec.h:2078
packet.h
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:700
AVCodecContext::cutoff
int cutoff
Audio cutoff bandwidth (0 means "automatic")
Definition: avcodec.h:1082
AVCodecContext::hwaccel_flags
int hwaccel_flags
Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated decoding (if active).
Definition: avcodec.h:1502
AVCodecParserContext::cur_offset
int64_t cur_offset
Definition: avcodec.h:2608
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:55
av_fast_padded_malloc
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
Same behaviour av_fast_malloc but the buffer has additional AV_INPUT_BUFFER_PADDING_SIZE at the end w...
Definition: utils.c:53
AVCodecContext::dia_size
int dia_size
ME diamond size & shape.
Definition: avcodec.h:904
AVCodecContext::dump_separator
uint8_t * dump_separator
dump format separator.
Definition: avcodec.h:1765
AVCodecContext::mb_lmin
int mb_lmin
minimum MB Lagrange multiplier
Definition: avcodec.h:994
av_get_audio_frame_duration
int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
Return audio frame duration.
Definition: utils.c:803
AVCodecContext::idct_algo
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
Definition: avcodec.h:1544
AVCodecContext::hw_device_ctx
AVBufferRef * hw_device_ctx
A reference to the AVHWDeviceContext describing the device which will be used by a hardware encoder/d...
Definition: avcodec.h:1493
AVCodecContext::chroma_sample_location
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples.
Definition: avcodec.h:688
AVCodecContext::height
int height
Definition: avcodec.h:604
avcodec_send_frame
int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame)
Supply a raw video or audio frame to the encoder.
Definition: encode.c:519
AVCodecContext::pix_fmt
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:643
AVCodecContext::hw_frames_ctx
AVBufferRef * hw_frames_ctx
A reference to the AVHWFramesContext describing the input (for encoding) or output (decoding) frames.
Definition: avcodec.h:1471
AVCodecParserContext
Definition: avcodec.h:2604
AVCodecContext::sub_charenc_mode
int sub_charenc_mode
Subtitles character encoding mode.
Definition: avcodec.h:1737
AVCodecContext::frame_num
int64_t frame_num
Frame counter, set by libavcodec.
Definition: avcodec.h:1896
AVCodecParser::parser_close
attribute_deprecated void(* parser_close)(AVCodecParserContext *s)
Definition: avcodec.h:2789
avcodec_get_hw_frames_parameters
int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, AVBufferRef *device_ref, enum AVPixelFormat hw_pix_fmt, AVBufferRef **out_frames_ref)
Create and return a AVHWFramesContext with values adequate for hardware decoding.
Definition: decode.c:1111
ret
ret
Definition: filter_design.txt:187
AVSubtitleRect::h
int h
height of pict, undefined when pict is not set
Definition: avcodec.h:2077
AVCodecContext::block_align
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs.
Definition: avcodec.h:1075
pixfmt.h
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal codec state / flush internal buffers.
Definition: avcodec.c:389
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:265
AVCodecParser::priv_data_size
attribute_deprecated int priv_data_size
Definition: avcodec.h:2778
AVCodecParserContext::coded_height
int coded_height
Definition: avcodec.h:2750
AVCodecContext::strict_std_compliance
int strict_std_compliance
strictly follow the standard (MPEG-4, ...).
Definition: avcodec.h:1375
AVCodecContext::opaque
void * opaque
Private data of the user, can be used to carry app specific stuff.
Definition: avcodec.h:485
pos
unsigned int pos
Definition: spdifenc.c:414
dict.h
AVCodecContext::intra_dc_precision
attribute_deprecated int intra_dc_precision
precision of the intra DC coefficient - 8
Definition: avcodec.h:986
AVCodecContext::draw_horiz_band
void(* draw_horiz_band)(struct AVCodecContext *s, const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], int y, int type, int height)
If non NULL, 'draw_horiz_band' is called by the libavcodec decoder to draw a horizontal band.
Definition: avcodec.h:744
AVCodecContext::max_qdiff
int max_qdiff
maximum quantizer difference between frames
Definition: avcodec.h:1266
AVCodecContext::dark_masking
float dark_masking
darkness masking (0-> disabled)
Definition: avcodec.h:848
AVCodecContext
main external API structure.
Definition: avcodec.h:443
AVCodecContext::active_thread_type
int active_thread_type
Which multithreading methods are in use by the codec.
Definition: avcodec.h:1598
c2
static const uint64_t c2
Definition: murmur3.c:53
AVCodecParserContext::field_order
enum AVFieldOrder field_order
Definition: avcodec.h:2720
AVCodecContext::execute
int(* execute)(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size)
The codec may call this to execute several independent things.
Definition: avcodec.h:1609
channel_layout.h
AVCodecContext::qmin
int qmin
minimum quantizer
Definition: avcodec.h:1252
AVCodecContext::bidir_refine
int bidir_refine
Definition: avcodec.h:1007
AVCodecContext::profile
int profile
profile
Definition: avcodec.h:1636
defs.h
av_fast_padded_mallocz
void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size)
Same behaviour av_fast_padded_malloc except that buffer will always be 0-initialized after call.
Definition: utils.c:66
AVCodecContext::get_encode_buffer
int(* get_encode_buffer)(struct AVCodecContext *s, AVPacket *pkt, int flags)
This callback is called at the beginning of each packet to get a data buffer for it.
Definition: avcodec.h:1885
AVCodecContext::spatial_cplx_masking
float spatial_cplx_masking
spatial complexity masking (0-> disabled)
Definition: avcodec.h:834
AVCodecContext::i_quant_offset
float i_quant_offset
qscale offset between P and I-frames
Definition: avcodec.h:813
AVCodecContext::discard_damaged_percentage
int discard_damaged_percentage
The percentage of damaged samples to discard a frame.
Definition: avcodec.h:1835
AVCodecContext::mb_lmax
int mb_lmax
maximum MB Lagrange multiplier
Definition: avcodec.h:1001
AVCodecContext::export_side_data
int export_side_data
Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of metadata exported in frame,...
Definition: avcodec.h:1792
AVCodecContext::pre_dia_size
int pre_dia_size
ME prepass diamond size & shape.
Definition: avcodec.h:925
AVCodecContext::debug
int debug
debug
Definition: avcodec.h:1392
AVCodecContext::coded_width
int coded_width
Bitstream width / height, may be different from width/height e.g.
Definition: avcodec.h:619
AVCodecContext::codec_type
enum AVMediaType codec_type
Definition: avcodec.h:451
AVCodecContext::seek_preroll
int seek_preroll
Number of samples to skip after a discontinuity.
Definition: avcodec.h:1132
av_parser_parse2
int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int64_t pts, int64_t dts, int64_t pos)
Parse a packet.
Definition: parser.c:124
avutil.h
AVCodecContext::max_b_frames
int max_b_frames
maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 re...
Definition: avcodec.h:781
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
AVCodecContext::rc_max_available_vbv_use
float rc_max_available_vbv_use
Ratecontrol attempt to use, at maximum, of what can be used without an underflow.
Definition: avcodec.h:1302
AVCodecParameters::avcodec_parameters_from_context
int avcodec_parameters_from_context(struct AVCodecParameters *par, const AVCodecContext *codec)
Fill the parameters struct based on the values from the supplied codec context.
Definition: codec_par.c:138
AVFrameSideData
Structure to hold side data for an AVFrame.
Definition: frame.h:314
AVCodecContext::codec_tag
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
Definition: avcodec.h:468
codec_par.h
AV_PARSER_PTS_NB
#define AV_PARSER_PTS_NB
Definition: avcodec.h:2631
AVCodecContext::slices
int slices
Number of slices.
Definition: avcodec.h:1037
AVPacket
This structure stores compressed data.
Definition: packet.h:572
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:470
avcodec_default_get_encode_buffer
int avcodec_default_get_encode_buffer(AVCodecContext *s, AVPacket *pkt, int flags)
The default callback for AVCodecContext.get_encode_buffer().
Definition: encode.c:83
AVCodecParserContext::last_pos
int64_t last_pos
Previous frame byte position.
Definition: avcodec.h:2711
AVCodecContext::inter_matrix
uint16_t * inter_matrix
custom inter quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:969
AVCodecParser
Definition: avcodec.h:2763
AVCodecContext::rc_override_count
int rc_override_count
ratecontrol override, see RcOverride
Definition: avcodec.h:1280
avcodec_configuration
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
Definition: version.c:47
AVCodecContext::width
int width
picture width / height.
Definition: avcodec.h:604
AVCodecContext::properties
attribute_deprecated unsigned properties
Properties of the stream that gets decoded.
Definition: avcodec.h:1655
AVCodecParserContext::priv_data
void * priv_data
Definition: avcodec.h:2605
AVCodecContext::sw_pix_fmt
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:650
pkt
static AVPacket * pkt
Definition: demux_decode.c:55
AVCodecParserContext::cur_frame_dts
int64_t cur_frame_dts[AV_PARSER_PTS_NB]
Definition: avcodec.h:2635
width
#define width
Definition: dsp.h:89
AVCodecContext::codec_whitelist
char * codec_whitelist
',' separated list of allowed decoders.
Definition: avcodec.h:1773
AVDiscard
AVDiscard
Definition: defs.h:223
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:742
AVCodecParserContext::last_dts
int64_t last_dts
Definition: avcodec.h:2628
codec_desc.h
AVCodecContext::execute2
int(* execute2)(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count)
The codec may call this to execute several independent things.
Definition: avcodec.h:1628
AVHWAccel::pix_fmt
enum AVPixelFormat pix_fmt
Supported pixel format.
Definition: avcodec.h:1988
AVCodecContext::sample_aspect_ratio
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel.
Definition: avcodec.h:628
AVCodecConfig
AVCodecConfig
Definition: avcodec.h:2559
AVSubtitle::start_display_time
uint32_t start_display_time
Definition: avcodec.h:2102
src
#define src
Definition: vp8dsp.c:248
AVCodecParser::parser_init
attribute_deprecated int(* parser_init)(AVCodecParserContext *s)
Definition: avcodec.h:2780
AVCodecContext::compression_level
int compression_level
Definition: avcodec.h:1241
av_parser_close
void av_parser_close(AVCodecParserContext *s)
Definition: parser.c:207
AVHWAccel::id
enum AVCodecID id
Codec implemented by the hardware accelerator.
Definition: avcodec.h:1981
AV_CODEC_CONFIG_COLOR_SPACE
@ AV_CODEC_CONFIG_COLOR_SPACE
AVColorSpace, terminated by AVCOL_SPC_UNSPECIFIED.
Definition: avcodec.h:2566