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 <errno.h>
31 #include "libavutil/samplefmt.h"
32 #include "libavutil/attributes.h"
33 #include "libavutil/avutil.h"
34 #include "libavutil/buffer.h"
35 #include "libavutil/cpu.h"
37 #include "libavutil/dict.h"
38 #include "libavutil/frame.h"
39 #include "libavutil/hwcontext.h"
40 #include "libavutil/log.h"
41 #include "libavutil/pixfmt.h"
42 #include "libavutil/rational.h"
43 
44 #include "bsf.h"
45 #include "codec.h"
46 #include "codec_desc.h"
47 #include "codec_par.h"
48 #include "codec_id.h"
49 #include "packet.h"
50 #include "version.h"
51 
52 /**
53  * @defgroup libavc libavcodec
54  * Encoding/Decoding Library
55  *
56  * @{
57  *
58  * @defgroup lavc_decoding Decoding
59  * @{
60  * @}
61  *
62  * @defgroup lavc_encoding Encoding
63  * @{
64  * @}
65  *
66  * @defgroup lavc_codec Codecs
67  * @{
68  * @defgroup lavc_codec_native Native Codecs
69  * @{
70  * @}
71  * @defgroup lavc_codec_wrappers External library wrappers
72  * @{
73  * @}
74  * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge
75  * @{
76  * @}
77  * @}
78  * @defgroup lavc_internal Internal
79  * @{
80  * @}
81  * @}
82  */
83 
84 /**
85  * @ingroup libavc
86  * @defgroup lavc_encdec send/receive encoding and decoding API overview
87  * @{
88  *
89  * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/
90  * avcodec_receive_packet() functions provide an encode/decode API, which
91  * decouples input and output.
92  *
93  * The API is very similar for encoding/decoding and audio/video, and works as
94  * follows:
95  * - Set up and open the AVCodecContext as usual.
96  * - Send valid input:
97  * - For decoding, call avcodec_send_packet() to give the decoder raw
98  * compressed data in an AVPacket.
99  * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame
100  * containing uncompressed audio or video.
101  *
102  * In both cases, it is recommended that AVPackets and AVFrames are
103  * refcounted, or libavcodec might have to copy the input data. (libavformat
104  * always returns refcounted AVPackets, and av_frame_get_buffer() allocates
105  * refcounted AVFrames.)
106  * - Receive output in a loop. Periodically call one of the avcodec_receive_*()
107  * functions and process their output:
108  * - For decoding, call avcodec_receive_frame(). On success, it will return
109  * an AVFrame containing uncompressed audio or video data.
110  * - For encoding, call avcodec_receive_packet(). On success, it will return
111  * an AVPacket with a compressed frame.
112  *
113  * Repeat this call until it returns AVERROR(EAGAIN) or an error. The
114  * AVERROR(EAGAIN) return value means that new input data is required to
115  * return new output. In this case, continue with sending input. For each
116  * input frame/packet, the codec will typically return 1 output frame/packet,
117  * but it can also be 0 or more than 1.
118  *
119  * At the beginning of decoding or encoding, the codec might accept multiple
120  * input frames/packets without returning a frame, until its internal buffers
121  * are filled. This situation is handled transparently if you follow the steps
122  * outlined above.
123  *
124  * In theory, sending input can result in EAGAIN - this should happen only if
125  * not all output was received. You can use this to structure alternative decode
126  * or encode loops other than the one suggested above. For example, you could
127  * try sending new input on each iteration, and try to receive output if that
128  * returns EAGAIN.
129  *
130  * End of stream situations. These require "flushing" (aka draining) the codec,
131  * as the codec might buffer multiple frames or packets internally for
132  * performance or out of necessity (consider B-frames).
133  * This is handled as follows:
134  * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding)
135  * or avcodec_send_frame() (encoding) functions. This will enter draining
136  * mode.
137  * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet()
138  * (encoding) in a loop until AVERROR_EOF is returned. The functions will
139  * not return AVERROR(EAGAIN), unless you forgot to enter draining mode.
140  * - Before decoding can be resumed again, the codec has to be reset with
141  * avcodec_flush_buffers().
142  *
143  * Using the API as outlined above is highly recommended. But it is also
144  * possible to call functions outside of this rigid schema. For example, you can
145  * call avcodec_send_packet() repeatedly without calling
146  * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed
147  * until the codec's internal buffer has been filled up (which is typically of
148  * size 1 per output frame, after initial input), and then reject input with
149  * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to
150  * read at least some output.
151  *
152  * Not all codecs will follow a rigid and predictable dataflow; the only
153  * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on
154  * one end implies that a receive/send call on the other end will succeed, or
155  * at least will not fail with AVERROR(EAGAIN). In general, no codec will
156  * permit unlimited buffering of input or output.
157  *
158  * This API replaces the following legacy functions:
159  * - avcodec_decode_video2() and avcodec_decode_audio4():
160  * Use avcodec_send_packet() to feed input to the decoder, then use
161  * avcodec_receive_frame() to receive decoded frames after each packet.
162  * Unlike with the old video decoding API, multiple frames might result from
163  * a packet. For audio, splitting the input packet into frames by partially
164  * decoding packets becomes transparent to the API user. You never need to
165  * feed an AVPacket to the API twice (unless it is rejected with AVERROR(EAGAIN) - then
166  * no data was read from the packet).
167  * Additionally, sending a flush/draining packet is required only once.
168  * - avcodec_encode_video2()/avcodec_encode_audio2():
169  * Use avcodec_send_frame() to feed input to the encoder, then use
170  * avcodec_receive_packet() to receive encoded packets.
171  * Providing user-allocated buffers for avcodec_receive_packet() is not
172  * possible.
173  * - The new API does not handle subtitles yet.
174  *
175  * Mixing new and old function calls on the same AVCodecContext is not allowed,
176  * and will result in undefined behavior.
177  *
178  * Some codecs might require using the new API; using the old API will return
179  * an error when calling it. All codecs support the new API.
180  *
181  * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This
182  * would be an invalid state, which could put the codec user into an endless
183  * loop. The API has no concept of time either: it cannot happen that trying to
184  * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second
185  * later accepts the packet (with no other receive/flush API calls involved).
186  * The API is a strict state machine, and the passage of time is not supposed
187  * to influence it. Some timing-dependent behavior might still be deemed
188  * acceptable in certain cases. But it must never result in both send/receive
189  * returning EAGAIN at the same time at any point. It must also absolutely be
190  * avoided that the current state is "unstable" and can "flip-flop" between
191  * the send/receive APIs allowing progress. For example, it's not allowed that
192  * the codec randomly decides that it actually wants to consume a packet now
193  * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an
194  * avcodec_send_packet() call.
195  * @}
196  */
197 
198 /**
199  * @defgroup lavc_core Core functions/structures.
200  * @ingroup libavc
201  *
202  * Basic definitions, functions for querying libavcodec capabilities,
203  * allocating core structures, etc.
204  * @{
205  */
206 
207 /**
208  * @ingroup lavc_decoding
209  * Required number of additionally allocated bytes at the end of the input bitstream for decoding.
210  * This is mainly needed because some optimized bitstream readers read
211  * 32 or 64 bit at once and could read over the end.<br>
212  * Note: If the first 23 bits of the additional bytes are not 0, then damaged
213  * MPEG bitstreams could cause overread and segfault.
214  */
215 #define AV_INPUT_BUFFER_PADDING_SIZE 64
216 
217 /**
218  * @ingroup lavc_encoding
219  * minimum encoding buffer size
220  * Used to avoid some checks during header writing.
221  */
222 #define AV_INPUT_BUFFER_MIN_SIZE 16384
223 
224 /**
225  * @ingroup lavc_decoding
226  */
228  /* We leave some space between them for extensions (drop some
229  * keyframes for intra-only or drop just some bidir frames). */
230  AVDISCARD_NONE =-16, ///< discard nothing
231  AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
232  AVDISCARD_NONREF = 8, ///< discard all non reference
233  AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
234  AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
235  AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
236  AVDISCARD_ALL = 48, ///< discard all
237 };
238 
249  AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
250 };
251 
252 /**
253  * @ingroup lavc_encoding
254  */
255 typedef struct RcOverride{
258  int qscale; // If this is 0 then quality_factor will be used instead.
260 } RcOverride;
261 
262 /* encoding support
263  These flags can be passed in AVCodecContext.flags before initialization.
264  Note: Not everything is supported yet.
265 */
266 
267 /**
268  * Allow decoders to produce frames with data planes that are not aligned
269  * to CPU requirements (e.g. due to cropping).
270  */
271 #define AV_CODEC_FLAG_UNALIGNED (1 << 0)
272 /**
273  * Use fixed qscale.
274  */
275 #define AV_CODEC_FLAG_QSCALE (1 << 1)
276 /**
277  * 4 MV per MB allowed / advanced prediction for H.263.
278  */
279 #define AV_CODEC_FLAG_4MV (1 << 2)
280 /**
281  * Output even those frames that might be corrupted.
282  */
283 #define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3)
284 /**
285  * Use qpel MC.
286  */
287 #define AV_CODEC_FLAG_QPEL (1 << 4)
288 /**
289  * Don't output frames whose parameters differ from first
290  * decoded frame in stream.
291  */
292 #define AV_CODEC_FLAG_DROPCHANGED (1 << 5)
293 /**
294  * Use internal 2pass ratecontrol in first pass mode.
295  */
296 #define AV_CODEC_FLAG_PASS1 (1 << 9)
297 /**
298  * Use internal 2pass ratecontrol in second pass mode.
299  */
300 #define AV_CODEC_FLAG_PASS2 (1 << 10)
301 /**
302  * loop filter.
303  */
304 #define AV_CODEC_FLAG_LOOP_FILTER (1 << 11)
305 /**
306  * Only decode/encode grayscale.
307  */
308 #define AV_CODEC_FLAG_GRAY (1 << 13)
309 /**
310  * error[?] variables will be set during encoding.
311  */
312 #define AV_CODEC_FLAG_PSNR (1 << 15)
313 /**
314  * Input bitstream might be truncated at a random location
315  * instead of only at frame boundaries.
316  */
317 #define AV_CODEC_FLAG_TRUNCATED (1 << 16)
318 /**
319  * Use interlaced DCT.
320  */
321 #define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18)
322 /**
323  * Force low delay.
324  */
325 #define AV_CODEC_FLAG_LOW_DELAY (1 << 19)
326 /**
327  * Place global headers in extradata instead of every keyframe.
328  */
329 #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
330 /**
331  * Use only bitexact stuff (except (I)DCT).
332  */
333 #define AV_CODEC_FLAG_BITEXACT (1 << 23)
334 /* Fx : Flag for H.263+ extra options */
335 /**
336  * H.263 advanced intra coding / MPEG-4 AC prediction
337  */
338 #define AV_CODEC_FLAG_AC_PRED (1 << 24)
339 /**
340  * interlaced motion estimation
341  */
342 #define AV_CODEC_FLAG_INTERLACED_ME (1 << 29)
343 #define AV_CODEC_FLAG_CLOSED_GOP (1U << 31)
344 
345 /**
346  * Allow non spec compliant speedup tricks.
347  */
348 #define AV_CODEC_FLAG2_FAST (1 << 0)
349 /**
350  * Skip bitstream encoding.
351  */
352 #define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2)
353 /**
354  * Place global headers at every keyframe instead of in extradata.
355  */
356 #define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3)
357 
358 /**
359  * timecode is in drop frame format. DEPRECATED!!!!
360  */
361 #define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13)
362 
363 /**
364  * Input bitstream might be truncated at a packet boundaries
365  * instead of only at frame boundaries.
366  */
367 #define AV_CODEC_FLAG2_CHUNKS (1 << 15)
368 /**
369  * Discard cropping information from SPS.
370  */
371 #define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16)
372 
373 /**
374  * Show all frames before the first keyframe
375  */
376 #define AV_CODEC_FLAG2_SHOW_ALL (1 << 22)
377 /**
378  * Export motion vectors through frame side data
379  */
380 #define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28)
381 /**
382  * Do not skip samples and export skip information as frame side data
383  */
384 #define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29)
385 /**
386  * Do not reset ASS ReadOrder field on flush (subtitles decoding)
387  */
388 #define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30)
389 
390 /* Unsupported options :
391  * Syntax Arithmetic coding (SAC)
392  * Reference Picture Selection
393  * Independent Segment Decoding */
394 /* /Fx */
395 /* codec capabilities */
396 
397 /* Exported side data.
398  These flags can be passed in AVCodecContext.export_side_data before initialization.
399 */
400 /**
401  * Export motion vectors through frame side data
402  */
403 #define AV_CODEC_EXPORT_DATA_MVS (1 << 0)
404 /**
405  * Export encoder Producer Reference Time through packet side data
406  */
407 #define AV_CODEC_EXPORT_DATA_PRFT (1 << 1)
408 /**
409  * Decoding only.
410  * Export the AVVideoEncParams structure through frame side data.
411  */
412 #define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2)
413 /**
414  * Decoding only.
415  * Do not apply film grain, export it instead.
416  */
417 #define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3)
418 
419 /**
420  * Pan Scan area.
421  * This specifies the area which should be displayed.
422  * Note there may be multiple such areas for one frame.
423  */
424 typedef struct AVPanScan {
425  /**
426  * id
427  * - encoding: Set by user.
428  * - decoding: Set by libavcodec.
429  */
430  int id;
431 
432  /**
433  * width and height in 1/16 pel
434  * - encoding: Set by user.
435  * - decoding: Set by libavcodec.
436  */
437  int width;
438  int height;
439 
440  /**
441  * position of the top left corner in 1/16 pel for up to 3 fields/frames
442  * - encoding: Set by user.
443  * - decoding: Set by libavcodec.
444  */
445  int16_t position[3][2];
446 } AVPanScan;
447 
448 /**
449  * This structure describes the bitrate properties of an encoded bitstream. It
450  * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
451  * parameters for H.264/HEVC.
452  */
453 typedef struct AVCPBProperties {
454  /**
455  * Maximum bitrate of the stream, in bits per second.
456  * Zero if unknown or unspecified.
457  */
458 #if FF_API_UNSANITIZED_BITRATES
460 #else
461  int64_t max_bitrate;
462 #endif
463  /**
464  * Minimum bitrate of the stream, in bits per second.
465  * Zero if unknown or unspecified.
466  */
467 #if FF_API_UNSANITIZED_BITRATES
469 #else
470  int64_t min_bitrate;
471 #endif
472  /**
473  * Average bitrate of the stream, in bits per second.
474  * Zero if unknown or unspecified.
475  */
476 #if FF_API_UNSANITIZED_BITRATES
478 #else
479  int64_t avg_bitrate;
480 #endif
481 
482  /**
483  * The size of the buffer to which the ratecontrol is applied, in bits.
484  * Zero if unknown or unspecified.
485  */
487 
488  /**
489  * The delay between the time the packet this structure is associated with
490  * is received and the time when it should be decoded, in periods of a 27MHz
491  * clock.
492  *
493  * UINT64_MAX when unknown or unspecified.
494  */
495  uint64_t vbv_delay;
497 
498 /**
499  * This structure supplies correlation between a packet timestamp and a wall clock
500  * production time. The definition follows the Producer Reference Time ('prft')
501  * as defined in ISO/IEC 14496-12
502  */
503 typedef struct AVProducerReferenceTime {
504  /**
505  * A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
506  */
507  int64_t wallclock;
508  int flags;
510 
511 /**
512  * The decoder will keep a reference to the frame and may reuse it later.
513  */
514 #define AV_GET_BUFFER_FLAG_REF (1 << 0)
515 
516 /**
517  * The encoder will keep a reference to the packet and may reuse it later.
518  */
519 #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0)
520 
521 struct AVCodecInternal;
522 
523 /**
524  * main external API structure.
525  * New fields can be added to the end with minor version bumps.
526  * Removal, reordering and changes to existing fields require a major
527  * version bump.
528  * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
529  * applications.
530  * The name string for AVOptions options matches the associated command line
531  * parameter name and can be found in libavcodec/options_table.h
532  * The AVOption/command line parameter names differ in some cases from the C
533  * structure field names for historic reasons or brevity.
534  * sizeof(AVCodecContext) must not be used outside libav*.
535  */
536 typedef struct AVCodecContext {
537  /**
538  * information on struct for av_log
539  * - set by avcodec_alloc_context3
540  */
543 
544  enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
545  const struct AVCodec *codec;
546  enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
547 
548  /**
549  * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
550  * This is used to work around some encoder bugs.
551  * A demuxer should set this to what is stored in the field used to identify the codec.
552  * If there are multiple such fields in a container then the demuxer should choose the one
553  * which maximizes the information about the used codec.
554  * If the codec tag field in a container is larger than 32 bits then the demuxer should
555  * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
556  * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
557  * first.
558  * - encoding: Set by user, if not then the default based on codec_id will be used.
559  * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
560  */
561  unsigned int codec_tag;
562 
563  void *priv_data;
564 
565  /**
566  * Private context used for internal data.
567  *
568  * Unlike priv_data, this is not codec-specific. It is used in general
569  * libavcodec functions.
570  */
571  struct AVCodecInternal *internal;
572 
573  /**
574  * Private data of the user, can be used to carry app specific stuff.
575  * - encoding: Set by user.
576  * - decoding: Set by user.
577  */
578  void *opaque;
579 
580  /**
581  * the average bitrate
582  * - encoding: Set by user; unused for constant quantizer encoding.
583  * - decoding: Set by user, may be overwritten by libavcodec
584  * if this info is available in the stream
585  */
586  int64_t bit_rate;
587 
588  /**
589  * number of bits the bitstream is allowed to diverge from the reference.
590  * the reference can be CBR (for CBR pass1) or VBR (for pass2)
591  * - encoding: Set by user; unused for constant quantizer encoding.
592  * - decoding: unused
593  */
595 
596  /**
597  * Global quality for codecs which cannot change it per frame.
598  * This should be proportional to MPEG-1/2/4 qscale.
599  * - encoding: Set by user.
600  * - decoding: unused
601  */
603 
604  /**
605  * - encoding: Set by user.
606  * - decoding: unused
607  */
609 #define FF_COMPRESSION_DEFAULT -1
610 
611  /**
612  * AV_CODEC_FLAG_*.
613  * - encoding: Set by user.
614  * - decoding: Set by user.
615  */
616  int flags;
617 
618  /**
619  * AV_CODEC_FLAG2_*
620  * - encoding: Set by user.
621  * - decoding: Set by user.
622  */
623  int flags2;
624 
625  /**
626  * some codecs need / can use extradata like Huffman tables.
627  * MJPEG: Huffman tables
628  * rv10: additional flags
629  * MPEG-4: global headers (they can be in the bitstream or here)
630  * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger
631  * than extradata_size to avoid problems if it is read with the bitstream reader.
632  * The bytewise contents of extradata must not depend on the architecture or CPU endianness.
633  * Must be allocated with the av_malloc() family of functions.
634  * - encoding: Set/allocated/freed by libavcodec.
635  * - decoding: Set/allocated/freed by user.
636  */
639 
640  /**
641  * This is the fundamental unit of time (in seconds) in terms
642  * of which frame timestamps are represented. For fixed-fps content,
643  * timebase should be 1/framerate and timestamp increments should be
644  * identically 1.
645  * This often, but not always is the inverse of the frame rate or field rate
646  * for video. 1/time_base is not the average frame rate if the frame rate is not
647  * constant.
648  *
649  * Like containers, elementary streams also can store timestamps, 1/time_base
650  * is the unit in which these timestamps are specified.
651  * As example of such codec time base see ISO/IEC 14496-2:2001(E)
652  * vop_time_increment_resolution and fixed_vop_rate
653  * (fixed_vop_rate == 0 implies that it is different from the framerate)
654  *
655  * - encoding: MUST be set by user.
656  * - decoding: the use of this field for decoding is deprecated.
657  * Use framerate instead.
658  */
660 
661  /**
662  * For some codecs, the time base is closer to the field rate than the frame rate.
663  * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
664  * if no telecine is used ...
665  *
666  * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
667  */
669 
670  /**
671  * Codec delay.
672  *
673  * Encoding: Number of frames delay there will be from the encoder input to
674  * the decoder output. (we assume the decoder matches the spec)
675  * Decoding: Number of frames delay in addition to what a standard decoder
676  * as specified in the spec would produce.
677  *
678  * Video:
679  * Number of frames the decoded output will be delayed relative to the
680  * encoded input.
681  *
682  * Audio:
683  * For encoding, this field is unused (see initial_padding).
684  *
685  * For decoding, this is the number of samples the decoder needs to
686  * output before the decoder's output is valid. When seeking, you should
687  * start decoding this many samples prior to your desired seek point.
688  *
689  * - encoding: Set by libavcodec.
690  * - decoding: Set by libavcodec.
691  */
692  int delay;
693 
694 
695  /* video only */
696  /**
697  * picture width / height.
698  *
699  * @note Those fields may not match the values of the last
700  * AVFrame output by avcodec_decode_video2 due frame
701  * reordering.
702  *
703  * - encoding: MUST be set by user.
704  * - decoding: May be set by the user before opening the decoder if known e.g.
705  * from the container. Some decoders will require the dimensions
706  * to be set by the caller. During decoding, the decoder may
707  * overwrite those values as required while parsing the data.
708  */
709  int width, height;
710 
711  /**
712  * Bitstream width / height, may be different from width/height e.g. when
713  * the decoded frame is cropped before being output or lowres is enabled.
714  *
715  * @note Those field may not match the value of the last
716  * AVFrame output by avcodec_receive_frame() due frame
717  * reordering.
718  *
719  * - encoding: unused
720  * - decoding: May be set by the user before opening the decoder if known
721  * e.g. from the container. During decoding, the decoder may
722  * overwrite those values as required while parsing the data.
723  */
725 
726  /**
727  * the number of pictures in a group of pictures, or 0 for intra_only
728  * - encoding: Set by user.
729  * - decoding: unused
730  */
731  int gop_size;
732 
733  /**
734  * Pixel format, see AV_PIX_FMT_xxx.
735  * May be set by the demuxer if known from headers.
736  * May be overridden by the decoder if it knows better.
737  *
738  * @note This field may not match the value of the last
739  * AVFrame output by avcodec_receive_frame() due frame
740  * reordering.
741  *
742  * - encoding: Set by user.
743  * - decoding: Set by user if known, overridden by libavcodec while
744  * parsing the data.
745  */
747 
748  /**
749  * If non NULL, 'draw_horiz_band' is called by the libavcodec
750  * decoder to draw a horizontal band. It improves cache usage. Not
751  * all codecs can do that. You must check the codec capabilities
752  * beforehand.
753  * When multithreading is used, it may be called from multiple threads
754  * at the same time; threads might draw different parts of the same AVFrame,
755  * or multiple AVFrames, and there is no guarantee that slices will be drawn
756  * in order.
757  * The function is also used by hardware acceleration APIs.
758  * It is called at least once during frame decoding to pass
759  * the data needed for hardware render.
760  * In that mode instead of pixel data, AVFrame points to
761  * a structure specific to the acceleration API. The application
762  * reads the structure and can change some fields to indicate progress
763  * or mark state.
764  * - encoding: unused
765  * - decoding: Set by user.
766  * @param height the height of the slice
767  * @param y the y position of the slice
768  * @param type 1->top field, 2->bottom field, 3->frame
769  * @param offset offset into the AVFrame.data from which the slice should be read
770  */
772  const AVFrame *src, int offset[AV_NUM_DATA_POINTERS],
773  int y, int type, int height);
774 
775  /**
776  * callback to negotiate the pixelFormat
777  * @param fmt is the list of formats which are supported by the codec,
778  * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality.
779  * The first is always the native one.
780  * @note The callback may be called again immediately if initialization for
781  * the selected (hardware-accelerated) pixel format failed.
782  * @warning Behavior is undefined if the callback returns a value not
783  * in the fmt list of formats.
784  * @return the chosen format
785  * - encoding: unused
786  * - decoding: Set by user, if not set the native format will be chosen.
787  */
788  enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
789 
790  /**
791  * maximum number of B-frames between non-B-frames
792  * Note: The output will be delayed by max_b_frames+1 relative to the input.
793  * - encoding: Set by user.
794  * - decoding: unused
795  */
797 
798  /**
799  * qscale factor between IP and B-frames
800  * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
801  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
802  * - encoding: Set by user.
803  * - decoding: unused
804  */
806 
807 #if FF_API_PRIVATE_OPT
808  /** @deprecated use encoder private options instead */
811 #endif
812 
813  /**
814  * qscale offset between IP and B-frames
815  * - encoding: Set by user.
816  * - decoding: unused
817  */
819 
820  /**
821  * Size of the frame reordering buffer in the decoder.
822  * For MPEG-2 it is 1 IPB or 0 low delay IP.
823  * - encoding: Set by libavcodec.
824  * - decoding: Set by libavcodec.
825  */
827 
828 #if FF_API_PRIVATE_OPT
829  /** @deprecated use encoder private options instead */
832 #endif
833 
834  /**
835  * qscale factor between P- and I-frames
836  * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
837  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
838  * - encoding: Set by user.
839  * - decoding: unused
840  */
842 
843  /**
844  * qscale offset between P and I-frames
845  * - encoding: Set by user.
846  * - decoding: unused
847  */
849 
850  /**
851  * luminance masking (0-> disabled)
852  * - encoding: Set by user.
853  * - decoding: unused
854  */
856 
857  /**
858  * temporary complexity masking (0-> disabled)
859  * - encoding: Set by user.
860  * - decoding: unused
861  */
863 
864  /**
865  * spatial complexity masking (0-> disabled)
866  * - encoding: Set by user.
867  * - decoding: unused
868  */
870 
871  /**
872  * p block masking (0-> disabled)
873  * - encoding: Set by user.
874  * - decoding: unused
875  */
876  float p_masking;
877 
878  /**
879  * darkness masking (0-> disabled)
880  * - encoding: Set by user.
881  * - decoding: unused
882  */
884 
885  /**
886  * slice count
887  * - encoding: Set by libavcodec.
888  * - decoding: Set by user (or 0).
889  */
891 
892 #if FF_API_PRIVATE_OPT
893  /** @deprecated use encoder private options instead */
896 #define FF_PRED_LEFT 0
897 #define FF_PRED_PLANE 1
898 #define FF_PRED_MEDIAN 2
899 #endif
900 
901  /**
902  * slice offsets in the frame in bytes
903  * - encoding: Set/allocated by libavcodec.
904  * - decoding: Set/allocated by user (or NULL).
905  */
907 
908  /**
909  * sample aspect ratio (0 if unknown)
910  * That is the width of a pixel divided by the height of the pixel.
911  * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
912  * - encoding: Set by user.
913  * - decoding: Set by libavcodec.
914  */
916 
917  /**
918  * motion estimation comparison function
919  * - encoding: Set by user.
920  * - decoding: unused
921  */
922  int me_cmp;
923  /**
924  * subpixel motion estimation comparison function
925  * - encoding: Set by user.
926  * - decoding: unused
927  */
929  /**
930  * macroblock comparison function (not supported yet)
931  * - encoding: Set by user.
932  * - decoding: unused
933  */
934  int mb_cmp;
935  /**
936  * interlaced DCT comparison function
937  * - encoding: Set by user.
938  * - decoding: unused
939  */
941 #define FF_CMP_SAD 0
942 #define FF_CMP_SSE 1
943 #define FF_CMP_SATD 2
944 #define FF_CMP_DCT 3
945 #define FF_CMP_PSNR 4
946 #define FF_CMP_BIT 5
947 #define FF_CMP_RD 6
948 #define FF_CMP_ZERO 7
949 #define FF_CMP_VSAD 8
950 #define FF_CMP_VSSE 9
951 #define FF_CMP_NSSE 10
952 #define FF_CMP_W53 11
953 #define FF_CMP_W97 12
954 #define FF_CMP_DCTMAX 13
955 #define FF_CMP_DCT264 14
956 #define FF_CMP_MEDIAN_SAD 15
957 #define FF_CMP_CHROMA 256
958 
959  /**
960  * ME diamond size & shape
961  * - encoding: Set by user.
962  * - decoding: unused
963  */
964  int dia_size;
965 
966  /**
967  * amount of previous MV predictors (2a+1 x 2a+1 square)
968  * - encoding: Set by user.
969  * - decoding: unused
970  */
972 
973 #if FF_API_PRIVATE_OPT
974  /** @deprecated use encoder private options instead */
976  int pre_me;
977 #endif
978 
979  /**
980  * motion estimation prepass comparison function
981  * - encoding: Set by user.
982  * - decoding: unused
983  */
985 
986  /**
987  * ME prepass diamond size & shape
988  * - encoding: Set by user.
989  * - decoding: unused
990  */
992 
993  /**
994  * subpel ME quality
995  * - encoding: Set by user.
996  * - decoding: unused
997  */
999 
1000  /**
1001  * maximum motion estimation search range in subpel units
1002  * If 0 then no limit.
1003  *
1004  * - encoding: Set by user.
1005  * - decoding: unused
1006  */
1008 
1009  /**
1010  * slice flags
1011  * - encoding: unused
1012  * - decoding: Set by user.
1013  */
1015 #define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display
1016 #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics)
1017 #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
1018 
1019  /**
1020  * macroblock decision mode
1021  * - encoding: Set by user.
1022  * - decoding: unused
1023  */
1025 #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp
1026 #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits
1027 #define FF_MB_DECISION_RD 2 ///< rate distortion
1028 
1029  /**
1030  * custom intra quantization matrix
1031  * Must be allocated with the av_malloc() family of functions, and will be freed in
1032  * avcodec_free_context().
1033  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
1034  * - decoding: Set/allocated/freed by libavcodec.
1035  */
1036  uint16_t *intra_matrix;
1037 
1038  /**
1039  * custom inter quantization matrix
1040  * Must be allocated with the av_malloc() family of functions, and will be freed in
1041  * avcodec_free_context().
1042  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
1043  * - decoding: Set/allocated/freed by libavcodec.
1044  */
1045  uint16_t *inter_matrix;
1046 
1047 #if FF_API_PRIVATE_OPT
1048  /** @deprecated use encoder private options instead */
1051 
1052  /** @deprecated use encoder private options instead */
1055 #endif
1056 
1057  /**
1058  * precision of the intra DC coefficient - 8
1059  * - encoding: Set by user.
1060  * - decoding: Set by libavcodec
1061  */
1063 
1064  /**
1065  * Number of macroblock rows at the top which are skipped.
1066  * - encoding: unused
1067  * - decoding: Set by user.
1068  */
1070 
1071  /**
1072  * Number of macroblock rows at the bottom which are skipped.
1073  * - encoding: unused
1074  * - decoding: Set by user.
1075  */
1077 
1078  /**
1079  * minimum MB Lagrange multiplier
1080  * - encoding: Set by user.
1081  * - decoding: unused
1082  */
1083  int mb_lmin;
1084 
1085  /**
1086  * maximum MB Lagrange multiplier
1087  * - encoding: Set by user.
1088  * - decoding: unused
1089  */
1090  int mb_lmax;
1091 
1092 #if FF_API_PRIVATE_OPT
1093  /**
1094  * @deprecated use encoder private options instead
1095  */
1098 #endif
1099 
1100  /**
1101  * - encoding: Set by user.
1102  * - decoding: unused
1103  */
1105 
1106 #if FF_API_PRIVATE_OPT
1107  /** @deprecated use encoder private options instead */
1110 #endif
1111 
1112  /**
1113  * minimum GOP size
1114  * - encoding: Set by user.
1115  * - decoding: unused
1116  */
1118 
1119  /**
1120  * number of reference frames
1121  * - encoding: Set by user.
1122  * - decoding: Set by lavc.
1123  */
1124  int refs;
1125 
1126 #if FF_API_PRIVATE_OPT
1127  /** @deprecated use encoder private options instead */
1130 #endif
1131 
1132  /**
1133  * Note: Value depends upon the compare function used for fullpel ME.
1134  * - encoding: Set by user.
1135  * - decoding: unused
1136  */
1138 
1139 #if FF_API_PRIVATE_OPT
1140  /** @deprecated use encoder private options instead */
1143 #endif
1144 
1145  /**
1146  * Chromaticity coordinates of the source primaries.
1147  * - encoding: Set by user
1148  * - decoding: Set by libavcodec
1149  */
1151 
1152  /**
1153  * Color Transfer Characteristic.
1154  * - encoding: Set by user
1155  * - decoding: Set by libavcodec
1156  */
1158 
1159  /**
1160  * YUV colorspace type.
1161  * - encoding: Set by user
1162  * - decoding: Set by libavcodec
1163  */
1165 
1166  /**
1167  * MPEG vs JPEG YUV range.
1168  * - encoding: Set by user
1169  * - decoding: Set by libavcodec
1170  */
1172 
1173  /**
1174  * This defines the location of chroma samples.
1175  * - encoding: Set by user
1176  * - decoding: Set by libavcodec
1177  */
1179 
1180  /**
1181  * Number of slices.
1182  * Indicates number of picture subdivisions. Used for parallelized
1183  * decoding.
1184  * - encoding: Set by user
1185  * - decoding: unused
1186  */
1187  int slices;
1188 
1189  /** Field order
1190  * - encoding: set by libavcodec
1191  * - decoding: Set by user.
1192  */
1194 
1195  /* audio only */
1196  int sample_rate; ///< samples per second
1197  int channels; ///< number of audio channels
1198 
1199  /**
1200  * audio sample format
1201  * - encoding: Set by user.
1202  * - decoding: Set by libavcodec.
1203  */
1204  enum AVSampleFormat sample_fmt; ///< sample format
1205 
1206  /* The following data should not be initialized. */
1207  /**
1208  * Number of samples per channel in an audio frame.
1209  *
1210  * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
1211  * except the last must contain exactly frame_size samples per channel.
1212  * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
1213  * frame size is not restricted.
1214  * - decoding: may be set by some decoders to indicate constant frame size
1215  */
1217 
1218  /**
1219  * Frame counter, set by libavcodec.
1220  *
1221  * - decoding: total number of frames returned from the decoder so far.
1222  * - encoding: total number of frames passed to the encoder so far.
1223  *
1224  * @note the counter is not incremented if encoding/decoding resulted in
1225  * an error.
1226  */
1228 
1229  /**
1230  * number of bytes per packet if constant and known or 0
1231  * Used by some WAV based audio codecs.
1232  */
1234 
1235  /**
1236  * Audio cutoff bandwidth (0 means "automatic")
1237  * - encoding: Set by user.
1238  * - decoding: unused
1239  */
1240  int cutoff;
1241 
1242  /**
1243  * Audio channel layout.
1244  * - encoding: set by user.
1245  * - decoding: set by user, may be overwritten by libavcodec.
1246  */
1247  uint64_t channel_layout;
1248 
1249  /**
1250  * Request decoder to use this channel layout if it can (0 for default)
1251  * - encoding: unused
1252  * - decoding: Set by user.
1253  */
1255 
1256  /**
1257  * Type of service that the audio stream conveys.
1258  * - encoding: Set by user.
1259  * - decoding: Set by libavcodec.
1260  */
1262 
1263  /**
1264  * desired sample format
1265  * - encoding: Not used.
1266  * - decoding: Set by user.
1267  * Decoder will decode to this format if it can.
1268  */
1270 
1271  /**
1272  * This callback is called at the beginning of each frame to get data
1273  * buffer(s) for it. There may be one contiguous buffer for all the data or
1274  * there may be a buffer per each data plane or anything in between. What
1275  * this means is, you may set however many entries in buf[] you feel necessary.
1276  * Each buffer must be reference-counted using the AVBuffer API (see description
1277  * of buf[] below).
1278  *
1279  * The following fields will be set in the frame before this callback is
1280  * called:
1281  * - format
1282  * - width, height (video only)
1283  * - sample_rate, channel_layout, nb_samples (audio only)
1284  * Their values may differ from the corresponding values in
1285  * AVCodecContext. This callback must use the frame values, not the codec
1286  * context values, to calculate the required buffer size.
1287  *
1288  * This callback must fill the following fields in the frame:
1289  * - data[]
1290  * - linesize[]
1291  * - extended_data:
1292  * * if the data is planar audio with more than 8 channels, then this
1293  * callback must allocate and fill extended_data to contain all pointers
1294  * to all data planes. data[] must hold as many pointers as it can.
1295  * extended_data must be allocated with av_malloc() and will be freed in
1296  * av_frame_unref().
1297  * * otherwise extended_data must point to data
1298  * - buf[] must contain one or more pointers to AVBufferRef structures. Each of
1299  * the frame's data and extended_data pointers must be contained in these. That
1300  * is, one AVBufferRef for each allocated chunk of memory, not necessarily one
1301  * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
1302  * and av_buffer_ref().
1303  * - extended_buf and nb_extended_buf must be allocated with av_malloc() by
1304  * this callback and filled with the extra buffers if there are more
1305  * buffers than buf[] can hold. extended_buf will be freed in
1306  * av_frame_unref().
1307  *
1308  * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
1309  * avcodec_default_get_buffer2() instead of providing buffers allocated by
1310  * some other means.
1311  *
1312  * Each data plane must be aligned to the maximum required by the target
1313  * CPU.
1314  *
1315  * @see avcodec_default_get_buffer2()
1316  *
1317  * Video:
1318  *
1319  * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
1320  * (read and/or written to if it is writable) later by libavcodec.
1321  *
1322  * avcodec_align_dimensions2() should be used to find the required width and
1323  * height, as they normally need to be rounded up to the next multiple of 16.
1324  *
1325  * Some decoders do not support linesizes changing between frames.
1326  *
1327  * If frame multithreading is used, this callback may be called from a
1328  * different thread, but not from more than one at once. Does not need to be
1329  * reentrant.
1330  *
1331  * @see avcodec_align_dimensions2()
1332  *
1333  * Audio:
1334  *
1335  * Decoders request a buffer of a particular size by setting
1336  * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
1337  * however, utilize only part of the buffer by setting AVFrame.nb_samples
1338  * to a smaller value in the output frame.
1339  *
1340  * As a convenience, av_samples_get_buffer_size() and
1341  * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
1342  * functions to find the required data size and to fill data pointers and
1343  * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
1344  * since all planes must be the same size.
1345  *
1346  * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
1347  *
1348  * - encoding: unused
1349  * - decoding: Set by libavcodec, user can override.
1350  */
1352 
1353 #if FF_API_OLD_ENCDEC
1354  /**
1355  * If non-zero, the decoded audio and video frames returned from
1356  * avcodec_decode_video2() and avcodec_decode_audio4() are reference-counted
1357  * and are valid indefinitely. The caller must free them with
1358  * av_frame_unref() when they are not needed anymore.
1359  * Otherwise, the decoded frames must not be freed by the caller and are
1360  * only valid until the next decode call.
1361  *
1362  * This is always automatically enabled if avcodec_receive_frame() is used.
1363  *
1364  * - encoding: unused
1365  * - decoding: set by the caller before avcodec_open2().
1366  */
1369 #endif
1370 
1371  /* - encoding parameters */
1372  float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
1373  float qblur; ///< amount of qscale smoothing over time (0.0-1.0)
1374 
1375  /**
1376  * minimum quantizer
1377  * - encoding: Set by user.
1378  * - decoding: unused
1379  */
1380  int qmin;
1381 
1382  /**
1383  * maximum quantizer
1384  * - encoding: Set by user.
1385  * - decoding: unused
1386  */
1387  int qmax;
1388 
1389  /**
1390  * maximum quantizer difference between frames
1391  * - encoding: Set by user.
1392  * - decoding: unused
1393  */
1395 
1396  /**
1397  * decoder bitstream buffer size
1398  * - encoding: Set by user.
1399  * - decoding: unused
1400  */
1402 
1403  /**
1404  * ratecontrol override, see RcOverride
1405  * - encoding: Allocated/set/freed by user.
1406  * - decoding: unused
1407  */
1410 
1411  /**
1412  * maximum bitrate
1413  * - encoding: Set by user.
1414  * - decoding: Set by user, may be overwritten by libavcodec.
1415  */
1416  int64_t rc_max_rate;
1417 
1418  /**
1419  * minimum bitrate
1420  * - encoding: Set by user.
1421  * - decoding: unused
1422  */
1423  int64_t rc_min_rate;
1424 
1425  /**
1426  * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
1427  * - encoding: Set by user.
1428  * - decoding: unused.
1429  */
1431 
1432  /**
1433  * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
1434  * - encoding: Set by user.
1435  * - decoding: unused.
1436  */
1438 
1439  /**
1440  * Number of bits which should be loaded into the rc buffer before decoding starts.
1441  * - encoding: Set by user.
1442  * - decoding: unused
1443  */
1445 
1446 #if FF_API_CODER_TYPE
1447 #define FF_CODER_TYPE_VLC 0
1448 #define FF_CODER_TYPE_AC 1
1449 #define FF_CODER_TYPE_RAW 2
1450 #define FF_CODER_TYPE_RLE 3
1451  /**
1452  * @deprecated use encoder private options instead
1453  */
1456 #endif /* FF_API_CODER_TYPE */
1457 
1458 #if FF_API_PRIVATE_OPT
1459  /** @deprecated use encoder private options instead */
1462 #endif
1463 
1464 #if FF_API_PRIVATE_OPT
1465  /** @deprecated use encoder private options instead */
1468 
1469  /** @deprecated use encoder private options instead */
1472 
1473  /** @deprecated use encoder private options instead */
1476 
1477  /** @deprecated use encoder private options instead */
1480 #endif /* FF_API_PRIVATE_OPT */
1481 
1482  /**
1483  * trellis RD quantization
1484  * - encoding: Set by user.
1485  * - decoding: unused
1486  */
1487  int trellis;
1488 
1489 #if FF_API_PRIVATE_OPT
1490  /** @deprecated use encoder private options instead */
1493 
1494  /** @deprecated use encoder private options instead */
1497 
1498  /** @deprecated use encoder private options instead */
1501 #endif
1502 
1503 #if FF_API_RTP_CALLBACK
1504  /**
1505  * @deprecated unused
1506  */
1507  /* The RTP callback: This function is called */
1508  /* every time the encoder has a packet to send. */
1509  /* It depends on the encoder if the data starts */
1510  /* with a Start Code (it should). H.263 does. */
1511  /* mb_nb contains the number of macroblocks */
1512  /* encoded in the RTP payload. */
1514  void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
1515 #endif
1516 
1517 #if FF_API_PRIVATE_OPT
1518  /** @deprecated use encoder private options instead */
1520  int rtp_payload_size; /* The size of the RTP payload: the coder will */
1521  /* do its best to deliver a chunk with size */
1522  /* below rtp_payload_size, the chunk will start */
1523  /* with a start code on some codecs like H.263. */
1524  /* This doesn't take account of any particular */
1525  /* headers inside the transmitted RTP payload. */
1526 #endif
1527 
1528 #if FF_API_STAT_BITS
1529  /* statistics, used for 2-pass encoding */
1531  int mv_bits;
1539  int i_count;
1541  int p_count;
1546 
1547  /** @deprecated this field is unused */
1550 #endif
1551 
1552  /**
1553  * pass1 encoding statistics output buffer
1554  * - encoding: Set by libavcodec.
1555  * - decoding: unused
1556  */
1557  char *stats_out;
1558 
1559  /**
1560  * pass2 encoding statistics input buffer
1561  * Concatenated stuff from stats_out of pass1 should be placed here.
1562  * - encoding: Allocated/set/freed by user.
1563  * - decoding: unused
1564  */
1565  char *stats_in;
1566 
1567  /**
1568  * Work around bugs in encoders which sometimes cannot be detected automatically.
1569  * - encoding: Set by user
1570  * - decoding: Set by user
1571  */
1573 #define FF_BUG_AUTODETECT 1 ///< autodetection
1574 #define FF_BUG_XVID_ILACE 4
1575 #define FF_BUG_UMP4 8
1576 #define FF_BUG_NO_PADDING 16
1577 #define FF_BUG_AMV 32
1578 #define FF_BUG_QPEL_CHROMA 64
1579 #define FF_BUG_STD_QPEL 128
1580 #define FF_BUG_QPEL_CHROMA2 256
1581 #define FF_BUG_DIRECT_BLOCKSIZE 512
1582 #define FF_BUG_EDGE 1024
1583 #define FF_BUG_HPEL_CHROMA 2048
1584 #define FF_BUG_DC_CLIP 4096
1585 #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders.
1586 #define FF_BUG_TRUNCATED 16384
1587 #define FF_BUG_IEDGE 32768
1588 
1589  /**
1590  * strictly follow the standard (MPEG-4, ...).
1591  * - encoding: Set by user.
1592  * - decoding: Set by user.
1593  * Setting this to STRICT or higher means the encoder and decoder will
1594  * generally do stupid things, whereas setting it to unofficial or lower
1595  * will mean the encoder might produce output that is not supported by all
1596  * spec-compliant decoders. Decoders don't differentiate between normal,
1597  * unofficial and experimental (that is, they always try to decode things
1598  * when they can) unless they are explicitly asked to behave stupidly
1599  * (=strictly conform to the specs)
1600  */
1602 #define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software.
1603 #define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences.
1604 #define FF_COMPLIANCE_NORMAL 0
1605 #define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions
1606 #define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
1607 
1608  /**
1609  * error concealment flags
1610  * - encoding: unused
1611  * - decoding: Set by user.
1612  */
1614 #define FF_EC_GUESS_MVS 1
1615 #define FF_EC_DEBLOCK 2
1616 #define FF_EC_FAVOR_INTER 256
1617 
1618  /**
1619  * debug
1620  * - encoding: Set by user.
1621  * - decoding: Set by user.
1622  */
1623  int debug;
1624 #define FF_DEBUG_PICT_INFO 1
1625 #define FF_DEBUG_RC 2
1626 #define FF_DEBUG_BITSTREAM 4
1627 #define FF_DEBUG_MB_TYPE 8
1628 #define FF_DEBUG_QP 16
1629 #define FF_DEBUG_DCT_COEFF 0x00000040
1630 #define FF_DEBUG_SKIP 0x00000080
1631 #define FF_DEBUG_STARTCODE 0x00000100
1632 #define FF_DEBUG_ER 0x00000400
1633 #define FF_DEBUG_MMCO 0x00000800
1634 #define FF_DEBUG_BUGS 0x00001000
1635 #define FF_DEBUG_BUFFERS 0x00008000
1636 #define FF_DEBUG_THREADS 0x00010000
1637 #define FF_DEBUG_GREEN_MD 0x00800000
1638 #define FF_DEBUG_NOMC 0x01000000
1639 
1640  /**
1641  * Error recognition; may misdetect some more or less valid parts as errors.
1642  * - encoding: Set by user.
1643  * - decoding: Set by user.
1644  */
1646 
1647 /**
1648  * Verify checksums embedded in the bitstream (could be of either encoded or
1649  * decoded data, depending on the codec) and print an error message on mismatch.
1650  * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the
1651  * decoder returning an error.
1652  */
1653 #define AV_EF_CRCCHECK (1<<0)
1654 #define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations
1655 #define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length
1656 #define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection
1657 
1658 #define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue
1659 #define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors
1660 #define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors
1661 #define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error
1662 
1663 
1664  /**
1665  * opaque 64-bit number (generally a PTS) that will be reordered and
1666  * output in AVFrame.reordered_opaque
1667  * - encoding: Set by libavcodec to the reordered_opaque of the input
1668  * frame corresponding to the last returned packet. Only
1669  * supported by encoders with the
1670  * AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability.
1671  * - decoding: Set by user.
1672  */
1674 
1675  /**
1676  * Hardware accelerator in use
1677  * - encoding: unused.
1678  * - decoding: Set by libavcodec
1679  */
1680  const struct AVHWAccel *hwaccel;
1681 
1682  /**
1683  * Hardware accelerator context.
1684  * For some hardware accelerators, a global context needs to be
1685  * provided by the user. In that case, this holds display-dependent
1686  * data FFmpeg cannot instantiate itself. Please refer to the
1687  * FFmpeg HW accelerator documentation to know how to fill this
1688  * is. e.g. for VA API, this is a struct vaapi_context.
1689  * - encoding: unused
1690  * - decoding: Set by user
1691  */
1693 
1694  /**
1695  * error
1696  * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
1697  * - decoding: unused
1698  */
1700 
1701  /**
1702  * DCT algorithm, see FF_DCT_* below
1703  * - encoding: Set by user.
1704  * - decoding: unused
1705  */
1707 #define FF_DCT_AUTO 0
1708 #define FF_DCT_FASTINT 1
1709 #define FF_DCT_INT 2
1710 #define FF_DCT_MMX 3
1711 #define FF_DCT_ALTIVEC 5
1712 #define FF_DCT_FAAN 6
1713 
1714  /**
1715  * IDCT algorithm, see FF_IDCT_* below.
1716  * - encoding: Set by user.
1717  * - decoding: Set by user.
1718  */
1720 #define FF_IDCT_AUTO 0
1721 #define FF_IDCT_INT 1
1722 #define FF_IDCT_SIMPLE 2
1723 #define FF_IDCT_SIMPLEMMX 3
1724 #define FF_IDCT_ARM 7
1725 #define FF_IDCT_ALTIVEC 8
1726 #define FF_IDCT_SIMPLEARM 10
1727 #define FF_IDCT_XVID 14
1728 #define FF_IDCT_SIMPLEARMV5TE 16
1729 #define FF_IDCT_SIMPLEARMV6 17
1730 #define FF_IDCT_FAAN 20
1731 #define FF_IDCT_SIMPLENEON 22
1732 #define FF_IDCT_NONE 24 /* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE */
1733 #define FF_IDCT_SIMPLEAUTO 128
1734 
1735  /**
1736  * bits per sample/pixel from the demuxer (needed for huffyuv).
1737  * - encoding: Set by libavcodec.
1738  * - decoding: Set by user.
1739  */
1741 
1742  /**
1743  * Bits per sample/pixel of internal libavcodec pixel/sample format.
1744  * - encoding: set by user.
1745  * - decoding: set by libavcodec.
1746  */
1748 
1749  /**
1750  * low resolution decoding, 1-> 1/2 size, 2->1/4 size
1751  * - encoding: unused
1752  * - decoding: Set by user.
1753  */
1754  int lowres;
1755 
1756 #if FF_API_CODED_FRAME
1757  /**
1758  * the picture in the bitstream
1759  * - encoding: Set by libavcodec.
1760  * - decoding: unused
1761  *
1762  * @deprecated use the quality factor packet side data instead
1763  */
1765 #endif
1766 
1767  /**
1768  * thread count
1769  * is used to decide how many independent tasks should be passed to execute()
1770  * - encoding: Set by user.
1771  * - decoding: Set by user.
1772  */
1774 
1775  /**
1776  * Which multithreading methods to use.
1777  * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
1778  * so clients which cannot provide future frames should not use it.
1779  *
1780  * - encoding: Set by user, otherwise the default is used.
1781  * - decoding: Set by user, otherwise the default is used.
1782  */
1784 #define FF_THREAD_FRAME 1 ///< Decode more than one frame at once
1785 #define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once
1786 
1787  /**
1788  * Which multithreading methods are in use by the codec.
1789  * - encoding: Set by libavcodec.
1790  * - decoding: Set by libavcodec.
1791  */
1793 
1794 #if FF_API_THREAD_SAFE_CALLBACKS
1795  /**
1796  * Set by the client if its custom get_buffer() callback can be called
1797  * synchronously from another thread, which allows faster multithreaded decoding.
1798  * draw_horiz_band() will be called from other threads regardless of this setting.
1799  * Ignored if the default get_buffer() is used.
1800  * - encoding: Set by user.
1801  * - decoding: Set by user.
1802  *
1803  * @deprecated the custom get_buffer2() callback should always be
1804  * thread-safe. Thread-unsafe get_buffer2() implementations will be
1805  * invalid starting with LIBAVCODEC_VERSION_MAJOR=60; in other words,
1806  * libavcodec will behave as if this field was always set to 1.
1807  * Callers that want to be forward compatible with future libavcodec
1808  * versions should wrap access to this field in
1809  * #if LIBAVCODEC_VERSION_MAJOR < 60
1810  */
1813 #endif
1814 
1815  /**
1816  * The codec may call this to execute several independent things.
1817  * It will return only after finishing all tasks.
1818  * The user may replace this with some multithreaded implementation,
1819  * the default implementation will execute the parts serially.
1820  * @param count the number of things to execute
1821  * - encoding: Set by libavcodec, user can override.
1822  * - decoding: Set by libavcodec, user can override.
1823  */
1824  int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size);
1825 
1826  /**
1827  * The codec may call this to execute several independent things.
1828  * It will return only after finishing all tasks.
1829  * The user may replace this with some multithreaded implementation,
1830  * the default implementation will execute the parts serially.
1831  * Also see avcodec_thread_init and e.g. the --enable-pthread configure option.
1832  * @param c context passed also to func
1833  * @param count the number of things to execute
1834  * @param arg2 argument passed unchanged to func
1835  * @param ret return values of executed functions, must have space for "count" values. May be NULL.
1836  * @param func function that will be called count times, with jobnr from 0 to count-1.
1837  * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
1838  * two instances of func executing at the same time will have the same threadnr.
1839  * @return always 0 currently, but code should handle a future improvement where when any call to func
1840  * returns < 0 no further calls to func may be done and < 0 is returned.
1841  * - encoding: Set by libavcodec, user can override.
1842  * - decoding: Set by libavcodec, user can override.
1843  */
1844  int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
1845 
1846  /**
1847  * noise vs. sse weight for the nsse comparison function
1848  * - encoding: Set by user.
1849  * - decoding: unused
1850  */
1852 
1853  /**
1854  * profile
1855  * - encoding: Set by user.
1856  * - decoding: Set by libavcodec.
1857  */
1858  int profile;
1859 #define FF_PROFILE_UNKNOWN -99
1860 #define FF_PROFILE_RESERVED -100
1861 
1862 #define FF_PROFILE_AAC_MAIN 0
1863 #define FF_PROFILE_AAC_LOW 1
1864 #define FF_PROFILE_AAC_SSR 2
1865 #define FF_PROFILE_AAC_LTP 3
1866 #define FF_PROFILE_AAC_HE 4
1867 #define FF_PROFILE_AAC_HE_V2 28
1868 #define FF_PROFILE_AAC_LD 22
1869 #define FF_PROFILE_AAC_ELD 38
1870 #define FF_PROFILE_MPEG2_AAC_LOW 128
1871 #define FF_PROFILE_MPEG2_AAC_HE 131
1872 
1873 #define FF_PROFILE_DNXHD 0
1874 #define FF_PROFILE_DNXHR_LB 1
1875 #define FF_PROFILE_DNXHR_SQ 2
1876 #define FF_PROFILE_DNXHR_HQ 3
1877 #define FF_PROFILE_DNXHR_HQX 4
1878 #define FF_PROFILE_DNXHR_444 5
1879 
1880 #define FF_PROFILE_DTS 20
1881 #define FF_PROFILE_DTS_ES 30
1882 #define FF_PROFILE_DTS_96_24 40
1883 #define FF_PROFILE_DTS_HD_HRA 50
1884 #define FF_PROFILE_DTS_HD_MA 60
1885 #define FF_PROFILE_DTS_EXPRESS 70
1886 
1887 #define FF_PROFILE_MPEG2_422 0
1888 #define FF_PROFILE_MPEG2_HIGH 1
1889 #define FF_PROFILE_MPEG2_SS 2
1890 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3
1891 #define FF_PROFILE_MPEG2_MAIN 4
1892 #define FF_PROFILE_MPEG2_SIMPLE 5
1893 
1894 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
1895 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
1896 
1897 #define FF_PROFILE_H264_BASELINE 66
1898 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
1899 #define FF_PROFILE_H264_MAIN 77
1900 #define FF_PROFILE_H264_EXTENDED 88
1901 #define FF_PROFILE_H264_HIGH 100
1902 #define FF_PROFILE_H264_HIGH_10 110
1903 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
1904 #define FF_PROFILE_H264_MULTIVIEW_HIGH 118
1905 #define FF_PROFILE_H264_HIGH_422 122
1906 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
1907 #define FF_PROFILE_H264_STEREO_HIGH 128
1908 #define FF_PROFILE_H264_HIGH_444 144
1909 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
1910 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
1911 #define FF_PROFILE_H264_CAVLC_444 44
1912 
1913 #define FF_PROFILE_VC1_SIMPLE 0
1914 #define FF_PROFILE_VC1_MAIN 1
1915 #define FF_PROFILE_VC1_COMPLEX 2
1916 #define FF_PROFILE_VC1_ADVANCED 3
1917 
1918 #define FF_PROFILE_MPEG4_SIMPLE 0
1919 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1
1920 #define FF_PROFILE_MPEG4_CORE 2
1921 #define FF_PROFILE_MPEG4_MAIN 3
1922 #define FF_PROFILE_MPEG4_N_BIT 4
1923 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5
1924 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
1925 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
1926 #define FF_PROFILE_MPEG4_HYBRID 8
1927 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
1928 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10
1929 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11
1930 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12
1931 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
1932 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14
1933 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15
1934 
1935 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1
1936 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2
1937 #define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768
1938 #define FF_PROFILE_JPEG2000_DCINEMA_2K 3
1939 #define FF_PROFILE_JPEG2000_DCINEMA_4K 4
1940 
1941 #define FF_PROFILE_VP9_0 0
1942 #define FF_PROFILE_VP9_1 1
1943 #define FF_PROFILE_VP9_2 2
1944 #define FF_PROFILE_VP9_3 3
1945 
1946 #define FF_PROFILE_HEVC_MAIN 1
1947 #define FF_PROFILE_HEVC_MAIN_10 2
1948 #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3
1949 #define FF_PROFILE_HEVC_REXT 4
1950 
1951 #define FF_PROFILE_VVC_MAIN_10 1
1952 #define FF_PROFILE_VVC_MAIN_10_444 33
1953 
1954 #define FF_PROFILE_AV1_MAIN 0
1955 #define FF_PROFILE_AV1_HIGH 1
1956 #define FF_PROFILE_AV1_PROFESSIONAL 2
1957 
1958 #define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
1959 #define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
1960 #define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
1961 #define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3
1962 #define FF_PROFILE_MJPEG_JPEG_LS 0xf7
1963 
1964 #define FF_PROFILE_SBC_MSBC 1
1965 
1966 #define FF_PROFILE_PRORES_PROXY 0
1967 #define FF_PROFILE_PRORES_LT 1
1968 #define FF_PROFILE_PRORES_STANDARD 2
1969 #define FF_PROFILE_PRORES_HQ 3
1970 #define FF_PROFILE_PRORES_4444 4
1971 #define FF_PROFILE_PRORES_XQ 5
1972 
1973 #define FF_PROFILE_ARIB_PROFILE_A 0
1974 #define FF_PROFILE_ARIB_PROFILE_C 1
1975 
1976 #define FF_PROFILE_KLVA_SYNC 0
1977 #define FF_PROFILE_KLVA_ASYNC 1
1978 
1979  /**
1980  * level
1981  * - encoding: Set by user.
1982  * - decoding: Set by libavcodec.
1983  */
1984  int level;
1985 #define FF_LEVEL_UNKNOWN -99
1986 
1987  /**
1988  * Skip loop filtering for selected frames.
1989  * - encoding: unused
1990  * - decoding: Set by user.
1991  */
1993 
1994  /**
1995  * Skip IDCT/dequantization for selected frames.
1996  * - encoding: unused
1997  * - decoding: Set by user.
1998  */
2000 
2001  /**
2002  * Skip decoding for selected frames.
2003  * - encoding: unused
2004  * - decoding: Set by user.
2005  */
2007 
2008  /**
2009  * Header containing style information for text subtitles.
2010  * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
2011  * [Script Info] and [V4+ Styles] section, plus the [Events] line and
2012  * the Format line following. It shouldn't include any Dialogue line.
2013  * - encoding: Set/allocated/freed by user (before avcodec_open2())
2014  * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
2015  */
2018 
2019 #if FF_API_VBV_DELAY
2020  /**
2021  * VBV delay coded in the last frame (in periods of a 27 MHz clock).
2022  * Used for compliant TS muxing.
2023  * - encoding: Set by libavcodec.
2024  * - decoding: unused.
2025  * @deprecated this value is now exported as a part of
2026  * AV_PKT_DATA_CPB_PROPERTIES packet side data
2027  */
2029  uint64_t vbv_delay;
2030 #endif
2031 
2032 #if FF_API_SIDEDATA_ONLY_PKT
2033  /**
2034  * Encoding only and set by default. Allow encoders to output packets
2035  * that do not contain any encoded data, only side data.
2036  *
2037  * Some encoders need to output such packets, e.g. to update some stream
2038  * parameters at the end of encoding.
2039  *
2040  * @deprecated this field disables the default behaviour and
2041  * it is kept only for compatibility.
2042  */
2045 #endif
2046 
2047  /**
2048  * Audio only. The number of "priming" samples (padding) inserted by the
2049  * encoder at the beginning of the audio. I.e. this number of leading
2050  * decoded samples must be discarded by the caller to get the original audio
2051  * without leading padding.
2052  *
2053  * - decoding: unused
2054  * - encoding: Set by libavcodec. The timestamps on the output packets are
2055  * adjusted by the encoder so that they always refer to the
2056  * first sample of the data actually contained in the packet,
2057  * including any added padding. E.g. if the timebase is
2058  * 1/samplerate and the timestamp of the first input sample is
2059  * 0, the timestamp of the first output packet will be
2060  * -initial_padding.
2061  */
2063 
2064  /**
2065  * - decoding: For codecs that store a framerate value in the compressed
2066  * bitstream, the decoder may export it here. { 0, 1} when
2067  * unknown.
2068  * - encoding: May be used to signal the framerate of CFR content to an
2069  * encoder.
2070  */
2072 
2073  /**
2074  * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
2075  * - encoding: unused.
2076  * - decoding: Set by libavcodec before calling get_format()
2077  */
2079 
2080  /**
2081  * Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
2082  * - encoding unused.
2083  * - decoding set by user.
2084  */
2086 
2087  /**
2088  * AVCodecDescriptor
2089  * - encoding: unused.
2090  * - decoding: set by libavcodec.
2091  */
2093 
2094  /**
2095  * Current statistics for PTS correction.
2096  * - decoding: maintained and used by libavcodec, not intended to be used by user apps
2097  * - encoding: unused
2098  */
2099  int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far
2100  int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far
2101  int64_t pts_correction_last_pts; /// PTS of the last frame
2102  int64_t pts_correction_last_dts; /// DTS of the last frame
2103 
2104  /**
2105  * Character encoding of the input subtitles file.
2106  * - decoding: set by user
2107  * - encoding: unused
2108  */
2110 
2111  /**
2112  * Subtitles character encoding mode. Formats or codecs might be adjusting
2113  * this setting (if they are doing the conversion themselves for instance).
2114  * - decoding: set by libavcodec
2115  * - encoding: unused
2116  */
2118 #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)
2119 #define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself
2120 #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
2121 #define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8
2122 
2123  /**
2124  * Skip processing alpha if supported by codec.
2125  * Note that if the format uses pre-multiplied alpha (common with VP6,
2126  * and recommended due to better video quality/compression)
2127  * the image will look as if alpha-blended onto a black background.
2128  * However for formats that do not use pre-multiplied alpha
2129  * there might be serious artefacts (though e.g. libswscale currently
2130  * assumes pre-multiplied alpha anyway).
2131  *
2132  * - decoding: set by user
2133  * - encoding: unused
2134  */
2136 
2137  /**
2138  * Number of samples to skip after a discontinuity
2139  * - decoding: unused
2140  * - encoding: set by libavcodec
2141  */
2143 
2144 #if FF_API_DEBUG_MV
2145  /**
2146  * @deprecated unused
2147  */
2150 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
2151 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
2152 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
2153 #endif
2154 
2155  /**
2156  * custom intra quantization matrix
2157  * - encoding: Set by user, can be NULL.
2158  * - decoding: unused.
2159  */
2161 
2162  /**
2163  * dump format separator.
2164  * can be ", " or "\n " or anything else
2165  * - encoding: Set by user.
2166  * - decoding: Set by user.
2167  */
2169 
2170  /**
2171  * ',' separated list of allowed decoders.
2172  * If NULL then all are allowed
2173  * - encoding: unused
2174  * - decoding: set by user
2175  */
2177 
2178  /**
2179  * Properties of the stream that gets decoded
2180  * - encoding: unused
2181  * - decoding: set by libavcodec
2182  */
2183  unsigned properties;
2184 #define FF_CODEC_PROPERTY_LOSSLESS 0x00000001
2185 #define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002
2186 
2187  /**
2188  * Additional data associated with the entire coded stream.
2189  *
2190  * - decoding: unused
2191  * - encoding: may be set by libavcodec after avcodec_open2().
2192  */
2195 
2196  /**
2197  * A reference to the AVHWFramesContext describing the input (for encoding)
2198  * or output (decoding) frames. The reference is set by the caller and
2199  * afterwards owned (and freed) by libavcodec - it should never be read by
2200  * the caller after being set.
2201  *
2202  * - decoding: This field should be set by the caller from the get_format()
2203  * callback. The previous reference (if any) will always be
2204  * unreffed by libavcodec before the get_format() call.
2205  *
2206  * If the default get_buffer2() is used with a hwaccel pixel
2207  * format, then this AVHWFramesContext will be used for
2208  * allocating the frame buffers.
2209  *
2210  * - encoding: For hardware encoders configured to use a hwaccel pixel
2211  * format, this field should be set by the caller to a reference
2212  * to the AVHWFramesContext describing input frames.
2213  * AVHWFramesContext.format must be equal to
2214  * AVCodecContext.pix_fmt.
2215  *
2216  * This field should be set before avcodec_open2() is called.
2217  */
2219 
2220  /**
2221  * Control the form of AVSubtitle.rects[N]->ass
2222  * - decoding: set by user
2223  * - encoding: unused
2224  */
2226 #define FF_SUB_TEXT_FMT_ASS 0
2227 #if FF_API_ASS_TIMING
2228 #define FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS 1
2229 #endif
2230 
2231  /**
2232  * Audio only. The amount of padding (in samples) appended by the encoder to
2233  * the end of the audio. I.e. this number of decoded samples must be
2234  * discarded by the caller from the end of the stream to get the original
2235  * audio without any trailing padding.
2236  *
2237  * - decoding: unused
2238  * - encoding: unused
2239  */
2241 
2242  /**
2243  * The number of pixels per image to maximally accept.
2244  *
2245  * - decoding: set by user
2246  * - encoding: set by user
2247  */
2248  int64_t max_pixels;
2249 
2250  /**
2251  * A reference to the AVHWDeviceContext describing the device which will
2252  * be used by a hardware encoder/decoder. The reference is set by the
2253  * caller and afterwards owned (and freed) by libavcodec.
2254  *
2255  * This should be used if either the codec device does not require
2256  * hardware frames or any that are used are to be allocated internally by
2257  * libavcodec. If the user wishes to supply any of the frames used as
2258  * encoder input or decoder output then hw_frames_ctx should be used
2259  * instead. When hw_frames_ctx is set in get_format() for a decoder, this
2260  * field will be ignored while decoding the associated stream segment, but
2261  * may again be used on a following one after another get_format() call.
2262  *
2263  * For both encoders and decoders this field should be set before
2264  * avcodec_open2() is called and must not be written to thereafter.
2265  *
2266  * Note that some decoders may require this field to be set initially in
2267  * order to support hw_frames_ctx at all - in that case, all frames
2268  * contexts used must be created on the same device.
2269  */
2271 
2272  /**
2273  * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
2274  * decoding (if active).
2275  * - encoding: unused
2276  * - decoding: Set by user (either before avcodec_open2(), or in the
2277  * AVCodecContext.get_format callback)
2278  */
2280 
2281  /**
2282  * Video decoding only. Certain video codecs support cropping, meaning that
2283  * only a sub-rectangle of the decoded frame is intended for display. This
2284  * option controls how cropping is handled by libavcodec.
2285  *
2286  * When set to 1 (the default), libavcodec will apply cropping internally.
2287  * I.e. it will modify the output frame width/height fields and offset the
2288  * data pointers (only by as much as possible while preserving alignment, or
2289  * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
2290  * the frames output by the decoder refer only to the cropped area. The
2291  * crop_* fields of the output frames will be zero.
2292  *
2293  * When set to 0, the width/height fields of the output frames will be set
2294  * to the coded dimensions and the crop_* fields will describe the cropping
2295  * rectangle. Applying the cropping is left to the caller.
2296  *
2297  * @warning When hardware acceleration with opaque output frames is used,
2298  * libavcodec is unable to apply cropping from the top/left border.
2299  *
2300  * @note when this option is set to zero, the width/height fields of the
2301  * AVCodecContext and output AVFrames have different meanings. The codec
2302  * context fields store display dimensions (with the coded dimensions in
2303  * coded_width/height), while the frame fields store the coded dimensions
2304  * (with the display dimensions being determined by the crop_* fields).
2305  */
2307 
2308  /*
2309  * Video decoding only. Sets the number of extra hardware frames which
2310  * the decoder will allocate for use by the caller. This must be set
2311  * before avcodec_open2() is called.
2312  *
2313  * Some hardware decoders require all frames that they will use for
2314  * output to be defined in advance before decoding starts. For such
2315  * decoders, the hardware frame pool must therefore be of a fixed size.
2316  * The extra frames set here are on top of any number that the decoder
2317  * needs internally in order to operate normally (for example, frames
2318  * used as reference pictures).
2319  */
2321 
2322  /**
2323  * The percentage of damaged samples to discard a frame.
2324  *
2325  * - decoding: set by user
2326  * - encoding: unused
2327  */
2329 
2330  /**
2331  * The number of samples per frame to maximally accept.
2332  *
2333  * - decoding: set by user
2334  * - encoding: set by user
2335  */
2336  int64_t max_samples;
2337 
2338  /**
2339  * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of
2340  * metadata exported in frame, packet, or coded stream side data by
2341  * decoders and encoders.
2342  *
2343  * - decoding: set by user
2344  * - encoding: set by user
2345  */
2347 
2348  /**
2349  * This callback is called at the beginning of each packet to get a data
2350  * buffer for it.
2351  *
2352  * The following field will be set in the packet before this callback is
2353  * called:
2354  * - size
2355  * This callback must use the above value to calculate the required buffer size,
2356  * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes.
2357  *
2358  * This callback must fill the following fields in the packet:
2359  * - data: alignment requirements for AVPacket apply, if any. Some architectures and
2360  * encoders may benefit from having aligned data.
2361  * - buf: must contain a pointer to an AVBufferRef structure. The packet's
2362  * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(),
2363  * and av_buffer_ref().
2364  *
2365  * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call
2366  * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by
2367  * some other means.
2368  *
2369  * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags.
2370  * They may be used for example to hint what use the buffer may get after being
2371  * created.
2372  * Implementations of this callback may ignore flags they don't understand.
2373  * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused
2374  * (read and/or written to if it is writable) later by libavcodec.
2375  *
2376  * This callback must be thread-safe, as when frame threading is used, it may
2377  * be called from multiple threads simultaneously.
2378  *
2379  * @see avcodec_default_get_encode_buffer()
2380  *
2381  * - encoding: Set by libavcodec, user can override.
2382  * - decoding: unused
2383  */
2385 } AVCodecContext;
2386 
2387 #if FF_API_CODEC_GET_SET
2388 /**
2389  * Accessors for some AVCodecContext fields. These used to be provided for ABI
2390  * compatibility, and do not need to be used anymore.
2391  */
2396 
2401 
2403 unsigned av_codec_get_codec_properties(const AVCodecContext *avctx);
2404 
2406 int av_codec_get_lowres(const AVCodecContext *avctx);
2408 void av_codec_set_lowres(AVCodecContext *avctx, int val);
2409 
2411 int av_codec_get_seek_preroll(const AVCodecContext *avctx);
2413 void av_codec_set_seek_preroll(AVCodecContext *avctx, int val);
2414 
2416 uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx);
2418 void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val);
2419 #endif
2420 
2421 struct AVSubtitle;
2422 
2423 #if FF_API_CODEC_GET_SET
2425 int av_codec_get_max_lowres(const AVCodec *codec);
2426 #endif
2427 
2428 struct MpegEncContext;
2429 
2430 /**
2431  * @defgroup lavc_hwaccel AVHWAccel
2432  *
2433  * @note Nothing in this structure should be accessed by the user. At some
2434  * point in future it will not be externally visible at all.
2435  *
2436  * @{
2437  */
2438 typedef struct AVHWAccel {
2439  /**
2440  * Name of the hardware accelerated codec.
2441  * The name is globally unique among encoders and among decoders (but an
2442  * encoder and a decoder can share the same name).
2443  */
2444  const char *name;
2445 
2446  /**
2447  * Type of codec implemented by the hardware accelerator.
2448  *
2449  * See AVMEDIA_TYPE_xxx
2450  */
2452 
2453  /**
2454  * Codec implemented by the hardware accelerator.
2455  *
2456  * See AV_CODEC_ID_xxx
2457  */
2459 
2460  /**
2461  * Supported pixel format.
2462  *
2463  * Only hardware accelerated formats are supported here.
2464  */
2466 
2467  /**
2468  * Hardware accelerated codec capabilities.
2469  * see AV_HWACCEL_CODEC_CAP_*
2470  */
2472 
2473  /*****************************************************************
2474  * No fields below this line are part of the public API. They
2475  * may not be used outside of libavcodec and can be changed and
2476  * removed at will.
2477  * New public fields should be added right above.
2478  *****************************************************************
2479  */
2480 
2481  /**
2482  * Allocate a custom buffer
2483  */
2485 
2486  /**
2487  * Called at the beginning of each frame or field picture.
2488  *
2489  * Meaningful frame information (codec specific) is guaranteed to
2490  * be parsed at this point. This function is mandatory.
2491  *
2492  * Note that buf can be NULL along with buf_size set to 0.
2493  * Otherwise, this means the whole frame is available at this point.
2494  *
2495  * @param avctx the codec context
2496  * @param buf the frame data buffer base
2497  * @param buf_size the size of the frame in bytes
2498  * @return zero if successful, a negative value otherwise
2499  */
2500  int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
2501 
2502  /**
2503  * Callback for parameter data (SPS/PPS/VPS etc).
2504  *
2505  * Useful for hardware decoders which keep persistent state about the
2506  * video parameters, and need to receive any changes to update that state.
2507  *
2508  * @param avctx the codec context
2509  * @param type the nal unit type
2510  * @param buf the nal unit data buffer
2511  * @param buf_size the size of the nal unit in bytes
2512  * @return zero if successful, a negative value otherwise
2513  */
2514  int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size);
2515 
2516  /**
2517  * Callback for each slice.
2518  *
2519  * Meaningful slice information (codec specific) is guaranteed to
2520  * be parsed at this point. This function is mandatory.
2521  * The only exception is XvMC, that works on MB level.
2522  *
2523  * @param avctx the codec context
2524  * @param buf the slice data buffer base
2525  * @param buf_size the size of the slice in bytes
2526  * @return zero if successful, a negative value otherwise
2527  */
2528  int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
2529 
2530  /**
2531  * Called at the end of each frame or field picture.
2532  *
2533  * The whole picture is parsed at this point and can now be sent
2534  * to the hardware accelerator. This function is mandatory.
2535  *
2536  * @param avctx the codec context
2537  * @return zero if successful, a negative value otherwise
2538  */
2540 
2541  /**
2542  * Size of per-frame hardware accelerator private data.
2543  *
2544  * Private data is allocated with av_mallocz() before
2545  * AVCodecContext.get_buffer() and deallocated after
2546  * AVCodecContext.release_buffer().
2547  */
2549 
2550  /**
2551  * Called for every Macroblock in a slice.
2552  *
2553  * XvMC uses it to replace the ff_mpv_reconstruct_mb().
2554  * Instead of decoding to raw picture, MB parameters are
2555  * stored in an array provided by the video driver.
2556  *
2557  * @param s the mpeg context
2558  */
2559  void (*decode_mb)(struct MpegEncContext *s);
2560 
2561  /**
2562  * Initialize the hwaccel private data.
2563  *
2564  * This will be called from ff_get_format(), after hwaccel and
2565  * hwaccel_context are set and the hwaccel private data in AVCodecInternal
2566  * is allocated.
2567  */
2569 
2570  /**
2571  * Uninitialize the hwaccel private data.
2572  *
2573  * This will be called from get_format() or avcodec_close(), after hwaccel
2574  * and hwaccel_context are already uninitialized.
2575  */
2577 
2578  /**
2579  * Size of the private data to allocate in
2580  * AVCodecInternal.hwaccel_priv_data.
2581  */
2583 
2584  /**
2585  * Internal hwaccel capabilities.
2586  */
2588 
2589  /**
2590  * Fill the given hw_frames context with current codec parameters. Called
2591  * from get_format. Refer to avcodec_get_hw_frames_parameters() for
2592  * details.
2593  *
2594  * This CAN be called before AVHWAccel.init is called, and you must assume
2595  * that avctx->hwaccel_priv_data is invalid.
2596  */
2598 } AVHWAccel;
2599 
2600 /**
2601  * HWAccel is experimental and is thus avoided in favor of non experimental
2602  * codecs
2603  */
2604 #define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200
2605 
2606 /**
2607  * Hardware acceleration should be used for decoding even if the codec level
2608  * used is unknown or higher than the maximum supported level reported by the
2609  * hardware driver.
2610  *
2611  * It's generally a good idea to pass this flag unless you have a specific
2612  * reason not to, as hardware tends to under-report supported levels.
2613  */
2614 #define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0)
2615 
2616 /**
2617  * Hardware acceleration can output YUV pixel formats with a different chroma
2618  * sampling than 4:2:0 and/or other than 8 bits per component.
2619  */
2620 #define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1)
2621 
2622 /**
2623  * Hardware acceleration should still be attempted for decoding when the
2624  * codec profile does not match the reported capabilities of the hardware.
2625  *
2626  * For example, this can be used to try to decode baseline profile H.264
2627  * streams in hardware - it will often succeed, because many streams marked
2628  * as baseline profile actually conform to constrained baseline profile.
2629  *
2630  * @warning If the stream is actually not supported then the behaviour is
2631  * undefined, and may include returning entirely incorrect output
2632  * while indicating success.
2633  */
2634 #define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2)
2635 
2636 /**
2637  * @}
2638  */
2639 
2640 #if FF_API_AVPICTURE
2641 /**
2642  * @defgroup lavc_picture AVPicture
2643  *
2644  * Functions for working with AVPicture
2645  * @{
2646  */
2647 
2648 /**
2649  * Picture data structure.
2650  *
2651  * Up to four components can be stored into it, the last component is
2652  * alpha.
2653  * @deprecated use AVFrame or imgutils functions instead
2654  */
2655 typedef struct AVPicture {
2657  uint8_t *data[AV_NUM_DATA_POINTERS]; ///< pointers to the image data planes
2659  int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line
2660 } AVPicture;
2661 
2662 /**
2663  * @}
2664  */
2665 #endif
2666 
2669 
2670  SUBTITLE_BITMAP, ///< A bitmap, pict will be set
2671 
2672  /**
2673  * Plain text, the text field must be set by the decoder and is
2674  * authoritative. ass and pict fields may contain approximations.
2675  */
2677 
2678  /**
2679  * Formatted text, the ass field must be set by the decoder and is
2680  * authoritative. pict and text fields may contain approximations.
2681  */
2683 };
2684 
2685 #define AV_SUBTITLE_FLAG_FORCED 0x00000001
2686 
2687 typedef struct AVSubtitleRect {
2688  int x; ///< top left corner of pict, undefined when pict is not set
2689  int y; ///< top left corner of pict, undefined when pict is not set
2690  int w; ///< width of pict, undefined when pict is not set
2691  int h; ///< height of pict, undefined when pict is not set
2692  int nb_colors; ///< number of colors in pict, undefined when pict is not set
2693 
2694 #if FF_API_AVPICTURE
2695  /**
2696  * @deprecated unused
2697  */
2700 #endif
2701  /**
2702  * data+linesize for the bitmap of this subtitle.
2703  * Can be set for text/ass as well once they are rendered.
2704  */
2706  int linesize[4];
2707 
2709 
2710  char *text; ///< 0 terminated plain UTF-8 text
2711 
2712  /**
2713  * 0 terminated ASS/SSA compatible event line.
2714  * The presentation of this is unaffected by the other values in this
2715  * struct.
2716  */
2717  char *ass;
2718 
2719  int flags;
2720 } AVSubtitleRect;
2721 
2722 typedef struct AVSubtitle {
2723  uint16_t format; /* 0 = graphics */
2724  uint32_t start_display_time; /* relative to packet pts, in ms */
2725  uint32_t end_display_time; /* relative to packet pts, in ms */
2726  unsigned num_rects;
2728  int64_t pts; ///< Same as packet pts, in AV_TIME_BASE
2729 } AVSubtitle;
2730 
2731 #if FF_API_NEXT
2732 /**
2733  * If c is NULL, returns the first registered codec,
2734  * if c is non-NULL, returns the next registered codec after c,
2735  * or NULL if c is the last one.
2736  */
2738 AVCodec *av_codec_next(const AVCodec *c);
2739 #endif
2740 
2741 /**
2742  * Return the LIBAVCODEC_VERSION_INT constant.
2743  */
2744 unsigned avcodec_version(void);
2745 
2746 /**
2747  * Return the libavcodec build-time configuration.
2748  */
2749 const char *avcodec_configuration(void);
2750 
2751 /**
2752  * Return the libavcodec license.
2753  */
2754 const char *avcodec_license(void);
2755 
2756 #if FF_API_NEXT
2757 /**
2758  * @deprecated Calling this function is unnecessary.
2759  */
2761 void avcodec_register(AVCodec *codec);
2762 
2763 /**
2764  * @deprecated Calling this function is unnecessary.
2765  */
2767 void avcodec_register_all(void);
2768 #endif
2769 
2770 /**
2771  * Allocate an AVCodecContext and set its fields to default values. The
2772  * resulting struct should be freed with avcodec_free_context().
2773  *
2774  * @param codec if non-NULL, allocate private data and initialize defaults
2775  * for the given codec. It is illegal to then call avcodec_open2()
2776  * with a different codec.
2777  * If NULL, then the codec-specific defaults won't be initialized,
2778  * which may result in suboptimal default settings (this is
2779  * important mainly for encoders, e.g. libx264).
2780  *
2781  * @return An AVCodecContext filled with default values or NULL on failure.
2782  */
2784 
2785 /**
2786  * Free the codec context and everything associated with it and write NULL to
2787  * the provided pointer.
2788  */
2789 void avcodec_free_context(AVCodecContext **avctx);
2790 
2791 #if FF_API_GET_CONTEXT_DEFAULTS
2792 /**
2793  * @deprecated This function should not be used, as closing and opening a codec
2794  * context multiple time is not supported. A new codec context should be
2795  * allocated for each new use.
2796  */
2798 #endif
2799 
2800 /**
2801  * Get the AVClass for AVCodecContext. It can be used in combination with
2802  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2803  *
2804  * @see av_opt_find().
2805  */
2806 const AVClass *avcodec_get_class(void);
2807 
2808 #if FF_API_GET_FRAME_CLASS
2809 /**
2810  * @deprecated This function should not be used.
2811  */
2813 const AVClass *avcodec_get_frame_class(void);
2814 #endif
2815 
2816 /**
2817  * Get the AVClass for AVSubtitleRect. It can be used in combination with
2818  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2819  *
2820  * @see av_opt_find().
2821  */
2823 
2824 #if FF_API_COPY_CONTEXT
2825 /**
2826  * Copy the settings of the source AVCodecContext into the destination
2827  * AVCodecContext. The resulting destination codec context will be
2828  * unopened, i.e. you are required to call avcodec_open2() before you
2829  * can use this AVCodecContext to decode/encode video/audio data.
2830  *
2831  * @param dest target codec context, should be initialized with
2832  * avcodec_alloc_context3(NULL), but otherwise uninitialized
2833  * @param src source codec context
2834  * @return AVERROR() on error (e.g. memory allocation error), 0 on success
2835  *
2836  * @deprecated The semantics of this function are ill-defined and it should not
2837  * be used. If you need to transfer the stream parameters from one codec context
2838  * to another, use an intermediate AVCodecParameters instance and the
2839  * avcodec_parameters_from_context() / avcodec_parameters_to_context()
2840  * functions.
2841  */
2844 #endif
2845 
2846 /**
2847  * Fill the parameters struct based on the values from the supplied codec
2848  * context. Any allocated fields in par are freed and replaced with duplicates
2849  * of the corresponding fields in codec.
2850  *
2851  * @return >= 0 on success, a negative AVERROR code on failure
2852  */
2854  const AVCodecContext *codec);
2855 
2856 /**
2857  * Fill the codec context based on the values from the supplied codec
2858  * parameters. Any allocated fields in codec that have a corresponding field in
2859  * par are freed and replaced with duplicates of the corresponding field in par.
2860  * Fields in codec that do not have a counterpart in par are not touched.
2861  *
2862  * @return >= 0 on success, a negative AVERROR code on failure.
2863  */
2865  const AVCodecParameters *par);
2866 
2867 /**
2868  * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
2869  * function the context has to be allocated with avcodec_alloc_context3().
2870  *
2871  * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
2872  * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
2873  * retrieving a codec.
2874  *
2875  * @warning This function is not thread safe!
2876  *
2877  * @note Always call this function before using decoding routines (such as
2878  * @ref avcodec_receive_frame()).
2879  *
2880  * @code
2881  * av_dict_set(&opts, "b", "2.5M", 0);
2882  * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
2883  * if (!codec)
2884  * exit(1);
2885  *
2886  * context = avcodec_alloc_context3(codec);
2887  *
2888  * if (avcodec_open2(context, codec, opts) < 0)
2889  * exit(1);
2890  * @endcode
2891  *
2892  * @param avctx The context to initialize.
2893  * @param codec The codec to open this context for. If a non-NULL codec has been
2894  * previously passed to avcodec_alloc_context3() or
2895  * for this context, then this parameter MUST be either NULL or
2896  * equal to the previously passed codec.
2897  * @param options A dictionary filled with AVCodecContext and codec-private options.
2898  * On return this object will be filled with options that were not found.
2899  *
2900  * @return zero on success, a negative value on error
2901  * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
2902  * av_dict_set(), av_opt_find().
2903  */
2904 int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
2905 
2906 /**
2907  * Close a given AVCodecContext and free all the data associated with it
2908  * (but not the AVCodecContext itself).
2909  *
2910  * Calling this function on an AVCodecContext that hasn't been opened will free
2911  * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
2912  * codec. Subsequent calls will do nothing.
2913  *
2914  * @note Do not use this function. Use avcodec_free_context() to destroy a
2915  * codec context (either open or closed). Opening and closing a codec context
2916  * multiple times is not supported anymore -- use multiple codec contexts
2917  * instead.
2918  */
2919 int avcodec_close(AVCodecContext *avctx);
2920 
2921 /**
2922  * Free all allocated data in the given subtitle struct.
2923  *
2924  * @param sub AVSubtitle to free.
2925  */
2927 
2928 /**
2929  * @}
2930  */
2931 
2932 /**
2933  * @addtogroup lavc_decoding
2934  * @{
2935  */
2936 
2937 /**
2938  * The default callback for AVCodecContext.get_buffer2(). It is made public so
2939  * it can be called by custom get_buffer2() implementations for decoders without
2940  * AV_CODEC_CAP_DR1 set.
2941  */
2943 
2944 /**
2945  * The default callback for AVCodecContext.get_encode_buffer(). It is made public so
2946  * it can be called by custom get_encode_buffer() implementations for encoders without
2947  * AV_CODEC_CAP_DR1 set.
2948  */
2950 
2951 /**
2952  * Modify width and height values so that they will result in a memory
2953  * buffer that is acceptable for the codec if you do not use any horizontal
2954  * padding.
2955  *
2956  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2957  */
2959 
2960 /**
2961  * Modify width and height values so that they will result in a memory
2962  * buffer that is acceptable for the codec if you also ensure that all
2963  * line sizes are a multiple of the respective linesize_align[i].
2964  *
2965  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2966  */
2968  int linesize_align[AV_NUM_DATA_POINTERS]);
2969 
2970 /**
2971  * Converts AVChromaLocation to swscale x/y chroma position.
2972  *
2973  * The positions represent the chroma (0,0) position in a coordinates system
2974  * with luma (0,0) representing the origin and luma(1,1) representing 256,256
2975  *
2976  * @param xpos horizontal chroma sample position
2977  * @param ypos vertical chroma sample position
2978  */
2979 int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos);
2980 
2981 /**
2982  * Converts swscale x/y chroma position to AVChromaLocation.
2983  *
2984  * The positions represent the chroma (0,0) position in a coordinates system
2985  * with luma (0,0) representing the origin and luma(1,1) representing 256,256
2986  *
2987  * @param xpos horizontal chroma sample position
2988  * @param ypos vertical chroma sample position
2989  */
2990 enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos);
2991 
2992 #if FF_API_OLD_ENCDEC
2993 /**
2994  * Decode the audio frame of size avpkt->size from avpkt->data into frame.
2995  *
2996  * Some decoders may support multiple frames in a single AVPacket. Such
2997  * decoders would then just decode the first frame and the return value would be
2998  * less than the packet size. In this case, avcodec_decode_audio4 has to be
2999  * called again with an AVPacket containing the remaining data in order to
3000  * decode the second frame, etc... Even if no frames are returned, the packet
3001  * needs to be fed to the decoder with remaining data until it is completely
3002  * consumed or an error occurs.
3003  *
3004  * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
3005  * and output. This means that for some packets they will not immediately
3006  * produce decoded output and need to be flushed at the end of decoding to get
3007  * all the decoded data. Flushing is done by calling this function with packets
3008  * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
3009  * returning samples. It is safe to flush even those decoders that are not
3010  * marked with AV_CODEC_CAP_DELAY, then no samples will be returned.
3011  *
3012  * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
3013  * larger than the actual read bytes because some optimized bitstream
3014  * readers read 32 or 64 bits at once and could read over the end.
3015  *
3016  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
3017  * before packets may be fed to the decoder.
3018  *
3019  * @param avctx the codec context
3020  * @param[out] frame The AVFrame in which to store decoded audio samples.
3021  * The decoder will allocate a buffer for the decoded frame by
3022  * calling the AVCodecContext.get_buffer2() callback.
3023  * When AVCodecContext.refcounted_frames is set to 1, the frame is
3024  * reference counted and the returned reference belongs to the
3025  * caller. The caller must release the frame using av_frame_unref()
3026  * when the frame is no longer needed. The caller may safely write
3027  * to the frame if av_frame_is_writable() returns 1.
3028  * When AVCodecContext.refcounted_frames is set to 0, the returned
3029  * reference belongs to the decoder and is valid only until the
3030  * next call to this function or until closing or flushing the
3031  * decoder. The caller may not write to it.
3032  * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is
3033  * non-zero. Note that this field being set to zero
3034  * does not mean that an error has occurred. For
3035  * decoders with AV_CODEC_CAP_DELAY set, no given decode
3036  * call is guaranteed to produce a frame.
3037  * @param[in] avpkt The input AVPacket containing the input buffer.
3038  * At least avpkt->data and avpkt->size should be set. Some
3039  * decoders might also require additional fields to be set.
3040  * @return A negative error code is returned if an error occurred during
3041  * decoding, otherwise the number of bytes consumed from the input
3042  * AVPacket is returned.
3043  *
3044 * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
3045  */
3048  int *got_frame_ptr, const AVPacket *avpkt);
3049 
3050 /**
3051  * Decode the video frame of size avpkt->size from avpkt->data into picture.
3052  * Some decoders may support multiple frames in a single AVPacket, such
3053  * decoders would then just decode the first frame.
3054  *
3055  * @warning The input buffer must be AV_INPUT_BUFFER_PADDING_SIZE larger than
3056  * the actual read bytes because some optimized bitstream readers read 32 or 64
3057  * bits at once and could read over the end.
3058  *
3059  * @warning The end of the input buffer buf should be set to 0 to ensure that
3060  * no overreading happens for damaged MPEG streams.
3061  *
3062  * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a delay
3063  * between input and output, these need to be fed with avpkt->data=NULL,
3064  * avpkt->size=0 at the end to return the remaining frames.
3065  *
3066  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
3067  * before packets may be fed to the decoder.
3068  *
3069  * @param avctx the codec context
3070  * @param[out] picture The AVFrame in which the decoded video frame will be stored.
3071  * Use av_frame_alloc() to get an AVFrame. The codec will
3072  * allocate memory for the actual bitmap by calling the
3073  * AVCodecContext.get_buffer2() callback.
3074  * When AVCodecContext.refcounted_frames is set to 1, the frame is
3075  * reference counted and the returned reference belongs to the
3076  * caller. The caller must release the frame using av_frame_unref()
3077  * when the frame is no longer needed. The caller may safely write
3078  * to the frame if av_frame_is_writable() returns 1.
3079  * When AVCodecContext.refcounted_frames is set to 0, the returned
3080  * reference belongs to the decoder and is valid only until the
3081  * next call to this function or until closing or flushing the
3082  * decoder. The caller may not write to it.
3083  *
3084  * @param[in] avpkt The input AVPacket containing the input buffer.
3085  * You can create such packet with av_init_packet() and by then setting
3086  * data and size, some decoders might in addition need other fields like
3087  * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least
3088  * fields possible.
3089  * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero.
3090  * @return On error a negative value is returned, otherwise the number of bytes
3091  * used or zero if no frame could be decompressed.
3092  *
3093  * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
3094  */
3096 int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
3097  int *got_picture_ptr,
3098  const AVPacket *avpkt);
3099 #endif
3100 
3101 /**
3102  * Decode a subtitle message.
3103  * Return a negative value on error, otherwise return the number of bytes used.
3104  * If no subtitle could be decompressed, got_sub_ptr is zero.
3105  * Otherwise, the subtitle is stored in *sub.
3106  * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
3107  * simplicity, because the performance difference is expected to be negligible
3108  * and reusing a get_buffer written for video codecs would probably perform badly
3109  * due to a potentially very different allocation pattern.
3110  *
3111  * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
3112  * and output. This means that for some packets they will not immediately
3113  * produce decoded output and need to be flushed at the end of decoding to get
3114  * all the decoded data. Flushing is done by calling this function with packets
3115  * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
3116  * returning subtitles. It is safe to flush even those decoders that are not
3117  * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
3118  *
3119  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
3120  * before packets may be fed to the decoder.
3121  *
3122  * @param avctx the codec context
3123  * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored,
3124  * must be freed with avsubtitle_free if *got_sub_ptr is set.
3125  * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
3126  * @param[in] avpkt The input AVPacket containing the input buffer.
3127  */
3129  int *got_sub_ptr,
3130  AVPacket *avpkt);
3131 
3132 /**
3133  * Supply raw packet data as input to a decoder.
3134  *
3135  * Internally, this call will copy relevant AVCodecContext fields, which can
3136  * influence decoding per-packet, and apply them when the packet is actually
3137  * decoded. (For example AVCodecContext.skip_frame, which might direct the
3138  * decoder to drop the frame contained by the packet sent with this function.)
3139  *
3140  * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
3141  * larger than the actual read bytes because some optimized bitstream
3142  * readers read 32 or 64 bits at once and could read over the end.
3143  *
3144  * @warning Do not mix this API with the legacy API (like avcodec_decode_video2())
3145  * on the same AVCodecContext. It will return unexpected results now
3146  * or in future libavcodec versions.
3147  *
3148  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
3149  * before packets may be fed to the decoder.
3150  *
3151  * @param avctx codec context
3152  * @param[in] avpkt The input AVPacket. Usually, this will be a single video
3153  * frame, or several complete audio frames.
3154  * Ownership of the packet remains with the caller, and the
3155  * decoder will not write to the packet. The decoder may create
3156  * a reference to the packet data (or copy it if the packet is
3157  * not reference-counted).
3158  * Unlike with older APIs, the packet is always fully consumed,
3159  * and if it contains multiple frames (e.g. some audio codecs),
3160  * will require you to call avcodec_receive_frame() multiple
3161  * times afterwards before you can send a new packet.
3162  * It can be NULL (or an AVPacket with data set to NULL and
3163  * size set to 0); in this case, it is considered a flush
3164  * packet, which signals the end of the stream. Sending the
3165  * first flush packet will return success. Subsequent ones are
3166  * unnecessary and will return AVERROR_EOF. If the decoder
3167  * still has frames buffered, it will return them after sending
3168  * a flush packet.
3169  *
3170  * @return 0 on success, otherwise negative error code:
3171  * AVERROR(EAGAIN): input is not accepted in the current state - user
3172  * must read output with avcodec_receive_frame() (once
3173  * all output is read, the packet should be resent, and
3174  * the call will not fail with EAGAIN).
3175  * AVERROR_EOF: the decoder has been flushed, and no new packets can
3176  * be sent to it (also returned if more than 1 flush
3177  * packet is sent)
3178  * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush
3179  * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
3180  * other errors: legitimate decoding errors
3181  */
3182 int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
3183 
3184 /**
3185  * Return decoded output data from a decoder.
3186  *
3187  * @param avctx codec context
3188  * @param frame This will be set to a reference-counted video or audio
3189  * frame (depending on the decoder type) allocated by the
3190  * decoder. Note that the function will always call
3191  * av_frame_unref(frame) before doing anything else.
3192  *
3193  * @return
3194  * 0: success, a frame was returned
3195  * AVERROR(EAGAIN): output is not available in this state - user must try
3196  * to send new input
3197  * AVERROR_EOF: the decoder has been fully flushed, and there will be
3198  * no more output frames
3199  * AVERROR(EINVAL): codec not opened, or it is an encoder
3200  * AVERROR_INPUT_CHANGED: current decoded frame has changed parameters
3201  * with respect to first decoded frame. Applicable
3202  * when flag AV_CODEC_FLAG_DROPCHANGED is set.
3203  * other negative values: legitimate decoding errors
3204  */
3206 
3207 /**
3208  * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
3209  * to retrieve buffered output packets.
3210  *
3211  * @param avctx codec context
3212  * @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
3213  * Ownership of the frame remains with the caller, and the
3214  * encoder will not write to the frame. The encoder may create
3215  * a reference to the frame data (or copy it if the frame is
3216  * not reference-counted).
3217  * It can be NULL, in which case it is considered a flush
3218  * packet. This signals the end of the stream. If the encoder
3219  * still has packets buffered, it will return them after this
3220  * call. Once flushing mode has been entered, additional flush
3221  * packets are ignored, and sending frames will return
3222  * AVERROR_EOF.
3223  *
3224  * For audio:
3225  * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
3226  * can have any number of samples.
3227  * If it is not set, frame->nb_samples must be equal to
3228  * avctx->frame_size for all frames except the last.
3229  * The final frame may be smaller than avctx->frame_size.
3230  * @return 0 on success, otherwise negative error code:
3231  * AVERROR(EAGAIN): input is not accepted in the current state - user
3232  * must read output with avcodec_receive_packet() (once
3233  * all output is read, the packet should be resent, and
3234  * the call will not fail with EAGAIN).
3235  * AVERROR_EOF: the encoder has been flushed, and no new frames can
3236  * be sent to it
3237  * AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a
3238  * decoder, or requires flush
3239  * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
3240  * other errors: legitimate encoding errors
3241  */
3242 int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
3243 
3244 /**
3245  * Read encoded data from the encoder.
3246  *
3247  * @param avctx codec context
3248  * @param avpkt This will be set to a reference-counted packet allocated by the
3249  * encoder. Note that the function will always call
3250  * av_packet_unref(avpkt) before doing anything else.
3251  * @return 0 on success, otherwise negative error code:
3252  * AVERROR(EAGAIN): output is not available in the current state - user
3253  * must try to send input
3254  * AVERROR_EOF: the encoder has been fully flushed, and there will be
3255  * no more output packets
3256  * AVERROR(EINVAL): codec not opened, or it is a decoder
3257  * other errors: legitimate encoding errors
3258  */
3259 int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
3260 
3261 /**
3262  * Create and return a AVHWFramesContext with values adequate for hardware
3263  * decoding. This is meant to get called from the get_format callback, and is
3264  * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
3265  * This API is for decoding with certain hardware acceleration modes/APIs only.
3266  *
3267  * The returned AVHWFramesContext is not initialized. The caller must do this
3268  * with av_hwframe_ctx_init().
3269  *
3270  * Calling this function is not a requirement, but makes it simpler to avoid
3271  * codec or hardware API specific details when manually allocating frames.
3272  *
3273  * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
3274  * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
3275  * it unnecessary to call this function or having to care about
3276  * AVHWFramesContext initialization at all.
3277  *
3278  * There are a number of requirements for calling this function:
3279  *
3280  * - It must be called from get_format with the same avctx parameter that was
3281  * passed to get_format. Calling it outside of get_format is not allowed, and
3282  * can trigger undefined behavior.
3283  * - The function is not always supported (see description of return values).
3284  * Even if this function returns successfully, hwaccel initialization could
3285  * fail later. (The degree to which implementations check whether the stream
3286  * is actually supported varies. Some do this check only after the user's
3287  * get_format callback returns.)
3288  * - The hw_pix_fmt must be one of the choices suggested by get_format. If the
3289  * user decides to use a AVHWFramesContext prepared with this API function,
3290  * the user must return the same hw_pix_fmt from get_format.
3291  * - The device_ref passed to this function must support the given hw_pix_fmt.
3292  * - After calling this API function, it is the user's responsibility to
3293  * initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
3294  * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
3295  * before returning from get_format (this is implied by the normal
3296  * AVCodecContext.hw_frames_ctx API rules).
3297  * - The AVHWFramesContext parameters may change every time time get_format is
3298  * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
3299  * you are inherently required to go through this process again on every
3300  * get_format call.
3301  * - It is perfectly possible to call this function without actually using
3302  * the resulting AVHWFramesContext. One use-case might be trying to reuse a
3303  * previously initialized AVHWFramesContext, and calling this API function
3304  * only to test whether the required frame parameters have changed.
3305  * - Fields that use dynamically allocated values of any kind must not be set
3306  * by the user unless setting them is explicitly allowed by the documentation.
3307  * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
3308  * the new free callback must call the potentially set previous free callback.
3309  * This API call may set any dynamically allocated fields, including the free
3310  * callback.
3311  *
3312  * The function will set at least the following fields on AVHWFramesContext
3313  * (potentially more, depending on hwaccel API):
3314  *
3315  * - All fields set by av_hwframe_ctx_alloc().
3316  * - Set the format field to hw_pix_fmt.
3317  * - Set the sw_format field to the most suited and most versatile format. (An
3318  * implication is that this will prefer generic formats over opaque formats
3319  * with arbitrary restrictions, if possible.)
3320  * - Set the width/height fields to the coded frame size, rounded up to the
3321  * API-specific minimum alignment.
3322  * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
3323  * field to the number of maximum reference surfaces possible with the codec,
3324  * plus 1 surface for the user to work (meaning the user can safely reference
3325  * at most 1 decoded surface at a time), plus additional buffering introduced
3326  * by frame threading. If the hwaccel does not require pre-allocation, the
3327  * field is left to 0, and the decoder will allocate new surfaces on demand
3328  * during decoding.
3329  * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
3330  * hardware API.
3331  *
3332  * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
3333  * with basic frame parameters set.
3334  *
3335  * The function is stateless, and does not change the AVCodecContext or the
3336  * device_ref AVHWDeviceContext.
3337  *
3338  * @param avctx The context which is currently calling get_format, and which
3339  * implicitly contains all state needed for filling the returned
3340  * AVHWFramesContext properly.
3341  * @param device_ref A reference to the AVHWDeviceContext describing the device
3342  * which will be used by the hardware decoder.
3343  * @param hw_pix_fmt The hwaccel format you are going to return from get_format.
3344  * @param out_frames_ref On success, set to a reference to an _uninitialized_
3345  * AVHWFramesContext, created from the given device_ref.
3346  * Fields will be set to values required for decoding.
3347  * Not changed if an error is returned.
3348  * @return zero on success, a negative value on error. The following error codes
3349  * have special semantics:
3350  * AVERROR(ENOENT): the decoder does not support this functionality. Setup
3351  * is always manual, or it is a decoder which does not
3352  * support setting AVCodecContext.hw_frames_ctx at all,
3353  * or it is a software format.
3354  * AVERROR(EINVAL): it is known that hardware decoding is not supported for
3355  * this configuration, or the device_ref is not supported
3356  * for the hwaccel referenced by hw_pix_fmt.
3357  */
3359  AVBufferRef *device_ref,
3361  AVBufferRef **out_frames_ref);
3362 
3363 
3364 
3365 /**
3366  * @defgroup lavc_parsing Frame parsing
3367  * @{
3368  */
3369 
3372  AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field
3373  AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field
3374  AV_PICTURE_STRUCTURE_FRAME, //< coded as frame
3375 };
3376 
3377 typedef struct AVCodecParserContext {
3378  void *priv_data;
3380  int64_t frame_offset; /* offset of the current frame */
3381  int64_t cur_offset; /* current offset
3382  (incremented by each av_parser_parse()) */
3383  int64_t next_frame_offset; /* offset of the next frame */
3384  /* video info */
3385  int pict_type; /* XXX: Put it back in AVCodecContext. */
3386  /**
3387  * This field is used for proper frame duration computation in lavf.
3388  * It signals, how much longer the frame duration of the current frame
3389  * is compared to normal frame duration.
3390  *
3391  * frame_duration = (1 + repeat_pict) * time_base
3392  *
3393  * It is used by codecs like H.264 to display telecined material.
3394  */
3395  int repeat_pict; /* XXX: Put it back in AVCodecContext. */
3396  int64_t pts; /* pts of the current frame */
3397  int64_t dts; /* dts of the current frame */
3398 
3399  /* private data */
3400  int64_t last_pts;
3401  int64_t last_dts;
3403 
3404 #define AV_PARSER_PTS_NB 4
3409 
3410  int flags;
3411 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001
3412 #define PARSER_FLAG_ONCE 0x0002
3413 /// Set if the parser has a valid file offset
3414 #define PARSER_FLAG_FETCHED_OFFSET 0x0004
3415 #define PARSER_FLAG_USE_CODEC_TS 0x1000
3416 
3417  int64_t offset; ///< byte offset from starting packet start
3419 
3420  /**
3421  * Set by parser to 1 for key frames and 0 for non-key frames.
3422  * It is initialized to -1, so if the parser doesn't set this flag,
3423  * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
3424  * will be used.
3425  */
3427 
3428 #if FF_API_CONVERGENCE_DURATION
3429  /**
3430  * @deprecated unused
3431  */
3434 #endif
3435 
3436  // Timestamp generation support:
3437  /**
3438  * Synchronization point for start of timestamp generation.
3439  *
3440  * Set to >0 for sync point, 0 for no sync point and <0 for undefined
3441  * (default).
3442  *
3443  * For example, this corresponds to presence of H.264 buffering period
3444  * SEI message.
3445  */
3447 
3448  /**
3449  * Offset of the current timestamp against last timestamp sync point in
3450  * units of AVCodecContext.time_base.
3451  *
3452  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
3453  * contain a valid timestamp offset.
3454  *
3455  * Note that the timestamp of sync point has usually a nonzero
3456  * dts_ref_dts_delta, which refers to the previous sync point. Offset of
3457  * the next frame after timestamp sync point will be usually 1.
3458  *
3459  * For example, this corresponds to H.264 cpb_removal_delay.
3460  */
3462 
3463  /**
3464  * Presentation delay of current frame in units of AVCodecContext.time_base.
3465  *
3466  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
3467  * contain valid non-negative timestamp delta (presentation time of a frame
3468  * must not lie in the past).
3469  *
3470  * This delay represents the difference between decoding and presentation
3471  * time of the frame.
3472  *
3473  * For example, this corresponds to H.264 dpb_output_delay.
3474  */
3476 
3477  /**
3478  * Position of the packet in file.
3479  *
3480  * Analogous to cur_frame_pts/dts
3481  */
3483 
3484  /**
3485  * Byte position of currently parsed frame in stream.
3486  */
3487  int64_t pos;
3488 
3489  /**
3490  * Previous frame byte position.
3491  */
3492  int64_t last_pos;
3493 
3494  /**
3495  * Duration of the current frame.
3496  * For audio, this is in units of 1 / AVCodecContext.sample_rate.
3497  * For all other types, this is in units of AVCodecContext.time_base.
3498  */
3500 
3502 
3503  /**
3504  * Indicate whether a picture is coded as a frame, top field or bottom field.
3505  *
3506  * For example, H.264 field_pic_flag equal to 0 corresponds to
3507  * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
3508  * equal to 1 and bottom_field_flag equal to 0 corresponds to
3509  * AV_PICTURE_STRUCTURE_TOP_FIELD.
3510  */
3512 
3513  /**
3514  * Picture number incremented in presentation or output order.
3515  * This field may be reinitialized at the first picture of a new sequence.
3516  *
3517  * For example, this corresponds to H.264 PicOrderCnt.
3518  */
3520 
3521  /**
3522  * Dimensions of the decoded video intended for presentation.
3523  */
3524  int width;
3525  int height;
3526 
3527  /**
3528  * Dimensions of the coded video.
3529  */
3532 
3533  /**
3534  * The format of the coded data, corresponds to enum AVPixelFormat for video
3535  * and for enum AVSampleFormat for audio.
3536  *
3537  * Note that a decoder can have considerable freedom in how exactly it
3538  * decodes the data, so the format reported here might be different from the
3539  * one returned by a decoder.
3540  */
3541  int format;
3543 
3544 typedef struct AVCodecParser {
3545  int codec_ids[5]; /* several codec IDs are permitted */
3548  /* This callback never returns an error, a negative value means that
3549  * the frame start was in a previous packet. */
3551  AVCodecContext *avctx,
3552  const uint8_t **poutbuf, int *poutbuf_size,
3553  const uint8_t *buf, int buf_size);
3555  int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
3556 #if FF_API_NEXT
3559 #endif
3560 } AVCodecParser;
3561 
3562 /**
3563  * Iterate over all registered codec parsers.
3564  *
3565  * @param opaque a pointer where libavcodec will store the iteration state. Must
3566  * point to NULL to start the iteration.
3567  *
3568  * @return the next registered codec parser or NULL when the iteration is
3569  * finished
3570  */
3571 const AVCodecParser *av_parser_iterate(void **opaque);
3572 
3573 #if FF_API_NEXT
3576 
3579 #endif
3581 
3582 /**
3583  * Parse a packet.
3584  *
3585  * @param s parser context.
3586  * @param avctx codec context.
3587  * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
3588  * @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
3589  * @param buf input buffer.
3590  * @param buf_size buffer size in bytes without the padding. I.e. the full buffer
3591  size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
3592  To signal EOF, this should be 0 (so that the last frame
3593  can be output).
3594  * @param pts input presentation timestamp.
3595  * @param dts input decoding timestamp.
3596  * @param pos input byte position in stream.
3597  * @return the number of bytes of the input bitstream used.
3598  *
3599  * Example:
3600  * @code
3601  * while(in_len){
3602  * len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
3603  * in_data, in_len,
3604  * pts, dts, pos);
3605  * in_data += len;
3606  * in_len -= len;
3607  *
3608  * if(size)
3609  * decode_frame(data, size);
3610  * }
3611  * @endcode
3612  */
3614  AVCodecContext *avctx,
3615  uint8_t **poutbuf, int *poutbuf_size,
3616  const uint8_t *buf, int buf_size,
3617  int64_t pts, int64_t dts,
3618  int64_t pos);
3619 
3620 #if FF_API_PARSER_CHANGE
3621 /**
3622  * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed
3623  * @deprecated Use dump_extradata, remove_extra or extract_extradata
3624  * bitstream filters instead.
3625  */
3628  AVCodecContext *avctx,
3629  uint8_t **poutbuf, int *poutbuf_size,
3630  const uint8_t *buf, int buf_size, int keyframe);
3631 #endif
3633 
3634 /**
3635  * @}
3636  * @}
3637  */
3638 
3639 /**
3640  * @addtogroup lavc_encoding
3641  * @{
3642  */
3643 
3644 #if FF_API_OLD_ENCDEC
3645 /**
3646  * Encode a frame of audio.
3647  *
3648  * Takes input samples from frame and writes the next output packet, if
3649  * available, to avpkt. The output packet does not necessarily contain data for
3650  * the most recent frame, as encoders can delay, split, and combine input frames
3651  * internally as needed.
3652  *
3653  * @param avctx codec context
3654  * @param avpkt output AVPacket.
3655  * The user can supply an output buffer by setting
3656  * avpkt->data and avpkt->size prior to calling the
3657  * function, but if the size of the user-provided data is not
3658  * large enough, encoding will fail. If avpkt->data and
3659  * avpkt->size are set, avpkt->destruct must also be set. All
3660  * other AVPacket fields will be reset by the encoder using
3661  * av_init_packet(). If avpkt->data is NULL, the encoder will
3662  * allocate it. The encoder will set avpkt->size to the size
3663  * of the output packet.
3664  *
3665  * If this function fails or produces no output, avpkt will be
3666  * freed using av_packet_unref().
3667  * @param[in] frame AVFrame containing the raw audio data to be encoded.
3668  * May be NULL when flushing an encoder that has the
3669  * AV_CODEC_CAP_DELAY capability set.
3670  * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
3671  * can have any number of samples.
3672  * If it is not set, frame->nb_samples must be equal to
3673  * avctx->frame_size for all frames except the last.
3674  * The final frame may be smaller than avctx->frame_size.
3675  * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
3676  * output packet is non-empty, and to 0 if it is
3677  * empty. If the function returns an error, the
3678  * packet can be assumed to be invalid, and the
3679  * value of got_packet_ptr is undefined and should
3680  * not be used.
3681  * @return 0 on success, negative error code on failure
3682  *
3683  * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead.
3684  * If allowed and required, set AVCodecContext.get_encode_buffer to
3685  * a custom function to pass user supplied output buffers.
3686  */
3688 int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt,
3689  const AVFrame *frame, int *got_packet_ptr);
3690 
3691 /**
3692  * Encode a frame of video.
3693  *
3694  * Takes input raw video data from frame and writes the next output packet, if
3695  * available, to avpkt. The output packet does not necessarily contain data for
3696  * the most recent frame, as encoders can delay and reorder input frames
3697  * internally as needed.
3698  *
3699  * @param avctx codec context
3700  * @param avpkt output AVPacket.
3701  * The user can supply an output buffer by setting
3702  * avpkt->data and avpkt->size prior to calling the
3703  * function, but if the size of the user-provided data is not
3704  * large enough, encoding will fail. All other AVPacket fields
3705  * will be reset by the encoder using av_init_packet(). If
3706  * avpkt->data is NULL, the encoder will allocate it.
3707  * The encoder will set avpkt->size to the size of the
3708  * output packet. The returned data (if any) belongs to the
3709  * caller, he is responsible for freeing it.
3710  *
3711  * If this function fails or produces no output, avpkt will be
3712  * freed using av_packet_unref().
3713  * @param[in] frame AVFrame containing the raw video data to be encoded.
3714  * May be NULL when flushing an encoder that has the
3715  * AV_CODEC_CAP_DELAY capability set.
3716  * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
3717  * output packet is non-empty, and to 0 if it is
3718  * empty. If the function returns an error, the
3719  * packet can be assumed to be invalid, and the
3720  * value of got_packet_ptr is undefined and should
3721  * not be used.
3722  * @return 0 on success, negative error code on failure
3723  *
3724  * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead.
3725  * If allowed and required, set AVCodecContext.get_encode_buffer to
3726  * a custom function to pass user supplied output buffers.
3727  */
3729 int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt,
3730  const AVFrame *frame, int *got_packet_ptr);
3731 #endif
3732 
3733 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
3734  const AVSubtitle *sub);
3735 
3736 
3737 /**
3738  * @}
3739  */
3740 
3741 #if FF_API_AVPICTURE
3742 /**
3743  * @addtogroup lavc_picture
3744  * @{
3745  */
3746 
3747 /**
3748  * @deprecated unused
3749  */
3751 int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height);
3752 
3753 /**
3754  * @deprecated unused
3755  */
3757 void avpicture_free(AVPicture *picture);
3758 
3759 /**
3760  * @deprecated use av_image_fill_arrays() instead.
3761  */
3763 int avpicture_fill(AVPicture *picture, const uint8_t *ptr,
3764  enum AVPixelFormat pix_fmt, int width, int height);
3765 
3766 /**
3767  * @deprecated use av_image_copy_to_buffer() instead.
3768  */
3771  int width, int height,
3772  unsigned char *dest, int dest_size);
3773 
3774 /**
3775  * @deprecated use av_image_get_buffer_size() instead.
3776  */
3779 
3780 /**
3781  * @deprecated av_image_copy() instead.
3782  */
3784 void av_picture_copy(AVPicture *dst, const AVPicture *src,
3785  enum AVPixelFormat pix_fmt, int width, int height);
3786 
3787 /**
3788  * @deprecated unused
3789  */
3791 int av_picture_crop(AVPicture *dst, const AVPicture *src,
3792  enum AVPixelFormat pix_fmt, int top_band, int left_band);
3793 
3794 /**
3795  * @deprecated unused
3796  */
3798 int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt,
3799  int padtop, int padbottom, int padleft, int padright, int *color);
3800 
3801 /**
3802  * @}
3803  */
3804 #endif
3805 
3806 /**
3807  * @defgroup lavc_misc Utility functions
3808  * @ingroup libavc
3809  *
3810  * Miscellaneous utility functions related to both encoding and decoding
3811  * (or neither).
3812  * @{
3813  */
3814 
3815 /**
3816  * @defgroup lavc_misc_pixfmt Pixel formats
3817  *
3818  * Functions for working with pixel formats.
3819  * @{
3820  */
3821 
3822 #if FF_API_GETCHROMA
3823 /**
3824  * @deprecated Use av_pix_fmt_get_chroma_sub_sample
3825  */
3826 
3828 void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift);
3829 #endif
3830 
3831 /**
3832  * Return a value representing the fourCC code associated to the
3833  * pixel format pix_fmt, or 0 if no associated fourCC code can be
3834  * found.
3835  */
3837 
3838 /**
3839  * Find the best pixel format to convert to given a certain source pixel
3840  * format. When converting from one pixel format to another, information loss
3841  * may occur. For example, when converting from RGB24 to GRAY, the color
3842  * information will be lost. Similarly, other losses occur when converting from
3843  * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
3844  * the given pixel formats should be used to suffer the least amount of loss.
3845  * The pixel formats from which it chooses one, are determined by the
3846  * pix_fmt_list parameter.
3847  *
3848  *
3849  * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
3850  * @param[in] src_pix_fmt source pixel format
3851  * @param[in] has_alpha Whether the source pixel format alpha channel is used.
3852  * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
3853  * @return The best pixel format to convert to or -1 if none was found.
3854  */
3855 enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
3856  enum AVPixelFormat src_pix_fmt,
3857  int has_alpha, int *loss_ptr);
3858 
3859 #if FF_API_AVCODEC_PIX_FMT
3860 /**
3861  * @deprecated see av_get_pix_fmt_loss()
3862  */
3864 int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
3865  int has_alpha);
3866 /**
3867  * @deprecated see av_find_best_pix_fmt_of_2()
3868  */
3870 enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
3871  enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
3872 
3874 enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
3875  enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
3876 #endif
3877 
3879 
3880 /**
3881  * @}
3882  */
3883 
3884 #if FF_API_TAG_STRING
3885 /**
3886  * Put a string representing the codec tag codec_tag in buf.
3887  *
3888  * @param buf buffer to place codec tag in
3889  * @param buf_size size in bytes of buf
3890  * @param codec_tag codec tag to assign
3891  * @return the length of the string that would have been generated if
3892  * enough space had been available, excluding the trailing null
3893  *
3894  * @deprecated see av_fourcc_make_string() and av_fourcc2str().
3895  */
3897 size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag);
3898 #endif
3899 
3900 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
3901 
3902 /**
3903  * Return a name for the specified profile, if available.
3904  *
3905  * @param codec the codec that is searched for the given profile
3906  * @param profile the profile value for which a name is requested
3907  * @return A name for the profile if found, NULL otherwise.
3908  */
3909 const char *av_get_profile_name(const AVCodec *codec, int profile);
3910 
3911 /**
3912  * Return a name for the specified profile, if available.
3913  *
3914  * @param codec_id the ID of the codec to which the requested profile belongs
3915  * @param profile the profile value for which a name is requested
3916  * @return A name for the profile if found, NULL otherwise.
3917  *
3918  * @note unlike av_get_profile_name(), which searches a list of profiles
3919  * supported by a specific decoder or encoder implementation, this
3920  * function searches the list of profiles from the AVCodecDescriptor
3921  */
3922 const char *avcodec_profile_name(enum AVCodecID codec_id, int profile);
3923 
3924 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
3925 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
3926 //FIXME func typedef
3927 
3928 /**
3929  * Fill AVFrame audio data and linesize pointers.
3930  *
3931  * The buffer buf must be a preallocated buffer with a size big enough
3932  * to contain the specified samples amount. The filled AVFrame data
3933  * pointers will point to this buffer.
3934  *
3935  * AVFrame extended_data channel pointers are allocated if necessary for
3936  * planar audio.
3937  *
3938  * @param frame the AVFrame
3939  * frame->nb_samples must be set prior to calling the
3940  * function. This function fills in frame->data,
3941  * frame->extended_data, frame->linesize[0].
3942  * @param nb_channels channel count
3943  * @param sample_fmt sample format
3944  * @param buf buffer to use for frame data
3945  * @param buf_size size of buffer
3946  * @param align plane size sample alignment (0 = default)
3947  * @return >=0 on success, negative error code on failure
3948  * @todo return the size in bytes required to store the samples in
3949  * case of success, at the next libavutil bump
3950  */
3952  enum AVSampleFormat sample_fmt, const uint8_t *buf,
3953  int buf_size, int align);
3954 
3955 /**
3956  * Reset the internal codec state / flush internal buffers. Should be called
3957  * e.g. when seeking or when switching to a different stream.
3958  *
3959  * @note for decoders, when refcounted frames are not used
3960  * (i.e. avctx->refcounted_frames is 0), this invalidates the frames previously
3961  * returned from the decoder. When refcounted frames are used, the decoder just
3962  * releases any references it might keep internally, but the caller's reference
3963  * remains valid.
3964  *
3965  * @note for encoders, this function will only do something if the encoder
3966  * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder
3967  * will drain any remaining packets, and can then be re-used for a different
3968  * stream (as opposed to sending a null frame which will leave the encoder
3969  * in a permanent EOF state after draining). This can be desirable if the
3970  * cost of tearing down and replacing the encoder instance is high.
3971  */
3973 
3974 /**
3975  * Return codec bits per sample.
3976  *
3977  * @param[in] codec_id the codec
3978  * @return Number of bits per sample or zero if unknown for the given codec.
3979  */
3981 
3982 /**
3983  * Return the PCM codec associated with a sample format.
3984  * @param be endianness, 0 for little, 1 for big,
3985  * -1 (or anything else) for native
3986  * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
3987  */
3988 enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be);
3989 
3990 /**
3991  * Return codec bits per sample.
3992  * Only return non-zero if the bits per sample is exactly correct, not an
3993  * approximation.
3994  *
3995  * @param[in] codec_id the codec
3996  * @return Number of bits per sample or zero if unknown for the given codec.
3997  */
3999 
4000 /**
4001  * Return audio frame duration.
4002  *
4003  * @param avctx codec context
4004  * @param frame_bytes size of the frame, or 0 if unknown
4005  * @return frame duration, in samples, if known. 0 if not able to
4006  * determine.
4007  */
4008 int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes);
4009 
4010 /**
4011  * This function is the same as av_get_audio_frame_duration(), except it works
4012  * with AVCodecParameters instead of an AVCodecContext.
4013  */
4014 int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes);
4015 
4016 #if FF_API_OLD_BSF
4018  void *priv_data;
4019  const struct AVBitStreamFilter *filter;
4022  /**
4023  * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter().
4024  * Not for access by library users.
4025  */
4026  char *args;
4028 
4029 /**
4030  * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
4031  * is deprecated. Use the new bitstream filtering API (using AVBSFContext).
4032  */
4035 /**
4036  * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
4037  * is deprecated. Use av_bsf_get_by_name(), av_bsf_alloc(), and av_bsf_init()
4038  * from the new bitstream filtering API (using AVBSFContext).
4039  */
4042 /**
4043  * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
4044  * is deprecated. Use av_bsf_send_packet() and av_bsf_receive_packet() from the
4045  * new bitstream filtering API (using AVBSFContext).
4046  */
4049  AVCodecContext *avctx, const char *args,
4050  uint8_t **poutbuf, int *poutbuf_size,
4051  const uint8_t *buf, int buf_size, int keyframe);
4052 /**
4053  * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
4054  * is deprecated. Use av_bsf_free() from the new bitstream filtering API (using
4055  * AVBSFContext).
4056  */
4059 /**
4060  * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
4061  * is deprecated. Use av_bsf_iterate() from the new bitstream filtering API (using
4062  * AVBSFContext).
4063  */
4066 #endif
4067 
4068 #if FF_API_NEXT
4070 const AVBitStreamFilter *av_bsf_next(void **opaque);
4071 #endif
4072 
4073 /* memory */
4074 
4075 /**
4076  * Same behaviour av_fast_malloc but the buffer has additional
4077  * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
4078  *
4079  * In addition the whole buffer will initially and after resizes
4080  * be 0-initialized so that no uninitialized data will ever appear.
4081  */
4082 void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
4083 
4084 /**
4085  * Same behaviour av_fast_padded_malloc except that buffer will always
4086  * be 0-initialized after call.
4087  */
4088 void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
4089 
4090 /**
4091  * Encode extradata length to a buffer. Used by xiph codecs.
4092  *
4093  * @param s buffer to write to; must be at least (v/255+1) bytes long
4094  * @param v size of extradata in bytes
4095  * @return number of bytes written to the buffer.
4096  */
4097 unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
4098 
4099 #if FF_API_USER_VISIBLE_AVHWACCEL
4100 /**
4101  * Register the hardware accelerator hwaccel.
4102  *
4103  * @deprecated This function doesn't do anything.
4104  */
4106 void av_register_hwaccel(AVHWAccel *hwaccel);
4107 
4108 /**
4109  * If hwaccel is NULL, returns the first registered hardware accelerator,
4110  * if hwaccel is non-NULL, returns the next registered hardware accelerator
4111  * after hwaccel, or NULL if hwaccel is the last one.
4112  *
4113  * @deprecated AVHWaccel structures contain no user-serviceable parts, so
4114  * this function should not be used.
4115  */
4117 AVHWAccel *av_hwaccel_next(const AVHWAccel *hwaccel);
4118 #endif
4119 
4120 #if FF_API_LOCKMGR
4121 /**
4122  * Lock operation used by lockmgr
4123  *
4124  * @deprecated Deprecated together with av_lockmgr_register().
4125  */
4126 enum AVLockOp {
4127  AV_LOCK_CREATE, ///< Create a mutex
4128  AV_LOCK_OBTAIN, ///< Lock the mutex
4129  AV_LOCK_RELEASE, ///< Unlock the mutex
4130  AV_LOCK_DESTROY, ///< Free mutex resources
4131 };
4132 
4133 /**
4134  * Register a user provided lock manager supporting the operations
4135  * specified by AVLockOp. The "mutex" argument to the function points
4136  * to a (void *) where the lockmgr should store/get a pointer to a user
4137  * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the
4138  * value left by the last call for all other ops. If the lock manager is
4139  * unable to perform the op then it should leave the mutex in the same
4140  * state as when it was called and return a non-zero value. However,
4141  * when called with AV_LOCK_DESTROY the mutex will always be assumed to
4142  * have been successfully destroyed. If av_lockmgr_register succeeds
4143  * it will return a non-negative value, if it fails it will return a
4144  * negative value and destroy all mutex and unregister all callbacks.
4145  * av_lockmgr_register is not thread-safe, it must be called from a
4146  * single thread before any calls which make use of locking are used.
4147  *
4148  * @param cb User defined callback. av_lockmgr_register invokes calls
4149  * to this callback and the previously registered callback.
4150  * The callback will be used to create more than one mutex
4151  * each of which must be backed by its own underlying locking
4152  * mechanism (i.e. do not use a single static object to
4153  * implement your lock manager). If cb is set to NULL the
4154  * lockmgr will be unregistered.
4155  *
4156  * @deprecated This function does nothing, and always returns 0. Be sure to
4157  * build with thread support to get basic thread safety.
4158  */
4160 int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op));
4161 #endif
4162 
4163 /**
4164  * @return a positive value if s is open (i.e. avcodec_open2() was called on it
4165  * with no corresponding avcodec_close()), 0 otherwise.
4166  */
4168 
4169 /**
4170  * Allocate a CPB properties structure and initialize its fields to default
4171  * values.
4172  *
4173  * @param size if non-NULL, the size of the allocated struct will be written
4174  * here. This is useful for embedding it in side data.
4175  *
4176  * @return the newly allocated struct or NULL on failure
4177  */
4179 
4180 /**
4181  * @}
4182  */
4183 
4184 #endif /* AVCODEC_AVCODEC_H */
AVSubtitle
Definition: avcodec.h:2722
avcodec_close
int avcodec_close(AVCodecContext *avctx)
Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext its...
Definition: avcodec.c:570
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:67
avcodec_encode_subtitle
int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, const AVSubtitle *sub)
Definition: encode.c:146
AVPanScan::id
int id
id
Definition: avcodec.h:430
AVCodecContext::frame_size
int frame_size
Number of samples per channel in an audio frame.
Definition: avcodec.h:1216
AVCodecContext::hwaccel
const struct AVHWAccel * hwaccel
Hardware accelerator in use.
Definition: avcodec.h:1680
be
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 be(in the first position) for now. Options ------- Then comes the options array. This is what will define the user accessible options. For example
AVCodec
AVCodec.
Definition: codec.h:197
AVCodecContext::hwaccel_context
void * hwaccel_context
Hardware accelerator context.
Definition: avcodec.h:1692
av_codec_get_codec_properties
attribute_deprecated unsigned av_codec_get_codec_properties(const AVCodecContext *avctx)
Definition: utils.c:456
hw_pix_fmt
static enum AVPixelFormat hw_pix_fmt
Definition: hw_decode.c:46
AVCodecParserContext::convergence_duration
attribute_deprecated int64_t convergence_duration
Definition: avcodec.h:3433
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
name
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 default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
AVCodecParserContext::pts
int64_t pts
Definition: avcodec.h:3396
av_codec_set_pkt_timebase
attribute_deprecated void av_codec_set_pkt_timebase(AVCodecContext *avctx, AVRational val)
AVPanScan::position
int16_t position[3][2]
position of the top left corner in 1/16 pel for up to 3 fields/frames
Definition: avcodec.h:445
AVCodecContext::log_level_offset
int log_level_offset
Definition: avcodec.h:542
AV_AUDIO_SERVICE_TYPE_VOICE_OVER
@ AV_AUDIO_SERVICE_TYPE_VOICE_OVER
Definition: avcodec.h:247
AVCodecContext::keyint_min
int keyint_min
minimum GOP size
Definition: avcodec.h:1117
AV_AUDIO_SERVICE_TYPE_EMERGENCY
@ AV_AUDIO_SERVICE_TYPE_EMERGENCY
Definition: avcodec.h:246
avcodec_receive_packet
int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt)
Read encoded data from the encoder.
Definition: encode.c:395
AVCodecContext::workaround_bugs
int workaround_bugs
Work around bugs in encoders which sometimes cannot be detected automatically.
Definition: avcodec.h:1572
AVSubtitle::rects
AVSubtitleRect ** rects
Definition: avcodec.h:2727
av_xiphlacing
unsigned int av_xiphlacing(unsigned char *s, unsigned int v)
Encode extradata length to a buffer.
Definition: utils.c:883
AVCodecContext::get_format
enum AVPixelFormat(* get_format)(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
callback to negotiate the pixelFormat
Definition: avcodec.h:788
AVCodecParserContext::dts_sync_point
int dts_sync_point
Synchronization point for start of timestamp generation.
Definition: avcodec.h:3446
AVCodecContext::audio_service_type
enum AVAudioServiceType audio_service_type
Type of service that the audio stream conveys.
Definition: avcodec.h:1261
AVCodecContext::channel_layout
uint64_t channel_layout
Audio channel layout.
Definition: avcodec.h:1247
AVCodecContext::colorspace
enum AVColorSpace colorspace
YUV colorspace type.
Definition: avcodec.h:1164
AVCodecContext::mpeg_quant
attribute_deprecated int mpeg_quant
Definition: avcodec.h:831
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:483
AVCodecContext::av_class
const AVClass * av_class
information on struct for av_log
Definition: avcodec.h:541
av_parser_next
attribute_deprecated AVCodecParser * av_parser_next(const AVCodecParser *c)
Definition: parsers.c:96
AVCodecParserContext::pict_type
int pict_type
Definition: avcodec.h:3385
avcodec_encode_audio2
attribute_deprecated int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of audio.
Definition: encode.c:500
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition: avcodec.h:1196
color
Definition: vf_paletteuse.c:583
cb
static double cb(void *priv, double x, double y)
Definition: vf_geq.c:215
AVCodecContext::rc_min_rate
int64_t rc_min_rate
minimum bitrate
Definition: avcodec.h:1423
AVCodecParserContext::output_picture_number
int output_picture_number
Picture number incremented in presentation or output order.
Definition: avcodec.h:3519
AVCodecParameters
This struct describes the properties of an encoded stream.
Definition: codec_par.h:52
sub
static float sub(float src0, float src1)
Definition: dnn_backend_native_layer_mathbinary.c:32
avcodec_decode_audio4
attribute_deprecated int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, const AVPacket *avpkt)
Decode the audio frame of size avpkt->size from avpkt->data into frame.
Definition: decode.c:864
AVHWAccel::type
enum AVMediaType type
Type of codec implemented by the hardware accelerator.
Definition: avcodec.h:2451
AV_PICTURE_STRUCTURE_UNKNOWN
@ AV_PICTURE_STRUCTURE_UNKNOWN
Definition: avcodec.h:3371
AVHWAccel::caps_internal
int caps_internal
Internal hwaccel capabilities.
Definition: avcodec.h:2587
avcodec_parameters_from_context
int avcodec_parameters_from_context(AVCodecParameters *par, const AVCodecContext *codec)
Fill the parameters struct based on the values from the supplied codec context.
Definition: codec_par.c:90
av_bitstream_filter_filter
attribute_deprecated int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
Definition: bitstream_filter.c:97
AVPanScan
Pan Scan area.
Definition: avcodec.h:424
AVCodecParserContext::duration
int duration
Duration of the current frame.
Definition: avcodec.h:3499
AVCodecContext::err_recognition
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
Definition: avcodec.h:1645
avcodec_string
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
Definition: avcodec.c:652
rational.h
AVCodecContext::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the entire coded stream.
Definition: avcodec.h:2193
AVSubtitleRect
Definition: avcodec.h:2687
AVSubtitle::num_rects
unsigned num_rects
Definition: avcodec.h:2726
av_parser_iterate
const AVCodecParser * av_parser_iterate(void **opaque)
Iterate over all registered codec parsers.
Definition: parsers.c:113
AVCodecContext::intra_matrix
uint16_t * intra_matrix
custom intra quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:1036
AVCodecContext::mv0_threshold
int mv0_threshold
Note: Value depends upon the compare function used for fullpel ME.
Definition: avcodec.h:1137
AVCodecContext::lumi_masking
float lumi_masking
luminance masking (0-> disabled)
Definition: avcodec.h:855
profile
mfxU16 profile
Definition: qsvenc.c:45
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:318
AVCodecContext::color_trc
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
Definition: avcodec.h:1157
AVPacketSideData
Definition: packet.h:306
AVCodecParserContext::pts_dts_delta
int pts_dts_delta
Presentation delay of current frame in units of AVCodecContext.time_base.
Definition: avcodec.h:3475
AVCodecContext::slice_offset
int * slice_offset
slice offsets in the frame in bytes
Definition: avcodec.h:906
av_codec_get_codec_descriptor
const attribute_deprecated AVCodecDescriptor * av_codec_get_codec_descriptor(const AVCodecContext *avctx)
avcodec_decode_subtitle2
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
Decode a subtitle message.
Definition: decode.c:1034
AVProducerReferenceTime::wallclock
int64_t wallclock
A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
Definition: avcodec.h:507
av_codec_get_max_lowres
attribute_deprecated int av_codec_get_max_lowres(const AVCodec *codec)
Definition: utils.c:461
av_lockmgr_register
attribute_deprecated int av_lockmgr_register(int(*cb)(void **mutex, enum AVLockOp op))
Register a user provided lock manager supporting the operations specified by AVLockOp.
Definition: avcodec.c:108
av_codec_set_chroma_intra_matrix
attribute_deprecated void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val)
AVCodecContext::field_order
enum AVFieldOrder field_order
Field order.
Definition: avcodec.h:1193
AVHWAccel::capabilities
int capabilities
Hardware accelerated codec capabilities.
Definition: avcodec.h:2471
AV_LOCK_RELEASE
@ AV_LOCK_RELEASE
Unlock the mutex.
Definition: avcodec.h:4129
data
const char data[16]
Definition: mxf.c:142
AVCodecContext::p_tex_bits
attribute_deprecated int p_tex_bits
Definition: avcodec.h:1537
AVCodecContext::b_quant_offset
float b_quant_offset
qscale offset between IP and B-frames
Definition: avcodec.h:818
AVCodecParserContext::height
int height
Definition: avcodec.h:3525
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:335
RcOverride::qscale
int qscale
Definition: avcodec.h:258
AVHWAccel::init
int(* init)(AVCodecContext *avctx)
Initialize the hwaccel private data.
Definition: avcodec.h:2568
AVLockOp
AVLockOp
Lock operation used by lockmgr.
Definition: avcodec.h:4126
avcodec_register_all
attribute_deprecated void avcodec_register_all(void)
Definition: allcodecs.c:904
AVCodecContext::subtitle_header
uint8_t * subtitle_header
Header containing style information for text subtitles.
Definition: avcodec.h:2016
AVBitStreamFilterContext::filter
const struct AVBitStreamFilter * filter
Definition: avcodec.h:4019
version.h
AVSubtitleRect::linesize
int linesize[4]
Definition: avcodec.h:2706
AVCodecContext::skip_count
attribute_deprecated int skip_count
Definition: avcodec.h:1543
AVCodecParserContext::cur_frame_start_index
int cur_frame_start_index
Definition: avcodec.h:3405
av_codec_set_seek_preroll
attribute_deprecated void av_codec_set_seek_preroll(AVCodecContext *avctx, int val)
avcodec_profile_name
const char * avcodec_profile_name(enum AVCodecID codec_id, int profile)
Return a name for the specified profile, if available.
Definition: utils.c:526
AVCodecContext::me_pre_cmp
int me_pre_cmp
motion estimation prepass comparison function
Definition: avcodec.h:984
MpegEncContext::avctx
struct AVCodecContext * avctx
Definition: mpegvideo.h:98
AVDictionary
Definition: dict.c:30
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:458
avcodec_default_get_format
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
Definition: decode.c:1114
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:68
AVCodecContext::mb_decision
int mb_decision
macroblock decision mode
Definition: avcodec.h:1024
avcodec_is_open
int avcodec_is_open(AVCodecContext *s)
Definition: avcodec.c:848
AVCodecContext::qmax
int qmax
maximum quantizer
Definition: avcodec.h:1387
AVCodecContext::frame_skip_threshold
attribute_deprecated int frame_skip_threshold
Definition: avcodec.h:1467
AVCodecContext::request_channel_layout
uint64_t request_channel_layout
Request decoder to use this channel layout if it can (0 for default)
Definition: avcodec.h:1254
AVCodecParserContext::coded_width
int coded_width
Dimensions of the coded video.
Definition: avcodec.h:3530
AVCodecContext::delay
int delay
Codec delay.
Definition: avcodec.h:692
AVCodecContext::me_subpel_quality
int me_subpel_quality
subpel ME quality
Definition: avcodec.h:998
AVCodecContext::mb_cmp
int mb_cmp
macroblock comparison function (not supported yet)
Definition: avcodec.h:934
AVPicture::data
attribute_deprecated uint8_t * data[AV_NUM_DATA_POINTERS]
pointers to the image data planes
Definition: avcodec.h:2657
AVCodecContext::slice_count
int slice_count
slice count
Definition: avcodec.h:890
AVPictureStructure
AVPictureStructure
Definition: avcodec.h:3370
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:305
SUBTITLE_ASS
@ SUBTITLE_ASS
Formatted text, the ass field must be set by the decoder and is authoritative.
Definition: avcodec.h:2682
AV_AUDIO_SERVICE_TYPE_NB
@ AV_AUDIO_SERVICE_TYPE_NB
Not part of ABI.
Definition: avcodec.h:249
AVCodecContext::frame_bits
attribute_deprecated int frame_bits
Definition: avcodec.h:1549
AVCodecContext::framerate
AVRational framerate
Definition: avcodec.h:2071
AVCodecContext::skip_top
int skip_top
Number of macroblock rows at the top which are skipped.
Definition: avcodec.h:1069
avcodec_enum_to_chroma_pos
int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos)
Converts AVChromaLocation to swscale x/y chroma position.
Definition: utils.c:350
AVCodecParserContext::offset
int64_t offset
byte offset from starting packet start
Definition: avcodec.h:3417
AVCodecContext::pre_me
attribute_deprecated int pre_me
Definition: avcodec.h:976
AVHWAccel
Definition: avcodec.h:2438
AVCodecContext::prediction_method
attribute_deprecated int prediction_method
Definition: avcodec.h:895
AVCodecParserContext::key_frame
int key_frame
Set by parser to 1 for key frames and 0 for non-key frames.
Definition: avcodec.h:3426
AVCodecContext::skip_idct
enum AVDiscard skip_idct
Skip IDCT/dequantization for selected frames.
Definition: avcodec.h:1999
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:841
AVCodecContext::nsse_weight
int nsse_weight
noise vs.
Definition: avcodec.h:1851
bsf.h
AVCodecContext::codec
const struct AVCodec * codec
Definition: avcodec.h:545
AVCodecContext::skip_frame
enum AVDiscard skip_frame
Skip decoding for selected frames.
Definition: avcodec.h:2006
AVCodecContext::thread_count
int thread_count
thread count is used to decide how many independent tasks should be passed to execute()
Definition: avcodec.h:1773
samplefmt.h
AVSubtitleRect::x
int x
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2688
AVCodecContext::initial_padding
int initial_padding
Audio only.
Definition: avcodec.h:2062
AVCodecContext::refs
int refs
number of reference frames
Definition: avcodec.h:1124
avcodec_default_execute2
int avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int, int), void *arg, int *ret, int count)
AVPanScan::width
int width
width and height in 1/16 pel
Definition: avcodec.h:437
AVDISCARD_NONE
@ AVDISCARD_NONE
discard nothing
Definition: avcodec.h:230
AVCodecContext::flags
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:616
AVCodecContext::bit_rate_tolerance
int bit_rate_tolerance
number of bits the bitstream is allowed to diverge from the reference.
Definition: avcodec.h:594
val
static double val(void *priv, double ch)
Definition: aeval.c:76
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:1706
av_parser_init
AVCodecParserContext * av_parser_init(int codec_id)
Definition: parser.c:34
pts
static int64_t pts
Definition: transcode_aac.c:652
AVCodecContext::coded_height
int coded_height
Definition: avcodec.h:724
AVBitStreamFilterContext::next
struct AVBitStreamFilterContext * next
Definition: avcodec.h:4021
avcodec_copy_context
attribute_deprecated int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
Copy the settings of the source AVCodecContext into the destination AVCodecContext.
Definition: options.c:232
avpicture_get_size
attribute_deprecated int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height)
Definition: avpicture.c:52
AVCodecContext::max_samples
int64_t max_samples
The number of samples per frame to maximally accept.
Definition: avcodec.h:2336
codec.h
AVCodecParserContext::dts
int64_t dts
Definition: avcodec.h:3397
AVSubtitleRect::ass
char * ass
0 terminated ASS/SSA compatible event line.
Definition: avcodec.h:2717
AVHWAccel::priv_data_size
int priv_data_size
Size of the private data to allocate in AVCodecInternal.hwaccel_priv_data.
Definition: avcodec.h:2582
av_codec_set_codec_descriptor
attribute_deprecated void av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc)
avsubtitle_free
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
Definition: avcodec.c:551
AV_LOCK_OBTAIN
@ AV_LOCK_OBTAIN
Lock the mutex.
Definition: avcodec.h:4128
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:1351
AVCodecContext::p_count
attribute_deprecated int p_count
Definition: avcodec.h:1541
AV_PICTURE_STRUCTURE_FRAME
@ AV_PICTURE_STRUCTURE_FRAME
Definition: avcodec.h:3374
RcOverride::quality_factor
float quality_factor
Definition: avcodec.h:259
AVCodecContext::color_primaries
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
Definition: avcodec.h:1150
AVCodecParserContext::cur_frame_end
int64_t cur_frame_end[AV_PARSER_PTS_NB]
Definition: avcodec.h:3418
pkt
AVPacket * pkt
Definition: movenc.c:59
AVCodecContext::pts_correction_num_faulty_pts
int64_t pts_correction_num_faulty_pts
Current statistics for PTS correction.
Definition: avcodec.h:2099
AVCodecParserContext::parser
struct AVCodecParser * parser
Definition: avcodec.h:3379
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:1444
codec_id.h
AVHWAccel::alloc_frame
int(* alloc_frame)(AVCodecContext *avctx, AVFrame *frame)
Allocate a custom buffer.
Definition: avcodec.h:2484
AVCodecContext::extradata_size
int extradata_size
Definition: avcodec.h:638
AVCodecContext::has_b_frames
int has_b_frames
Size of the frame reordering buffer in the decoder.
Definition: avcodec.h:826
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
Definition: options.c:173
width
#define width
AVCodecDescriptor
This struct describes the properties of a single codec described by an AVCodecID.
Definition: codec_desc.h:38
s
#define s(width, name)
Definition: cbs_vp9.c:257
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:1565
AVCodecContext::global_quality
int global_quality
Global quality for codecs which cannot change it per frame.
Definition: avcodec.h:602
AVCodecParserContext::fetch_timestamp
int fetch_timestamp
Definition: avcodec.h:3402
AVHWAccel::uninit
int(* uninit)(AVCodecContext *avctx)
Uninitialize the hwaccel private data.
Definition: avcodec.h:2576
avpicture_alloc
attribute_deprecated int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height)
Definition: avpicture.c:57
RcOverride
Definition: avcodec.h:255
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED
@ AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED
Definition: avcodec.h:242
AVCodecParserContext::last_pts
int64_t last_pts
Definition: avcodec.h:3400
AVSubtitleRect::y
int y
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2689
op
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
Definition: anm.c:75
AVCodecContext::ticks_per_frame
int ticks_per_frame
For some codecs, the time base is closer to the field rate than the frame rate.
Definition: avcodec.h:668
AVCodecContext::sub_text_format
int sub_text_format
Control the form of AVSubtitle.rects[N]->ass.
Definition: avcodec.h:2225
AVCodecContext::mv_bits
attribute_deprecated int mv_bits
Definition: avcodec.h:1531
AVCodecContext::error_concealment
int error_concealment
error concealment flags
Definition: avcodec.h:1613
avcodec_receive_frame
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Return decoded output data from a decoder.
Definition: decode.c:652
AVSubtitleType
AVSubtitleType
Definition: avcodec.h:2667
AVCodecContext::thread_type
int thread_type
Which multithreading methods to use.
Definition: avcodec.h:1783
AVPicture
Picture data structure.
Definition: avcodec.h:2655
AVCodecContext::brd_scale
attribute_deprecated int brd_scale
Definition: avcodec.h:1109
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1747
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:373
RcOverride::start_frame
int start_frame
Definition: avcodec.h:256
AVCodecParserContext::format
int format
The format of the coded data, corresponds to enum AVPixelFormat for video and for enum AVSampleFormat...
Definition: avcodec.h:3541
AVAudioServiceType
AVAudioServiceType
Definition: avcodec.h:239
AVSubtitle::pts
int64_t pts
Same as packet pts, in AV_TIME_BASE.
Definition: avcodec.h:2728
pix_fmt
static enum AVPixelFormat pix_fmt
Definition: demuxing_decoding.c:40
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:134
AVCodecContext::max_pixels
int64_t max_pixels
The number of pixels per image to maximally accept.
Definition: avcodec.h:2248
av_picture_copy
attribute_deprecated void av_picture_copy(AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int width, int height)
Definition: avpicture.c:75
codec_id
enum AVCodecID codec_id
Definition: vaapi_decode.c:369
AVHWAccel::decode_params
int(* decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size)
Callback for parameter data (SPS/PPS/VPS etc).
Definition: avcodec.h:2514
AVCodecContext::rc_max_rate
int64_t rc_max_rate
maximum bitrate
Definition: avcodec.h:1416
AVCodecContext::error
uint64_t error[AV_NUM_DATA_POINTERS]
error
Definition: avcodec.h:1699
AVSubtitleRect::text
char * text
0 terminated plain UTF-8 text
Definition: avcodec.h:2710
AVCPBProperties
This structure describes the bitrate properties of an encoded bitstream.
Definition: avcodec.h:453
f
#define f(width, name)
Definition: cbs_vp9.c:255
AVDISCARD_BIDIR
@ AVDISCARD_BIDIR
discard all bidirectional frames
Definition: avcodec.h:233
av_get_codec_tag_string
attribute_deprecated size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag)
Put a string representing the codec tag codec_tag in buf.
Definition: utils.c:492
AVCodecContext::codec_id
enum AVCodecID codec_id
Definition: avcodec.h:546
AVCodecContext::p_masking
float p_masking
p block masking (0-> disabled)
Definition: avcodec.h:876
av_bitstream_filter_next
const attribute_deprecated AVBitStreamFilter * av_bitstream_filter_next(const AVBitStreamFilter *f)
Definition: bitstream_filter.c:31
arg
const char * arg
Definition: jacosubdec.c:66
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:3461
AVCodecParserContext::repeat_pict
int repeat_pict
This field is used for proper frame duration computation in lavf.
Definition: avcodec.h:3395
AV_PICTURE_STRUCTURE_BOTTOM_FIELD
@ AV_PICTURE_STRUCTURE_BOTTOM_FIELD
Definition: avcodec.h:3373
AVCodecContext::rc_buffer_size
int rc_buffer_size
decoder bitstream buffer size
Definition: avcodec.h:1401
AVCodecContext::sub_charenc
char * sub_charenc
DTS of the last frame.
Definition: avcodec.h:2109
AVCPBProperties::avg_bitrate
int avg_bitrate
Average bitrate of the stream, in bits per second.
Definition: avcodec.h:477
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: avcodec.h:236
AVSubtitleRect::w
int w
width of pict, undefined when pict is not set
Definition: avcodec.h:2690
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:67
avcodec_get_class
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
Definition: options.c:311
AVCodecContext::max_prediction_order
attribute_deprecated int max_prediction_order
Definition: avcodec.h:1496
AVCodecContext::apply_cropping
int apply_cropping
Video decoding only.
Definition: avcodec.h:2306
AVCodecContext::color_range
enum AVColorRange color_range
MPEG vs JPEG YUV range.
Definition: avcodec.h:1171
AVCodecParser::codec_ids
int codec_ids[5]
Definition: avcodec.h:3545
AVCodecContext::i_tex_bits
attribute_deprecated int i_tex_bits
Definition: avcodec.h:1535
AVCodecContext::slice_flags
int slice_flags
slice flags
Definition: avcodec.h:1014
AVCodecParser::parser_close
void(* parser_close)(AVCodecParserContext *s)
Definition: avcodec.h:3554
AVCodecContext::misc_bits
attribute_deprecated int misc_bits
Definition: avcodec.h:1545
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:188
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:2194
AVCodecContext::qblur
float qblur
amount of qscale smoothing over time (0.0-1.0)
Definition: avcodec.h:1373
avcodec_find_best_pix_fmt_of_2
attribute_deprecated enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Definition: imgconvert.c:55
AV_PICTURE_STRUCTURE_TOP_FIELD
@ AV_PICTURE_STRUCTURE_TOP_FIELD
Definition: avcodec.h:3372
AVCodecContext::bit_rate
int64_t bit_rate
the average bitrate
Definition: avcodec.h:586
AVCodecParser::split
int(* split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
Definition: avcodec.h:3555
AVHWAccel::end_frame
int(* end_frame)(AVCodecContext *avctx)
Called at the end of each frame or field picture.
Definition: avcodec.h:2539
AVCodecContext::subtitle_header_size
int subtitle_header_size
Definition: avcodec.h:2017
AVSubtitleRect::data
uint8_t * data[4]
data+linesize for the bitmap of this subtitle.
Definition: avcodec.h:2705
src
#define src
Definition: vp8dsp.c:255
AVCodecContext::trailing_padding
int trailing_padding
Audio only.
Definition: avcodec.h:2240
av_codec_get_pkt_timebase
attribute_deprecated AVRational av_codec_get_pkt_timebase(const AVCodecContext *avctx)
Accessors for some AVCodecContext fields.
avcodec_get_context_defaults3
int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec)
Definition: options.c:167
AVCodecContext::ildct_cmp
int ildct_cmp
interlaced DCT comparison function
Definition: avcodec.h:940
AVCodecContext::b_frame_strategy
attribute_deprecated int b_frame_strategy
Definition: avcodec.h:810
AVCodecContext::noise_reduction
attribute_deprecated int noise_reduction
Definition: avcodec.h:1054
avcodec_license
const char * avcodec_license(void)
Return the libavcodec license.
Definition: avcodec.c:61
AVCodecContext::thread_safe_callbacks
attribute_deprecated int thread_safe_callbacks
Set by the client if its custom get_buffer() callback can be called synchronously from another thread...
Definition: avcodec.h:1812
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:1437
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:3410
avcodec_version
unsigned avcodec_version(void)
Return the LIBAVCODEC_VERSION_INT constant.
Definition: avcodec.c:46
AV_AUDIO_SERVICE_TYPE_MAIN
@ AV_AUDIO_SERVICE_TYPE_MAIN
Definition: avcodec.h:240
AVCodecContext::me_cmp
int me_cmp
motion estimation comparison function
Definition: avcodec.h:922
AVCodecParserContext::picture_structure
enum AVPictureStructure picture_structure
Indicate whether a picture is coded as a frame, top field or bottom field.
Definition: avcodec.h:3511
AVCodecContext::context_model
attribute_deprecated int context_model
Definition: avcodec.h:1461
AVCodecContext::trellis
int trellis
trellis RD quantization
Definition: avcodec.h:1487
AVProducerReferenceTime
This structure supplies correlation between a packet timestamp and a wall clock production time.
Definition: avcodec.h:503
av_cpb_properties_alloc
AVCPBProperties * av_cpb_properties_alloc(size_t *size)
Allocate a CPB properties structure and initialize its fields to default values.
Definition: utils.c:1044
AVCodecContext::level
int level
level
Definition: avcodec.h:1984
AVProducerReferenceTime::flags
int flags
Definition: avcodec.h:508
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
avcodec_get_subtitle_rect_class
const AVClass * avcodec_get_subtitle_rect_class(void)
Get the AVClass for AVSubtitleRect.
Definition: options.c:365
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:46
AVCodecContext::temporal_cplx_masking
float temporal_cplx_masking
temporary complexity masking (0-> disabled)
Definition: avcodec.h:862
av_register_bitstream_filter
attribute_deprecated void av_register_bitstream_filter(AVBitStreamFilter *bsf)
Definition: bitstream_filter.c:42
AV_AUDIO_SERVICE_TYPE_KARAOKE
@ AV_AUDIO_SERVICE_TYPE_KARAOKE
Definition: avcodec.h:248
AVCodecContext::qcompress
float qcompress
amount of qscale change between easy & hard scenes (0.0-1.0)
Definition: avcodec.h:1372
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:659
AVCodecContext::lowres
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
Definition: avcodec.h:1754
av_get_bits_per_sample
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
Definition: utils.c:630
options
const OptionDef options[]
AVCodecContext::stats_out
char * stats_out
pass1 encoding statistics output buffer
Definition: avcodec.h:1557
AVDISCARD_NONKEY
@ AVDISCARD_NONKEY
discard all frames except keyframes
Definition: avcodec.h:235
AVCodecContext::rc_override
RcOverride * rc_override
Definition: avcodec.h:1409
AVCodecContext::vbv_delay
attribute_deprecated uint64_t vbv_delay
VBV delay coded in the last frame (in periods of a 27 MHz clock).
Definition: avcodec.h:2029
AVCodecContext::flags2
int flags2
AV_CODEC_FLAG2_*.
Definition: avcodec.h:623
AVMediaType
AVMediaType
Definition: avutil.h:199
av_codec_set_lowres
attribute_deprecated void av_codec_set_lowres(AVCodecContext *avctx, int val)
AVCodecParserContext::frame_offset
int64_t frame_offset
Definition: avcodec.h:3380
AVCodecContext::gop_size
int gop_size
the number of pictures in a group of pictures, or 0 for intra_only
Definition: avcodec.h:731
AVDISCARD_DEFAULT
@ AVDISCARD_DEFAULT
discard useless packets like 0 size packets in avi
Definition: avcodec.h:231
AVCodecContext::extra_hw_frames
int extra_hw_frames
Definition: avcodec.h:2320
av_bsf_next
const attribute_deprecated AVBitStreamFilter * av_bsf_next(void **opaque)
Definition: bitstream_filters.c:79
cpu.h
AVCodecParserContext::next_frame_offset
int64_t next_frame_offset
Definition: avcodec.h:3383
av_get_profile_name
const char * av_get_profile_name(const AVCodec *codec, int profile)
Return a name for the specified profile, if available.
Definition: utils.c:513
AVCodecParserContext::cur_frame_offset
int64_t cur_frame_offset[AV_PARSER_PTS_NB]
Definition: avcodec.h:3406
AVCodecContext::frame_skip_exp
attribute_deprecated int frame_skip_exp
Definition: avcodec.h:1475
AVCodecContext::sample_fmt
enum AVSampleFormat sample_fmt
audio sample format
Definition: avcodec.h:1204
AVCodecContext::pkt_timebase
AVRational pkt_timebase
Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
Definition: avcodec.h:2085
avcodec_find_best_pix_fmt2
attribute_deprecated enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Definition: imgconvert.c:61
size
int size
Definition: twinvq_data.h:10344
AVCodecParserContext::width
int width
Dimensions of the decoded video intended for presentation.
Definition: avcodec.h:3524
AV_NUM_DATA_POINTERS
#define AV_NUM_DATA_POINTERS
Definition: frame.h:319
AVCodecContext::rtp_payload_size
attribute_deprecated int rtp_payload_size
Definition: avcodec.h:1520
avcodec_get_frame_class
const attribute_deprecated AVClass * avcodec_get_frame_class(void)
Definition: options.c:339
AVCodecContext::me_range
int me_range
maximum motion estimation search range in subpel units If 0 then no limit.
Definition: avcodec.h:1007
AVCodecParser::parser_parse
int(* parser_parse)(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size)
Definition: avcodec.h:3550
AVCodecContext::skip_alpha
int skip_alpha
Skip processing alpha if supported by codec.
Definition: avcodec.h:2135
AVCodecContext::chroma_intra_matrix
uint16_t * chroma_intra_matrix
custom intra quantization matrix
Definition: avcodec.h:2160
AVCodecContext::skip_bottom
int skip_bottom
Number of macroblock rows at the bottom which are skipped.
Definition: avcodec.h:1076
AVCodecContext::last_predictor_count
int last_predictor_count
amount of previous MV predictors (2a+1 x 2a+1 square)
Definition: avcodec.h:971
av_codec_get_chroma_intra_matrix
attribute_deprecated uint16_t * av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx)
AVSubtitle::end_display_time
uint32_t end_display_time
Definition: avcodec.h:2725
frame.h
AVSubtitleRect::type
enum AVSubtitleType type
Definition: avcodec.h:2708
SUBTITLE_TEXT
@ SUBTITLE_TEXT
Plain text, the text field must be set by the decoder and is authoritative.
Definition: avcodec.h:2676
buffer.h
attribute_deprecated
#define attribute_deprecated
Definition: attributes.h:104
SUBTITLE_NONE
@ SUBTITLE_NONE
Definition: avcodec.h:2668
encode
static void encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *output)
Definition: encode_audio.c:95
AVCodecContext::me_sub_cmp
int me_sub_cmp
subpixel motion estimation comparison function
Definition: avcodec.h:928
AVCodecContext::pts_correction_num_faulty_dts
int64_t pts_correction_num_faulty_dts
Number of incorrect PTS values so far.
Definition: avcodec.h:2100
height
#define height
av_register_codec_parser
attribute_deprecated void av_register_codec_parser(AVCodecParser *parser)
Definition: parsers.c:106
AVCodecContext::coder_type
attribute_deprecated int coder_type
Definition: avcodec.h:1455
AVCodecContext::pts_correction_last_pts
int64_t pts_correction_last_pts
Number of incorrect DTS values so far.
Definition: avcodec.h:2101
AVCPBProperties::max_bitrate
int max_bitrate
Maximum bitrate of the stream, in bits per second.
Definition: avcodec.h:459
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:67
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:1269
av_picture_pad
attribute_deprecated int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, int padtop, int padbottom, int padleft, int padright, int *color)
Definition: imgconvert.c:140
avcodec_encode_video2
attribute_deprecated int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of video.
Definition: encode.c:513
attributes.h
AVCodecInternal
Definition: internal.h:129
AVCodecContext::skip_loop_filter
enum AVDiscard skip_loop_filter
Skip loop filtering for selected frames.
Definition: avcodec.h:1992
AVCodecContext::i_count
attribute_deprecated int i_count
Definition: avcodec.h:1539
av_hwaccel_next
attribute_deprecated AVHWAccel * av_hwaccel_next(const AVHWAccel *hwaccel)
If hwaccel is NULL, returns the first registered hardware accelerator, if hwaccel is non-NULL,...
Definition: utils.c:916
AV_LOCK_CREATE
@ AV_LOCK_CREATE
Create a mutex.
Definition: avcodec.h:4127
avpicture_free
attribute_deprecated void avpicture_free(AVPicture *picture)
Definition: avpicture.c:70
SUBTITLE_BITMAP
@ SUBTITLE_BITMAP
A bitmap, pict will be set.
Definition: avcodec.h:2670
av_picture_crop
attribute_deprecated int av_picture_crop(AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int top_band, int left_band)
Definition: imgconvert.c:109
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:805
AVCodecParserContext::cur_frame_pts
int64_t cur_frame_pts[AV_PARSER_PTS_NB]
Definition: avcodec.h:3407
AVCodecContext::channels
int channels
number of audio channels
Definition: avcodec.h:1197
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:605
AVCodecParserContext::cur_frame_pos
int64_t cur_frame_pos[AV_PARSER_PTS_NB]
Position of the packet in file.
Definition: avcodec.h:3482
AVHWAccel::name
const char * name
Name of the hardware accelerated codec.
Definition: avcodec.h:2444
AVCPBProperties::vbv_delay
uint64_t vbv_delay
The delay between the time the packet this structure is associated with is received and the time when...
Definition: avcodec.h:495
AV_LOCK_DESTROY
@ AV_LOCK_DESTROY
Free mutex resources.
Definition: avcodec.h:4130
AVSubtitleRect::flags
int flags
Definition: avcodec.h:2719
AVCodecContext::bits_per_coded_sample
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
Definition: avcodec.h:1740
avcodec_default_get_buffer2
int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags)
The default callback for AVCodecContext.get_buffer2().
Definition: decode.c:1695
avcodec_send_packet
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
Definition: decode.c:589
AVCodecContext::timecode_frame_start
attribute_deprecated int64_t timecode_frame_start
Definition: avcodec.h:1500
AVCodecParserContext::pos
int64_t pos
Byte position of currently parsed frame in stream.
Definition: avcodec.h:3487
AVCodecContext::b_sensitivity
attribute_deprecated int b_sensitivity
Definition: avcodec.h:1142
AVSubtitle::format
uint16_t format
Definition: avcodec.h:2723
AVDISCARD_NONINTRA
@ AVDISCARD_NONINTRA
discard all non intra frames
Definition: avcodec.h:234
log.h
RcOverride::end_frame
int end_frame
Definition: avcodec.h:257
AVCodecContext::properties
unsigned properties
Properties of the stream that gets decoded.
Definition: avcodec.h:2183
avcodec_register
attribute_deprecated void avcodec_register(AVCodec *codec)
Definition: allcodecs.c:889
AVCodecContext::extradata
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
Definition: avcodec.h:637
AVSubtitleRect::nb_colors
int nb_colors
number of colors in pict, undefined when pict is not set
Definition: avcodec.h:2692
AVHWAccel::decode_slice
int(* decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)
Callback for each slice.
Definition: avcodec.h:2528
packet.h
av_codec_next
attribute_deprecated AVCodec * av_codec_next(const AVCodec *c)
If c is NULL, returns the first registered codec, if c is non-NULL, returns the next registered codec...
Definition: allcodecs.c:894
AVCodecContext::rtp_callback
attribute_deprecated void(* rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb)
Definition: avcodec.h:1514
avcodec_parameters_to_context
int avcodec_parameters_to_context(AVCodecContext *codec, const AVCodecParameters *par)
Fill the codec context based on the values from the supplied codec parameters.
Definition: codec_par.c:147
AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED
@ AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED
Definition: avcodec.h:243
av_codec_get_lowres
attribute_deprecated int av_codec_get_lowres(const AVCodecContext *avctx)
AVCodecContext::intra_dc_precision
int intra_dc_precision
precision of the intra DC coefficient - 8
Definition: avcodec.h:1062
avcodec_decode_video2
attribute_deprecated int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt)
Decode the video frame of size avpkt->size from avpkt->data into picture.
Definition: decode.c:857
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:512
AV_AUDIO_SERVICE_TYPE_EFFECTS
@ AV_AUDIO_SERVICE_TYPE_EFFECTS
Definition: avcodec.h:241
AVCodecContext::cutoff
int cutoff
Audio cutoff bandwidth (0 means "automatic")
Definition: avcodec.h:1240
AVCodecContext::frame_skip_cmp
attribute_deprecated int frame_skip_cmp
Definition: avcodec.h:1479
AVCodecContext::hwaccel_flags
int hwaccel_flags
Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated decoding (if active).
Definition: avcodec.h:2279
AVCodecParserContext::cur_offset
int64_t cur_offset
Definition: avcodec.h:3381
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:58
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:50
AVCodecParser::parser_init
int(* parser_init)(AVCodecParserContext *s)
Definition: avcodec.h:3547
AVCodecContext::pts_correction_last_dts
int64_t pts_correction_last_dts
PTS of the last frame.
Definition: avcodec.h:2102
AVCodecContext::dia_size
int dia_size
ME diamond size & shape.
Definition: avcodec.h:964
AVCodecContext::dump_separator
uint8_t * dump_separator
dump format separator.
Definition: avcodec.h:2168
AVCodecContext::header_bits
attribute_deprecated int header_bits
Definition: avcodec.h:1533
uint8_t
uint8_t
Definition: audio_convert.c:194
AVCodecContext::mb_lmin
int mb_lmin
minimum MB Lagrange multiplier
Definition: avcodec.h:1083
av_get_audio_frame_duration
int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
Return audio frame duration.
Definition: utils.c:855
AVSubtitleRect::pict
attribute_deprecated AVPicture pict
Definition: avcodec.h:2699
AVCodecContext::idct_algo
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
Definition: avcodec.h:1719
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:2270
AVCodecContext::chroma_sample_location
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples.
Definition: avcodec.h:1178
av_register_hwaccel
attribute_deprecated void av_register_hwaccel(AVHWAccel *hwaccel)
Register the hardware accelerator hwaccel.
Definition: utils.c:921
AVCPBProperties::min_bitrate
int min_bitrate
Minimum bitrate of the stream, in bits per second.
Definition: avcodec.h:468
AVCodecContext::height
int height
Definition: avcodec.h:709
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:364
AVCodecContext::pix_fmt
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:746
AVBitStreamFilterContext::parser
AVCodecParserContext * parser
Definition: avcodec.h:4020
av_bitstream_filter_close
attribute_deprecated void av_bitstream_filter_close(AVBitStreamFilterContext *bsf)
Definition: bitstream_filter.c:83
av_get_exact_bits_per_sample
int av_get_exact_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
Definition: utils.c:541
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:2218
AVCodecParserContext
Definition: avcodec.h:3377
avcodec_get_chroma_sub_sample
attribute_deprecated void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Definition: imgconvert.c:38
AVCodecContext::sub_charenc_mode
int sub_charenc_mode
Subtitles character encoding mode.
Definition: avcodec.h:2117
av_parser_change
attribute_deprecated int av_parser_change(AVCodecParserContext *s, AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
Definition: parser.c:193
AVHWAccel::decode_mb
void(* decode_mb)(struct MpegEncContext *s)
Called for every Macroblock in a slice.
Definition: avcodec.h:2559
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:1228
ret
ret
Definition: filter_design.txt:187
AVSubtitleRect::h
int h
height of pict, undefined when pict is not set
Definition: avcodec.h:2691
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:1233
pixfmt.h
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal codec state / flush internal buffers.
Definition: avcodec.c:491
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:264
AVCodecParserContext::coded_height
int coded_height
Definition: avcodec.h:3531
AVCPBProperties::buffer_size
int buffer_size
The size of the buffer to which the ratecontrol is applied, in bits.
Definition: avcodec.h:486
AVCodecContext::strict_std_compliance
int strict_std_compliance
strictly follow the standard (MPEG-4, ...).
Definition: avcodec.h:1601
avpicture_layout
attribute_deprecated int avpicture_layout(const AVPicture *src, enum AVPixelFormat pix_fmt, int width, int height, unsigned char *dest, int dest_size)
Definition: avpicture.c:44
AVCodecContext::opaque
void * opaque
Private data of the user, can be used to carry app specific stuff.
Definition: avcodec.h:578
pos
unsigned int pos
Definition: spdifenc.c:412
AVCodecParser::priv_data_size
int priv_data_size
Definition: avcodec.h:3546
dict.h
AVCodecContext::refcounted_frames
attribute_deprecated int refcounted_frames
If non-zero, the decoded audio and video frames returned from avcodec_decode_video2() and avcodec_dec...
Definition: avcodec.h:1368
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:771
AVCodecContext::scenechange_threshold
attribute_deprecated int scenechange_threshold
Definition: avcodec.h:1050
AV_AUDIO_SERVICE_TYPE_COMMENTARY
@ AV_AUDIO_SERVICE_TYPE_COMMENTARY
Definition: avcodec.h:245
av_codec_get_seek_preroll
attribute_deprecated int av_codec_get_seek_preroll(const AVCodecContext *avctx)
AVCodecContext::max_qdiff
int max_qdiff
maximum quantizer difference between frames
Definition: avcodec.h:1394
AVCodecContext::dark_masking
float dark_masking
darkness masking (0-> disabled)
Definition: avcodec.h:883
AVCodecContext::coded_frame
attribute_deprecated AVFrame * coded_frame
the picture in the bitstream
Definition: avcodec.h:1764
AVCodecContext
main external API structure.
Definition: avcodec.h:536
AVCodecContext::active_thread_type
int active_thread_type
Which multithreading methods are in use by the codec.
Definition: avcodec.h:1792
AVCodecContext::codec_descriptor
const AVCodecDescriptor * codec_descriptor
AVCodecDescriptor.
Definition: avcodec.h:2092
c2
static const uint64_t c2
Definition: murmur3.c:52
AVCodecParserContext::field_order
enum AVFieldOrder field_order
Definition: avcodec.h:3501
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:1824
channel_layout.h
AVBitStreamFilter
Definition: bsf.h:98
AVCodecContext::qmin
int qmin
minimum quantizer
Definition: avcodec.h:1380
av_get_pcm_codec
enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be)
Return the PCM codec associated with a sample format.
Definition: utils.c:608
AVHWAccel::frame_priv_data_size
int frame_priv_data_size
Size of per-frame hardware accelerator private data.
Definition: avcodec.h:2548
AVCodecContext::bidir_refine
int bidir_refine
Definition: avcodec.h:1104
AVCodecContext::profile
int profile
profile
Definition: avcodec.h:1858
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:62
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:2384
AVCodecContext::spatial_cplx_masking
float spatial_cplx_masking
spatial complexity masking (0-> disabled)
Definition: avcodec.h:869
AVBitStreamFilterContext::priv_data
void * priv_data
Definition: avcodec.h:4018
AVCodecContext::i_quant_offset
float i_quant_offset
qscale offset between P and I-frames
Definition: avcodec.h:848
AVCodecContext::discard_damaged_percentage
int discard_damaged_percentage
The percentage of damaged samples to discard a frame.
Definition: avcodec.h:2328
AVCodecContext::mb_lmax
int mb_lmax
maximum MB Lagrange multiplier
Definition: avcodec.h:1090
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:2346
av_get_audio_frame_duration2
int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes)
This function is the same as av_get_audio_frame_duration(), except it works with AVCodecParameters in...
Definition: utils.c:865
avcodec_chroma_pos_to_enum
enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos)
Converts swscale x/y chroma position to AVChromaLocation.
Definition: utils.c:362
AVCodecContext::pre_dia_size
int pre_dia_size
ME prepass diamond size & shape.
Definition: avcodec.h:991
AVBitStreamFilterContext::args
char * args
Internal default arguments, used if NULL is passed to av_bitstream_filter_filter().
Definition: avcodec.h:4026
AVCodecContext::debug
int debug
debug
Definition: avcodec.h:1623
AVHWAccel::start_frame
int(* start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)
Called at the beginning of each frame or field picture.
Definition: avcodec.h:2500
AVCodecContext::coded_width
int coded_width
Bitstream width / height, may be different from width/height e.g.
Definition: avcodec.h:724
AVCodecContext::codec_type
enum AVMediaType codec_type
Definition: avcodec.h:544
AVCodecContext::seek_preroll
int seek_preroll
Number of samples to skip after a discontinuity.
Definition: avcodec.h:2142
desc
const char * desc
Definition: libsvtav1.c:79
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:120
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:796
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:84
AVCodecContext::frame_number
int frame_number
Frame counter, set by libavcodec.
Definition: avcodec.h:1227
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:1430
AVCodecContext::chromaoffset
attribute_deprecated int chromaoffset
Definition: avcodec.h:1129
AV_AUDIO_SERVICE_TYPE_DIALOGUE
@ AV_AUDIO_SERVICE_TYPE_DIALOGUE
Definition: avcodec.h:244
AVCodecContext::codec_tag
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
Definition: avcodec.h:561
codec_par.h
AVFieldOrder
AVFieldOrder
Definition: codec_par.h:36
AV_PARSER_PTS_NB
#define AV_PARSER_PTS_NB
Definition: avcodec.h:3404
AVCodecContext::slices
int slices
Number of slices.
Definition: avcodec.h:1187
AVPacket
This structure stores compressed data.
Definition: packet.h:346
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:563
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:59
AVCodecParserContext::last_pos
int64_t last_pos
Previous frame byte position.
Definition: avcodec.h:3492
AVCodecContext::inter_matrix
uint16_t * inter_matrix
custom inter quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:1045
avpicture_fill
attribute_deprecated int avpicture_fill(AVPicture *picture, const uint8_t *ptr, enum AVPixelFormat pix_fmt, int width, int height)
Definition: avpicture.c:37
AVHWAccel::frame_params
int(* frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
Fill the given hw_frames context with current codec parameters.
Definition: avcodec.h:2597
AVCodecParser
Definition: avcodec.h:3544
AVCodecContext::rc_override_count
int rc_override_count
ratecontrol override, see RcOverride
Definition: avcodec.h:1408
AVCodecContext::reordered_opaque
int64_t reordered_opaque
opaque 64-bit number (generally a PTS) that will be reordered and output in AVFrame....
Definition: avcodec.h:1673
avcodec_configuration
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
Definition: avcodec.c:56
AVPicture::linesize
attribute_deprecated int linesize[AV_NUM_DATA_POINTERS]
number of bytes per line
Definition: avcodec.h:2659
AVCodecContext::width
int width
picture width / height.
Definition: avcodec.h:709
AVCodecContext::me_penalty_compensation
attribute_deprecated int me_penalty_compensation
Definition: avcodec.h:1097
AVCodecContext::min_prediction_order
attribute_deprecated int min_prediction_order
Definition: avcodec.h:1492
AVCodecContext::debug_mv
attribute_deprecated int debug_mv
Definition: avcodec.h:2149
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
hwcontext.h
AVCodecParserContext::priv_data
void * priv_data
Definition: avcodec.h:3378
AVPanScan::height
int height
Definition: avcodec.h:438
AVBitStreamFilterContext
Definition: avcodec.h:4017
AVCodecContext::sw_pix_fmt
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:2078
AVCodecParserContext::cur_frame_dts
int64_t cur_frame_dts[AV_PARSER_PTS_NB]
Definition: avcodec.h:3408
AVCodecContext::codec_whitelist
char * codec_whitelist
',' separated list of allowed decoders.
Definition: avcodec.h:2176
AVDiscard
AVDiscard
Definition: avcodec.h:227
AVDISCARD_NONREF
@ AVDISCARD_NONREF
discard all non reference
Definition: avcodec.h:232
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:551
AVCodecParserContext::last_dts
int64_t last_dts
Definition: avcodec.h:3401
codec_desc.h
int
int
Definition: ffmpeg_filter.c:170
AVCodecContext::frame_skip_factor
attribute_deprecated int frame_skip_factor
Definition: avcodec.h:1471
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:81
AVCodecParser::next
attribute_deprecated struct AVCodecParser * next
Definition: avcodec.h:3558
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:1844
AVHWAccel::pix_fmt
enum AVPixelFormat pix_fmt
Supported pixel format.
Definition: avcodec.h:2465
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:915
AVSubtitle::start_display_time
uint32_t start_display_time
Definition: avcodec.h:2724
avcodec_get_pix_fmt_loss
attribute_deprecated int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
Definition: imgconvert.c:48
mutex
static AVMutex mutex
Definition: log.c:44
AVCodecContext::compression_level
int compression_level
Definition: avcodec.h:608
av_parser_close
void av_parser_close(AVCodecParserContext *s)
Definition: parser.c:228
av_bitstream_filter_init
attribute_deprecated AVBitStreamFilterContext * av_bitstream_filter_init(const char *name)
Definition: bitstream_filter.c:51
nb_channels
int nb_channels
Definition: channel_layout.c:81
AVHWAccel::id
enum AVCodecID id
Codec implemented by the hardware accelerator.
Definition: avcodec.h:2458
AVCodecContext::side_data_only_packets
attribute_deprecated int side_data_only_packets
Encoding only and set by default.
Definition: avcodec.h:2044