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  * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This
159  * would be an invalid state, which could put the codec user into an endless
160  * loop. The API has no concept of time either: it cannot happen that trying to
161  * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second
162  * later accepts the packet (with no other receive/flush API calls involved).
163  * The API is a strict state machine, and the passage of time is not supposed
164  * to influence it. Some timing-dependent behavior might still be deemed
165  * acceptable in certain cases. But it must never result in both send/receive
166  * returning EAGAIN at the same time at any point. It must also absolutely be
167  * avoided that the current state is "unstable" and can "flip-flop" between
168  * the send/receive APIs allowing progress. For example, it's not allowed that
169  * the codec randomly decides that it actually wants to consume a packet now
170  * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an
171  * avcodec_send_packet() call.
172  * @}
173  */
174 
175 /**
176  * @defgroup lavc_core Core functions/structures.
177  * @ingroup libavc
178  *
179  * Basic definitions, functions for querying libavcodec capabilities,
180  * allocating core structures, etc.
181  * @{
182  */
183 
184 /**
185  * @ingroup lavc_decoding
186  * Required number of additionally allocated bytes at the end of the input bitstream for decoding.
187  * This is mainly needed because some optimized bitstream readers read
188  * 32 or 64 bit at once and could read over the end.<br>
189  * Note: If the first 23 bits of the additional bytes are not 0, then damaged
190  * MPEG bitstreams could cause overread and segfault.
191  */
192 #define AV_INPUT_BUFFER_PADDING_SIZE 64
193 
194 /**
195  * @ingroup lavc_encoding
196  * minimum encoding buffer size
197  * Used to avoid some checks during header writing.
198  */
199 #define AV_INPUT_BUFFER_MIN_SIZE 16384
200 
201 /**
202  * @ingroup lavc_decoding
203  */
205  /* We leave some space between them for extensions (drop some
206  * keyframes for intra-only or drop just some bidir frames). */
207  AVDISCARD_NONE =-16, ///< discard nothing
208  AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
209  AVDISCARD_NONREF = 8, ///< discard all non reference
210  AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
211  AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
212  AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
213  AVDISCARD_ALL = 48, ///< discard all
214 };
215 
226  AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
227 };
228 
229 /**
230  * @ingroup lavc_encoding
231  */
232 typedef struct RcOverride{
235  int qscale; // If this is 0 then quality_factor will be used instead.
237 } RcOverride;
238 
239 /* encoding support
240  These flags can be passed in AVCodecContext.flags before initialization.
241  Note: Not everything is supported yet.
242 */
243 
244 /**
245  * Allow decoders to produce frames with data planes that are not aligned
246  * to CPU requirements (e.g. due to cropping).
247  */
248 #define AV_CODEC_FLAG_UNALIGNED (1 << 0)
249 /**
250  * Use fixed qscale.
251  */
252 #define AV_CODEC_FLAG_QSCALE (1 << 1)
253 /**
254  * 4 MV per MB allowed / advanced prediction for H.263.
255  */
256 #define AV_CODEC_FLAG_4MV (1 << 2)
257 /**
258  * Output even those frames that might be corrupted.
259  */
260 #define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3)
261 /**
262  * Use qpel MC.
263  */
264 #define AV_CODEC_FLAG_QPEL (1 << 4)
265 /**
266  * Don't output frames whose parameters differ from first
267  * decoded frame in stream.
268  */
269 #define AV_CODEC_FLAG_DROPCHANGED (1 << 5)
270 /**
271  * Use internal 2pass ratecontrol in first pass mode.
272  */
273 #define AV_CODEC_FLAG_PASS1 (1 << 9)
274 /**
275  * Use internal 2pass ratecontrol in second pass mode.
276  */
277 #define AV_CODEC_FLAG_PASS2 (1 << 10)
278 /**
279  * loop filter.
280  */
281 #define AV_CODEC_FLAG_LOOP_FILTER (1 << 11)
282 /**
283  * Only decode/encode grayscale.
284  */
285 #define AV_CODEC_FLAG_GRAY (1 << 13)
286 /**
287  * error[?] variables will be set during encoding.
288  */
289 #define AV_CODEC_FLAG_PSNR (1 << 15)
290 /**
291  * Input bitstream might be truncated at a random location
292  * instead of only at frame boundaries.
293  */
294 #define AV_CODEC_FLAG_TRUNCATED (1 << 16)
295 /**
296  * Use interlaced DCT.
297  */
298 #define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18)
299 /**
300  * Force low delay.
301  */
302 #define AV_CODEC_FLAG_LOW_DELAY (1 << 19)
303 /**
304  * Place global headers in extradata instead of every keyframe.
305  */
306 #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
307 /**
308  * Use only bitexact stuff (except (I)DCT).
309  */
310 #define AV_CODEC_FLAG_BITEXACT (1 << 23)
311 /* Fx : Flag for H.263+ extra options */
312 /**
313  * H.263 advanced intra coding / MPEG-4 AC prediction
314  */
315 #define AV_CODEC_FLAG_AC_PRED (1 << 24)
316 /**
317  * interlaced motion estimation
318  */
319 #define AV_CODEC_FLAG_INTERLACED_ME (1 << 29)
320 #define AV_CODEC_FLAG_CLOSED_GOP (1U << 31)
321 
322 /**
323  * Allow non spec compliant speedup tricks.
324  */
325 #define AV_CODEC_FLAG2_FAST (1 << 0)
326 /**
327  * Skip bitstream encoding.
328  */
329 #define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2)
330 /**
331  * Place global headers at every keyframe instead of in extradata.
332  */
333 #define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3)
334 
335 /**
336  * timecode is in drop frame format. DEPRECATED!!!!
337  */
338 #define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13)
339 
340 /**
341  * Input bitstream might be truncated at a packet boundaries
342  * instead of only at frame boundaries.
343  */
344 #define AV_CODEC_FLAG2_CHUNKS (1 << 15)
345 /**
346  * Discard cropping information from SPS.
347  */
348 #define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16)
349 
350 /**
351  * Show all frames before the first keyframe
352  */
353 #define AV_CODEC_FLAG2_SHOW_ALL (1 << 22)
354 /**
355  * Export motion vectors through frame side data
356  */
357 #define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28)
358 /**
359  * Do not skip samples and export skip information as frame side data
360  */
361 #define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29)
362 /**
363  * Do not reset ASS ReadOrder field on flush (subtitles decoding)
364  */
365 #define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30)
366 
367 /* Unsupported options :
368  * Syntax Arithmetic coding (SAC)
369  * Reference Picture Selection
370  * Independent Segment Decoding */
371 /* /Fx */
372 /* codec capabilities */
373 
374 /* Exported side data.
375  These flags can be passed in AVCodecContext.export_side_data before initialization.
376 */
377 /**
378  * Export motion vectors through frame side data
379  */
380 #define AV_CODEC_EXPORT_DATA_MVS (1 << 0)
381 /**
382  * Export encoder Producer Reference Time through packet side data
383  */
384 #define AV_CODEC_EXPORT_DATA_PRFT (1 << 1)
385 /**
386  * Decoding only.
387  * Export the AVVideoEncParams structure through frame side data.
388  */
389 #define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2)
390 /**
391  * Decoding only.
392  * Do not apply film grain, export it instead.
393  */
394 #define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3)
395 
396 /**
397  * Pan Scan area.
398  * This specifies the area which should be displayed.
399  * Note there may be multiple such areas for one frame.
400  */
401 typedef struct AVPanScan {
402  /**
403  * id
404  * - encoding: Set by user.
405  * - decoding: Set by libavcodec.
406  */
407  int id;
408 
409  /**
410  * width and height in 1/16 pel
411  * - encoding: Set by user.
412  * - decoding: Set by libavcodec.
413  */
414  int width;
415  int height;
416 
417  /**
418  * position of the top left corner in 1/16 pel for up to 3 fields/frames
419  * - encoding: Set by user.
420  * - decoding: Set by libavcodec.
421  */
422  int16_t position[3][2];
423 } AVPanScan;
424 
425 /**
426  * This structure describes the bitrate properties of an encoded bitstream. It
427  * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
428  * parameters for H.264/HEVC.
429  */
430 typedef struct AVCPBProperties {
431  /**
432  * Maximum bitrate of the stream, in bits per second.
433  * Zero if unknown or unspecified.
434  */
435  int64_t max_bitrate;
436  /**
437  * Minimum bitrate of the stream, in bits per second.
438  * Zero if unknown or unspecified.
439  */
440  int64_t min_bitrate;
441  /**
442  * Average bitrate of the stream, in bits per second.
443  * Zero if unknown or unspecified.
444  */
445  int64_t avg_bitrate;
446 
447  /**
448  * The size of the buffer to which the ratecontrol is applied, in bits.
449  * Zero if unknown or unspecified.
450  */
451  int64_t buffer_size;
452 
453  /**
454  * The delay between the time the packet this structure is associated with
455  * is received and the time when it should be decoded, in periods of a 27MHz
456  * clock.
457  *
458  * UINT64_MAX when unknown or unspecified.
459  */
460  uint64_t vbv_delay;
462 
463 /**
464  * This structure supplies correlation between a packet timestamp and a wall clock
465  * production time. The definition follows the Producer Reference Time ('prft')
466  * as defined in ISO/IEC 14496-12
467  */
468 typedef struct AVProducerReferenceTime {
469  /**
470  * A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
471  */
472  int64_t wallclock;
473  int flags;
475 
476 /**
477  * The decoder will keep a reference to the frame and may reuse it later.
478  */
479 #define AV_GET_BUFFER_FLAG_REF (1 << 0)
480 
481 /**
482  * The encoder will keep a reference to the packet and may reuse it later.
483  */
484 #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0)
485 
486 struct AVCodecInternal;
487 
488 /**
489  * main external API structure.
490  * New fields can be added to the end with minor version bumps.
491  * Removal, reordering and changes to existing fields require a major
492  * version bump.
493  * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
494  * applications.
495  * The name string for AVOptions options matches the associated command line
496  * parameter name and can be found in libavcodec/options_table.h
497  * The AVOption/command line parameter names differ in some cases from the C
498  * structure field names for historic reasons or brevity.
499  * sizeof(AVCodecContext) must not be used outside libav*.
500  */
501 typedef struct AVCodecContext {
502  /**
503  * information on struct for av_log
504  * - set by avcodec_alloc_context3
505  */
508 
509  enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
510  const struct AVCodec *codec;
511  enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
512 
513  /**
514  * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
515  * This is used to work around some encoder bugs.
516  * A demuxer should set this to what is stored in the field used to identify the codec.
517  * If there are multiple such fields in a container then the demuxer should choose the one
518  * which maximizes the information about the used codec.
519  * If the codec tag field in a container is larger than 32 bits then the demuxer should
520  * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
521  * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
522  * first.
523  * - encoding: Set by user, if not then the default based on codec_id will be used.
524  * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
525  */
526  unsigned int codec_tag;
527 
528  void *priv_data;
529 
530  /**
531  * Private context used for internal data.
532  *
533  * Unlike priv_data, this is not codec-specific. It is used in general
534  * libavcodec functions.
535  */
536  struct AVCodecInternal *internal;
537 
538  /**
539  * Private data of the user, can be used to carry app specific stuff.
540  * - encoding: Set by user.
541  * - decoding: Set by user.
542  */
543  void *opaque;
544 
545  /**
546  * the average bitrate
547  * - encoding: Set by user; unused for constant quantizer encoding.
548  * - decoding: Set by user, may be overwritten by libavcodec
549  * if this info is available in the stream
550  */
551  int64_t bit_rate;
552 
553  /**
554  * number of bits the bitstream is allowed to diverge from the reference.
555  * the reference can be CBR (for CBR pass1) or VBR (for pass2)
556  * - encoding: Set by user; unused for constant quantizer encoding.
557  * - decoding: unused
558  */
560 
561  /**
562  * Global quality for codecs which cannot change it per frame.
563  * This should be proportional to MPEG-1/2/4 qscale.
564  * - encoding: Set by user.
565  * - decoding: unused
566  */
568 
569  /**
570  * - encoding: Set by user.
571  * - decoding: unused
572  */
574 #define FF_COMPRESSION_DEFAULT -1
575 
576  /**
577  * AV_CODEC_FLAG_*.
578  * - encoding: Set by user.
579  * - decoding: Set by user.
580  */
581  int flags;
582 
583  /**
584  * AV_CODEC_FLAG2_*
585  * - encoding: Set by user.
586  * - decoding: Set by user.
587  */
588  int flags2;
589 
590  /**
591  * some codecs need / can use extradata like Huffman tables.
592  * MJPEG: Huffman tables
593  * rv10: additional flags
594  * MPEG-4: global headers (they can be in the bitstream or here)
595  * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger
596  * than extradata_size to avoid problems if it is read with the bitstream reader.
597  * The bytewise contents of extradata must not depend on the architecture or CPU endianness.
598  * Must be allocated with the av_malloc() family of functions.
599  * - encoding: Set/allocated/freed by libavcodec.
600  * - decoding: Set/allocated/freed by user.
601  */
602  uint8_t *extradata;
604 
605  /**
606  * This is the fundamental unit of time (in seconds) in terms
607  * of which frame timestamps are represented. For fixed-fps content,
608  * timebase should be 1/framerate and timestamp increments should be
609  * identically 1.
610  * This often, but not always is the inverse of the frame rate or field rate
611  * for video. 1/time_base is not the average frame rate if the frame rate is not
612  * constant.
613  *
614  * Like containers, elementary streams also can store timestamps, 1/time_base
615  * is the unit in which these timestamps are specified.
616  * As example of such codec time base see ISO/IEC 14496-2:2001(E)
617  * vop_time_increment_resolution and fixed_vop_rate
618  * (fixed_vop_rate == 0 implies that it is different from the framerate)
619  *
620  * - encoding: MUST be set by user.
621  * - decoding: the use of this field for decoding is deprecated.
622  * Use framerate instead.
623  */
625 
626  /**
627  * For some codecs, the time base is closer to the field rate than the frame rate.
628  * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
629  * if no telecine is used ...
630  *
631  * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
632  */
634 
635  /**
636  * Codec delay.
637  *
638  * Encoding: Number of frames delay there will be from the encoder input to
639  * the decoder output. (we assume the decoder matches the spec)
640  * Decoding: Number of frames delay in addition to what a standard decoder
641  * as specified in the spec would produce.
642  *
643  * Video:
644  * Number of frames the decoded output will be delayed relative to the
645  * encoded input.
646  *
647  * Audio:
648  * For encoding, this field is unused (see initial_padding).
649  *
650  * For decoding, this is the number of samples the decoder needs to
651  * output before the decoder's output is valid. When seeking, you should
652  * start decoding this many samples prior to your desired seek point.
653  *
654  * - encoding: Set by libavcodec.
655  * - decoding: Set by libavcodec.
656  */
657  int delay;
658 
659 
660  /* video only */
661  /**
662  * picture width / height.
663  *
664  * @note Those fields may not match the values of the last
665  * AVFrame output by avcodec_receive_frame() due frame
666  * reordering.
667  *
668  * - encoding: MUST be set by user.
669  * - decoding: May be set by the user before opening the decoder if known e.g.
670  * from the container. Some decoders will require the dimensions
671  * to be set by the caller. During decoding, the decoder may
672  * overwrite those values as required while parsing the data.
673  */
674  int width, height;
675 
676  /**
677  * Bitstream width / height, may be different from width/height e.g. when
678  * the decoded frame is cropped before being output or lowres is enabled.
679  *
680  * @note Those field may not match the value of the last
681  * AVFrame output by avcodec_receive_frame() due frame
682  * reordering.
683  *
684  * - encoding: unused
685  * - decoding: May be set by the user before opening the decoder if known
686  * e.g. from the container. During decoding, the decoder may
687  * overwrite those values as required while parsing the data.
688  */
690 
691  /**
692  * the number of pictures in a group of pictures, or 0 for intra_only
693  * - encoding: Set by user.
694  * - decoding: unused
695  */
696  int gop_size;
697 
698  /**
699  * Pixel format, see AV_PIX_FMT_xxx.
700  * May be set by the demuxer if known from headers.
701  * May be overridden by the decoder if it knows better.
702  *
703  * @note This field may not match the value of the last
704  * AVFrame output by avcodec_receive_frame() due frame
705  * reordering.
706  *
707  * - encoding: Set by user.
708  * - decoding: Set by user if known, overridden by libavcodec while
709  * parsing the data.
710  */
712 
713  /**
714  * If non NULL, 'draw_horiz_band' is called by the libavcodec
715  * decoder to draw a horizontal band. It improves cache usage. Not
716  * all codecs can do that. You must check the codec capabilities
717  * beforehand.
718  * When multithreading is used, it may be called from multiple threads
719  * at the same time; threads might draw different parts of the same AVFrame,
720  * or multiple AVFrames, and there is no guarantee that slices will be drawn
721  * in order.
722  * The function is also used by hardware acceleration APIs.
723  * It is called at least once during frame decoding to pass
724  * the data needed for hardware render.
725  * In that mode instead of pixel data, AVFrame points to
726  * a structure specific to the acceleration API. The application
727  * reads the structure and can change some fields to indicate progress
728  * or mark state.
729  * - encoding: unused
730  * - decoding: Set by user.
731  * @param height the height of the slice
732  * @param y the y position of the slice
733  * @param type 1->top field, 2->bottom field, 3->frame
734  * @param offset offset into the AVFrame.data from which the slice should be read
735  */
737  const AVFrame *src, int offset[AV_NUM_DATA_POINTERS],
738  int y, int type, int height);
739 
740  /**
741  * callback to negotiate the pixelFormat
742  * @param fmt is the list of formats which are supported by the codec,
743  * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality.
744  * The first is always the native one.
745  * @note The callback may be called again immediately if initialization for
746  * the selected (hardware-accelerated) pixel format failed.
747  * @warning Behavior is undefined if the callback returns a value not
748  * in the fmt list of formats.
749  * @return the chosen format
750  * - encoding: unused
751  * - decoding: Set by user, if not set the native format will be chosen.
752  */
753  enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
754 
755  /**
756  * maximum number of B-frames between non-B-frames
757  * Note: The output will be delayed by max_b_frames+1 relative to the input.
758  * - encoding: Set by user.
759  * - decoding: unused
760  */
762 
763  /**
764  * qscale factor between IP and B-frames
765  * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
766  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
767  * - encoding: Set by user.
768  * - decoding: unused
769  */
771 
772  /**
773  * qscale offset between IP and B-frames
774  * - encoding: Set by user.
775  * - decoding: unused
776  */
778 
779  /**
780  * Size of the frame reordering buffer in the decoder.
781  * For MPEG-2 it is 1 IPB or 0 low delay IP.
782  * - encoding: Set by libavcodec.
783  * - decoding: Set by libavcodec.
784  */
786 
787  /**
788  * qscale factor between P- and I-frames
789  * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
790  * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
791  * - encoding: Set by user.
792  * - decoding: unused
793  */
795 
796  /**
797  * qscale offset between P and I-frames
798  * - encoding: Set by user.
799  * - decoding: unused
800  */
802 
803  /**
804  * luminance masking (0-> disabled)
805  * - encoding: Set by user.
806  * - decoding: unused
807  */
809 
810  /**
811  * temporary complexity masking (0-> disabled)
812  * - encoding: Set by user.
813  * - decoding: unused
814  */
816 
817  /**
818  * spatial complexity masking (0-> disabled)
819  * - encoding: Set by user.
820  * - decoding: unused
821  */
823 
824  /**
825  * p block masking (0-> disabled)
826  * - encoding: Set by user.
827  * - decoding: unused
828  */
829  float p_masking;
830 
831  /**
832  * darkness masking (0-> disabled)
833  * - encoding: Set by user.
834  * - decoding: unused
835  */
837 
838  /**
839  * slice count
840  * - encoding: Set by libavcodec.
841  * - decoding: Set by user (or 0).
842  */
844 
845  /**
846  * slice offsets in the frame in bytes
847  * - encoding: Set/allocated by libavcodec.
848  * - decoding: Set/allocated by user (or NULL).
849  */
851 
852  /**
853  * sample aspect ratio (0 if unknown)
854  * That is the width of a pixel divided by the height of the pixel.
855  * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
856  * - encoding: Set by user.
857  * - decoding: Set by libavcodec.
858  */
860 
861  /**
862  * motion estimation comparison function
863  * - encoding: Set by user.
864  * - decoding: unused
865  */
866  int me_cmp;
867  /**
868  * subpixel motion estimation comparison function
869  * - encoding: Set by user.
870  * - decoding: unused
871  */
873  /**
874  * macroblock comparison function (not supported yet)
875  * - encoding: Set by user.
876  * - decoding: unused
877  */
878  int mb_cmp;
879  /**
880  * interlaced DCT comparison function
881  * - encoding: Set by user.
882  * - decoding: unused
883  */
885 #define FF_CMP_SAD 0
886 #define FF_CMP_SSE 1
887 #define FF_CMP_SATD 2
888 #define FF_CMP_DCT 3
889 #define FF_CMP_PSNR 4
890 #define FF_CMP_BIT 5
891 #define FF_CMP_RD 6
892 #define FF_CMP_ZERO 7
893 #define FF_CMP_VSAD 8
894 #define FF_CMP_VSSE 9
895 #define FF_CMP_NSSE 10
896 #define FF_CMP_W53 11
897 #define FF_CMP_W97 12
898 #define FF_CMP_DCTMAX 13
899 #define FF_CMP_DCT264 14
900 #define FF_CMP_MEDIAN_SAD 15
901 #define FF_CMP_CHROMA 256
902 
903  /**
904  * ME diamond size & shape
905  * - encoding: Set by user.
906  * - decoding: unused
907  */
908  int dia_size;
909 
910  /**
911  * amount of previous MV predictors (2a+1 x 2a+1 square)
912  * - encoding: Set by user.
913  * - decoding: unused
914  */
916 
917  /**
918  * motion estimation prepass comparison function
919  * - encoding: Set by user.
920  * - decoding: unused
921  */
923 
924  /**
925  * ME prepass diamond size & shape
926  * - encoding: Set by user.
927  * - decoding: unused
928  */
930 
931  /**
932  * subpel ME quality
933  * - encoding: Set by user.
934  * - decoding: unused
935  */
937 
938  /**
939  * maximum motion estimation search range in subpel units
940  * If 0 then no limit.
941  *
942  * - encoding: Set by user.
943  * - decoding: unused
944  */
945  int me_range;
946 
947  /**
948  * slice flags
949  * - encoding: unused
950  * - decoding: Set by user.
951  */
953 #define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display
954 #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics)
955 #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
956 
957  /**
958  * macroblock decision mode
959  * - encoding: Set by user.
960  * - decoding: unused
961  */
963 #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp
964 #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits
965 #define FF_MB_DECISION_RD 2 ///< rate distortion
966 
967  /**
968  * custom intra quantization matrix
969  * Must be allocated with the av_malloc() family of functions, and will be freed in
970  * avcodec_free_context().
971  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
972  * - decoding: Set/allocated/freed by libavcodec.
973  */
974  uint16_t *intra_matrix;
975 
976  /**
977  * custom inter quantization matrix
978  * Must be allocated with the av_malloc() family of functions, and will be freed in
979  * avcodec_free_context().
980  * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
981  * - decoding: Set/allocated/freed by libavcodec.
982  */
983  uint16_t *inter_matrix;
984 
985  /**
986  * precision of the intra DC coefficient - 8
987  * - encoding: Set by user.
988  * - decoding: Set by libavcodec
989  */
991 
992  /**
993  * Number of macroblock rows at the top which are skipped.
994  * - encoding: unused
995  * - decoding: Set by user.
996  */
997  int skip_top;
998 
999  /**
1000  * Number of macroblock rows at the bottom which are skipped.
1001  * - encoding: unused
1002  * - decoding: Set by user.
1003  */
1005 
1006  /**
1007  * minimum MB Lagrange multiplier
1008  * - encoding: Set by user.
1009  * - decoding: unused
1010  */
1011  int mb_lmin;
1012 
1013  /**
1014  * maximum MB Lagrange multiplier
1015  * - encoding: Set by user.
1016  * - decoding: unused
1017  */
1018  int mb_lmax;
1019 
1020  /**
1021  * - encoding: Set by user.
1022  * - decoding: unused
1023  */
1025 
1026  /**
1027  * minimum GOP size
1028  * - encoding: Set by user.
1029  * - decoding: unused
1030  */
1032 
1033  /**
1034  * number of reference frames
1035  * - encoding: Set by user.
1036  * - decoding: Set by lavc.
1037  */
1038  int refs;
1039 
1040  /**
1041  * Note: Value depends upon the compare function used for fullpel ME.
1042  * - encoding: Set by user.
1043  * - decoding: unused
1044  */
1046 
1047  /**
1048  * Chromaticity coordinates of the source primaries.
1049  * - encoding: Set by user
1050  * - decoding: Set by libavcodec
1051  */
1053 
1054  /**
1055  * Color Transfer Characteristic.
1056  * - encoding: Set by user
1057  * - decoding: Set by libavcodec
1058  */
1060 
1061  /**
1062  * YUV colorspace type.
1063  * - encoding: Set by user
1064  * - decoding: Set by libavcodec
1065  */
1067 
1068  /**
1069  * MPEG vs JPEG YUV range.
1070  * - encoding: Set by user
1071  * - decoding: Set by libavcodec
1072  */
1074 
1075  /**
1076  * This defines the location of chroma samples.
1077  * - encoding: Set by user
1078  * - decoding: Set by libavcodec
1079  */
1081 
1082  /**
1083  * Number of slices.
1084  * Indicates number of picture subdivisions. Used for parallelized
1085  * decoding.
1086  * - encoding: Set by user
1087  * - decoding: unused
1088  */
1089  int slices;
1090 
1091  /** Field order
1092  * - encoding: set by libavcodec
1093  * - decoding: Set by user.
1094  */
1096 
1097  /* audio only */
1098  int sample_rate; ///< samples per second
1099  int channels; ///< number of audio channels
1100 
1101  /**
1102  * audio sample format
1103  * - encoding: Set by user.
1104  * - decoding: Set by libavcodec.
1105  */
1106  enum AVSampleFormat sample_fmt; ///< sample format
1107 
1108  /* The following data should not be initialized. */
1109  /**
1110  * Number of samples per channel in an audio frame.
1111  *
1112  * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
1113  * except the last must contain exactly frame_size samples per channel.
1114  * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
1115  * frame size is not restricted.
1116  * - decoding: may be set by some decoders to indicate constant frame size
1117  */
1119 
1120  /**
1121  * Frame counter, set by libavcodec.
1122  *
1123  * - decoding: total number of frames returned from the decoder so far.
1124  * - encoding: total number of frames passed to the encoder so far.
1125  *
1126  * @note the counter is not incremented if encoding/decoding resulted in
1127  * an error.
1128  */
1130 
1131  /**
1132  * number of bytes per packet if constant and known or 0
1133  * Used by some WAV based audio codecs.
1134  */
1136 
1137  /**
1138  * Audio cutoff bandwidth (0 means "automatic")
1139  * - encoding: Set by user.
1140  * - decoding: unused
1141  */
1142  int cutoff;
1143 
1144  /**
1145  * Audio channel layout.
1146  * - encoding: set by user.
1147  * - decoding: set by user, may be overwritten by libavcodec.
1148  */
1149  uint64_t channel_layout;
1150 
1151  /**
1152  * Request decoder to use this channel layout if it can (0 for default)
1153  * - encoding: unused
1154  * - decoding: Set by user.
1155  */
1157 
1158  /**
1159  * Type of service that the audio stream conveys.
1160  * - encoding: Set by user.
1161  * - decoding: Set by libavcodec.
1162  */
1164 
1165  /**
1166  * desired sample format
1167  * - encoding: Not used.
1168  * - decoding: Set by user.
1169  * Decoder will decode to this format if it can.
1170  */
1172 
1173  /**
1174  * This callback is called at the beginning of each frame to get data
1175  * buffer(s) for it. There may be one contiguous buffer for all the data or
1176  * there may be a buffer per each data plane or anything in between. What
1177  * this means is, you may set however many entries in buf[] you feel necessary.
1178  * Each buffer must be reference-counted using the AVBuffer API (see description
1179  * of buf[] below).
1180  *
1181  * The following fields will be set in the frame before this callback is
1182  * called:
1183  * - format
1184  * - width, height (video only)
1185  * - sample_rate, channel_layout, nb_samples (audio only)
1186  * Their values may differ from the corresponding values in
1187  * AVCodecContext. This callback must use the frame values, not the codec
1188  * context values, to calculate the required buffer size.
1189  *
1190  * This callback must fill the following fields in the frame:
1191  * - data[]
1192  * - linesize[]
1193  * - extended_data:
1194  * * if the data is planar audio with more than 8 channels, then this
1195  * callback must allocate and fill extended_data to contain all pointers
1196  * to all data planes. data[] must hold as many pointers as it can.
1197  * extended_data must be allocated with av_malloc() and will be freed in
1198  * av_frame_unref().
1199  * * otherwise extended_data must point to data
1200  * - buf[] must contain one or more pointers to AVBufferRef structures. Each of
1201  * the frame's data and extended_data pointers must be contained in these. That
1202  * is, one AVBufferRef for each allocated chunk of memory, not necessarily one
1203  * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
1204  * and av_buffer_ref().
1205  * - extended_buf and nb_extended_buf must be allocated with av_malloc() by
1206  * this callback and filled with the extra buffers if there are more
1207  * buffers than buf[] can hold. extended_buf will be freed in
1208  * av_frame_unref().
1209  *
1210  * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
1211  * avcodec_default_get_buffer2() instead of providing buffers allocated by
1212  * some other means.
1213  *
1214  * Each data plane must be aligned to the maximum required by the target
1215  * CPU.
1216  *
1217  * @see avcodec_default_get_buffer2()
1218  *
1219  * Video:
1220  *
1221  * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
1222  * (read and/or written to if it is writable) later by libavcodec.
1223  *
1224  * avcodec_align_dimensions2() should be used to find the required width and
1225  * height, as they normally need to be rounded up to the next multiple of 16.
1226  *
1227  * Some decoders do not support linesizes changing between frames.
1228  *
1229  * If frame multithreading is used, this callback may be called from a
1230  * different thread, but not from more than one at once. Does not need to be
1231  * reentrant.
1232  *
1233  * @see avcodec_align_dimensions2()
1234  *
1235  * Audio:
1236  *
1237  * Decoders request a buffer of a particular size by setting
1238  * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
1239  * however, utilize only part of the buffer by setting AVFrame.nb_samples
1240  * to a smaller value in the output frame.
1241  *
1242  * As a convenience, av_samples_get_buffer_size() and
1243  * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
1244  * functions to find the required data size and to fill data pointers and
1245  * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
1246  * since all planes must be the same size.
1247  *
1248  * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
1249  *
1250  * - encoding: unused
1251  * - decoding: Set by libavcodec, user can override.
1252  */
1254 
1255  /* - encoding parameters */
1256  float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
1257  float qblur; ///< amount of qscale smoothing over time (0.0-1.0)
1258 
1259  /**
1260  * minimum quantizer
1261  * - encoding: Set by user.
1262  * - decoding: unused
1263  */
1264  int qmin;
1265 
1266  /**
1267  * maximum quantizer
1268  * - encoding: Set by user.
1269  * - decoding: unused
1270  */
1271  int qmax;
1272 
1273  /**
1274  * maximum quantizer difference between frames
1275  * - encoding: Set by user.
1276  * - decoding: unused
1277  */
1279 
1280  /**
1281  * decoder bitstream buffer size
1282  * - encoding: Set by user.
1283  * - decoding: unused
1284  */
1286 
1287  /**
1288  * ratecontrol override, see RcOverride
1289  * - encoding: Allocated/set/freed by user.
1290  * - decoding: unused
1291  */
1294 
1295  /**
1296  * maximum bitrate
1297  * - encoding: Set by user.
1298  * - decoding: Set by user, may be overwritten by libavcodec.
1299  */
1300  int64_t rc_max_rate;
1301 
1302  /**
1303  * minimum bitrate
1304  * - encoding: Set by user.
1305  * - decoding: unused
1306  */
1307  int64_t rc_min_rate;
1308 
1309  /**
1310  * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
1311  * - encoding: Set by user.
1312  * - decoding: unused.
1313  */
1315 
1316  /**
1317  * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
1318  * - encoding: Set by user.
1319  * - decoding: unused.
1320  */
1322 
1323  /**
1324  * Number of bits which should be loaded into the rc buffer before decoding starts.
1325  * - encoding: Set by user.
1326  * - decoding: unused
1327  */
1329 
1330  /**
1331  * trellis RD quantization
1332  * - encoding: Set by user.
1333  * - decoding: unused
1334  */
1335  int trellis;
1336 
1337  /**
1338  * pass1 encoding statistics output buffer
1339  * - encoding: Set by libavcodec.
1340  * - decoding: unused
1341  */
1342  char *stats_out;
1343 
1344  /**
1345  * pass2 encoding statistics input buffer
1346  * Concatenated stuff from stats_out of pass1 should be placed here.
1347  * - encoding: Allocated/set/freed by user.
1348  * - decoding: unused
1349  */
1350  char *stats_in;
1351 
1352  /**
1353  * Work around bugs in encoders which sometimes cannot be detected automatically.
1354  * - encoding: Set by user
1355  * - decoding: Set by user
1356  */
1358 #define FF_BUG_AUTODETECT 1 ///< autodetection
1359 #define FF_BUG_XVID_ILACE 4
1360 #define FF_BUG_UMP4 8
1361 #define FF_BUG_NO_PADDING 16
1362 #define FF_BUG_AMV 32
1363 #define FF_BUG_QPEL_CHROMA 64
1364 #define FF_BUG_STD_QPEL 128
1365 #define FF_BUG_QPEL_CHROMA2 256
1366 #define FF_BUG_DIRECT_BLOCKSIZE 512
1367 #define FF_BUG_EDGE 1024
1368 #define FF_BUG_HPEL_CHROMA 2048
1369 #define FF_BUG_DC_CLIP 4096
1370 #define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders.
1371 #define FF_BUG_TRUNCATED 16384
1372 #define FF_BUG_IEDGE 32768
1373 
1374  /**
1375  * strictly follow the standard (MPEG-4, ...).
1376  * - encoding: Set by user.
1377  * - decoding: Set by user.
1378  * Setting this to STRICT or higher means the encoder and decoder will
1379  * generally do stupid things, whereas setting it to unofficial or lower
1380  * will mean the encoder might produce output that is not supported by all
1381  * spec-compliant decoders. Decoders don't differentiate between normal,
1382  * unofficial and experimental (that is, they always try to decode things
1383  * when they can) unless they are explicitly asked to behave stupidly
1384  * (=strictly conform to the specs)
1385  */
1387 #define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software.
1388 #define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences.
1389 #define FF_COMPLIANCE_NORMAL 0
1390 #define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions
1391 #define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
1392 
1393  /**
1394  * error concealment flags
1395  * - encoding: unused
1396  * - decoding: Set by user.
1397  */
1399 #define FF_EC_GUESS_MVS 1
1400 #define FF_EC_DEBLOCK 2
1401 #define FF_EC_FAVOR_INTER 256
1402 
1403  /**
1404  * debug
1405  * - encoding: Set by user.
1406  * - decoding: Set by user.
1407  */
1408  int debug;
1409 #define FF_DEBUG_PICT_INFO 1
1410 #define FF_DEBUG_RC 2
1411 #define FF_DEBUG_BITSTREAM 4
1412 #define FF_DEBUG_MB_TYPE 8
1413 #define FF_DEBUG_QP 16
1414 #define FF_DEBUG_DCT_COEFF 0x00000040
1415 #define FF_DEBUG_SKIP 0x00000080
1416 #define FF_DEBUG_STARTCODE 0x00000100
1417 #define FF_DEBUG_ER 0x00000400
1418 #define FF_DEBUG_MMCO 0x00000800
1419 #define FF_DEBUG_BUGS 0x00001000
1420 #define FF_DEBUG_BUFFERS 0x00008000
1421 #define FF_DEBUG_THREADS 0x00010000
1422 #define FF_DEBUG_GREEN_MD 0x00800000
1423 #define FF_DEBUG_NOMC 0x01000000
1424 
1425  /**
1426  * Error recognition; may misdetect some more or less valid parts as errors.
1427  * - encoding: Set by user.
1428  * - decoding: Set by user.
1429  */
1431 
1432 /**
1433  * Verify checksums embedded in the bitstream (could be of either encoded or
1434  * decoded data, depending on the codec) and print an error message on mismatch.
1435  * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the
1436  * decoder returning an error.
1437  */
1438 #define AV_EF_CRCCHECK (1<<0)
1439 #define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations
1440 #define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length
1441 #define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection
1442 
1443 #define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue
1444 #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
1445 #define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors
1446 #define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error
1447 
1448 
1449  /**
1450  * opaque 64-bit number (generally a PTS) that will be reordered and
1451  * output in AVFrame.reordered_opaque
1452  * - encoding: Set by libavcodec to the reordered_opaque of the input
1453  * frame corresponding to the last returned packet. Only
1454  * supported by encoders with the
1455  * AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability.
1456  * - decoding: Set by user.
1457  */
1459 
1460  /**
1461  * Hardware accelerator in use
1462  * - encoding: unused.
1463  * - decoding: Set by libavcodec
1464  */
1465  const struct AVHWAccel *hwaccel;
1466 
1467  /**
1468  * Hardware accelerator context.
1469  * For some hardware accelerators, a global context needs to be
1470  * provided by the user. In that case, this holds display-dependent
1471  * data FFmpeg cannot instantiate itself. Please refer to the
1472  * FFmpeg HW accelerator documentation to know how to fill this.
1473  * - encoding: unused
1474  * - decoding: Set by user
1475  */
1477 
1478  /**
1479  * error
1480  * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
1481  * - decoding: unused
1482  */
1484 
1485  /**
1486  * DCT algorithm, see FF_DCT_* below
1487  * - encoding: Set by user.
1488  * - decoding: unused
1489  */
1491 #define FF_DCT_AUTO 0
1492 #define FF_DCT_FASTINT 1
1493 #define FF_DCT_INT 2
1494 #define FF_DCT_MMX 3
1495 #define FF_DCT_ALTIVEC 5
1496 #define FF_DCT_FAAN 6
1497 
1498  /**
1499  * IDCT algorithm, see FF_IDCT_* below.
1500  * - encoding: Set by user.
1501  * - decoding: Set by user.
1502  */
1504 #define FF_IDCT_AUTO 0
1505 #define FF_IDCT_INT 1
1506 #define FF_IDCT_SIMPLE 2
1507 #define FF_IDCT_SIMPLEMMX 3
1508 #define FF_IDCT_ARM 7
1509 #define FF_IDCT_ALTIVEC 8
1510 #define FF_IDCT_SIMPLEARM 10
1511 #define FF_IDCT_XVID 14
1512 #define FF_IDCT_SIMPLEARMV5TE 16
1513 #define FF_IDCT_SIMPLEARMV6 17
1514 #define FF_IDCT_FAAN 20
1515 #define FF_IDCT_SIMPLENEON 22
1516 #define FF_IDCT_NONE 24 /* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE */
1517 #define FF_IDCT_SIMPLEAUTO 128
1518 
1519  /**
1520  * bits per sample/pixel from the demuxer (needed for huffyuv).
1521  * - encoding: Set by libavcodec.
1522  * - decoding: Set by user.
1523  */
1525 
1526  /**
1527  * Bits per sample/pixel of internal libavcodec pixel/sample format.
1528  * - encoding: set by user.
1529  * - decoding: set by libavcodec.
1530  */
1532 
1533  /**
1534  * low resolution decoding, 1-> 1/2 size, 2->1/4 size
1535  * - encoding: unused
1536  * - decoding: Set by user.
1537  */
1538  int lowres;
1539 
1540  /**
1541  * thread count
1542  * is used to decide how many independent tasks should be passed to execute()
1543  * - encoding: Set by user.
1544  * - decoding: Set by user.
1545  */
1547 
1548  /**
1549  * Which multithreading methods to use.
1550  * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
1551  * so clients which cannot provide future frames should not use it.
1552  *
1553  * - encoding: Set by user, otherwise the default is used.
1554  * - decoding: Set by user, otherwise the default is used.
1555  */
1557 #define FF_THREAD_FRAME 1 ///< Decode more than one frame at once
1558 #define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once
1559 
1560  /**
1561  * Which multithreading methods are in use by the codec.
1562  * - encoding: Set by libavcodec.
1563  * - decoding: Set by libavcodec.
1564  */
1566 
1567 #if FF_API_THREAD_SAFE_CALLBACKS
1568  /**
1569  * Set by the client if its custom get_buffer() callback can be called
1570  * synchronously from another thread, which allows faster multithreaded decoding.
1571  * draw_horiz_band() will be called from other threads regardless of this setting.
1572  * Ignored if the default get_buffer() is used.
1573  * - encoding: Set by user.
1574  * - decoding: Set by user.
1575  *
1576  * @deprecated the custom get_buffer2() callback should always be
1577  * thread-safe. Thread-unsafe get_buffer2() implementations will be
1578  * invalid starting with LIBAVCODEC_VERSION_MAJOR=60; in other words,
1579  * libavcodec will behave as if this field was always set to 1.
1580  * Callers that want to be forward compatible with future libavcodec
1581  * versions should wrap access to this field in
1582  * #if LIBAVCODEC_VERSION_MAJOR < 60
1583  */
1586 #endif
1587 
1588  /**
1589  * The codec may call this to execute several independent things.
1590  * It will return only after finishing all tasks.
1591  * The user may replace this with some multithreaded implementation,
1592  * the default implementation will execute the parts serially.
1593  * @param count the number of things to execute
1594  * - encoding: Set by libavcodec, user can override.
1595  * - decoding: Set by libavcodec, user can override.
1596  */
1597  int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size);
1598 
1599  /**
1600  * The codec may call this to execute several independent things.
1601  * It will return only after finishing all tasks.
1602  * The user may replace this with some multithreaded implementation,
1603  * the default implementation will execute the parts serially.
1604  * Also see avcodec_thread_init and e.g. the --enable-pthread configure option.
1605  * @param c context passed also to func
1606  * @param count the number of things to execute
1607  * @param arg2 argument passed unchanged to func
1608  * @param ret return values of executed functions, must have space for "count" values. May be NULL.
1609  * @param func function that will be called count times, with jobnr from 0 to count-1.
1610  * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
1611  * two instances of func executing at the same time will have the same threadnr.
1612  * @return always 0 currently, but code should handle a future improvement where when any call to func
1613  * returns < 0 no further calls to func may be done and < 0 is returned.
1614  * - encoding: Set by libavcodec, user can override.
1615  * - decoding: Set by libavcodec, user can override.
1616  */
1617  int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
1618 
1619  /**
1620  * noise vs. sse weight for the nsse comparison function
1621  * - encoding: Set by user.
1622  * - decoding: unused
1623  */
1625 
1626  /**
1627  * profile
1628  * - encoding: Set by user.
1629  * - decoding: Set by libavcodec.
1630  */
1631  int profile;
1632 #define FF_PROFILE_UNKNOWN -99
1633 #define FF_PROFILE_RESERVED -100
1634 
1635 #define FF_PROFILE_AAC_MAIN 0
1636 #define FF_PROFILE_AAC_LOW 1
1637 #define FF_PROFILE_AAC_SSR 2
1638 #define FF_PROFILE_AAC_LTP 3
1639 #define FF_PROFILE_AAC_HE 4
1640 #define FF_PROFILE_AAC_HE_V2 28
1641 #define FF_PROFILE_AAC_LD 22
1642 #define FF_PROFILE_AAC_ELD 38
1643 #define FF_PROFILE_MPEG2_AAC_LOW 128
1644 #define FF_PROFILE_MPEG2_AAC_HE 131
1645 
1646 #define FF_PROFILE_DNXHD 0
1647 #define FF_PROFILE_DNXHR_LB 1
1648 #define FF_PROFILE_DNXHR_SQ 2
1649 #define FF_PROFILE_DNXHR_HQ 3
1650 #define FF_PROFILE_DNXHR_HQX 4
1651 #define FF_PROFILE_DNXHR_444 5
1652 
1653 #define FF_PROFILE_DTS 20
1654 #define FF_PROFILE_DTS_ES 30
1655 #define FF_PROFILE_DTS_96_24 40
1656 #define FF_PROFILE_DTS_HD_HRA 50
1657 #define FF_PROFILE_DTS_HD_MA 60
1658 #define FF_PROFILE_DTS_EXPRESS 70
1659 
1660 #define FF_PROFILE_MPEG2_422 0
1661 #define FF_PROFILE_MPEG2_HIGH 1
1662 #define FF_PROFILE_MPEG2_SS 2
1663 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3
1664 #define FF_PROFILE_MPEG2_MAIN 4
1665 #define FF_PROFILE_MPEG2_SIMPLE 5
1666 
1667 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
1668 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
1669 
1670 #define FF_PROFILE_H264_BASELINE 66
1671 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
1672 #define FF_PROFILE_H264_MAIN 77
1673 #define FF_PROFILE_H264_EXTENDED 88
1674 #define FF_PROFILE_H264_HIGH 100
1675 #define FF_PROFILE_H264_HIGH_10 110
1676 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
1677 #define FF_PROFILE_H264_MULTIVIEW_HIGH 118
1678 #define FF_PROFILE_H264_HIGH_422 122
1679 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
1680 #define FF_PROFILE_H264_STEREO_HIGH 128
1681 #define FF_PROFILE_H264_HIGH_444 144
1682 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
1683 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
1684 #define FF_PROFILE_H264_CAVLC_444 44
1685 
1686 #define FF_PROFILE_VC1_SIMPLE 0
1687 #define FF_PROFILE_VC1_MAIN 1
1688 #define FF_PROFILE_VC1_COMPLEX 2
1689 #define FF_PROFILE_VC1_ADVANCED 3
1690 
1691 #define FF_PROFILE_MPEG4_SIMPLE 0
1692 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1
1693 #define FF_PROFILE_MPEG4_CORE 2
1694 #define FF_PROFILE_MPEG4_MAIN 3
1695 #define FF_PROFILE_MPEG4_N_BIT 4
1696 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5
1697 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
1698 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
1699 #define FF_PROFILE_MPEG4_HYBRID 8
1700 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
1701 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10
1702 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11
1703 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12
1704 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
1705 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14
1706 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15
1707 
1708 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1
1709 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2
1710 #define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768
1711 #define FF_PROFILE_JPEG2000_DCINEMA_2K 3
1712 #define FF_PROFILE_JPEG2000_DCINEMA_4K 4
1713 
1714 #define FF_PROFILE_VP9_0 0
1715 #define FF_PROFILE_VP9_1 1
1716 #define FF_PROFILE_VP9_2 2
1717 #define FF_PROFILE_VP9_3 3
1718 
1719 #define FF_PROFILE_HEVC_MAIN 1
1720 #define FF_PROFILE_HEVC_MAIN_10 2
1721 #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3
1722 #define FF_PROFILE_HEVC_REXT 4
1723 
1724 #define FF_PROFILE_VVC_MAIN_10 1
1725 #define FF_PROFILE_VVC_MAIN_10_444 33
1726 
1727 #define FF_PROFILE_AV1_MAIN 0
1728 #define FF_PROFILE_AV1_HIGH 1
1729 #define FF_PROFILE_AV1_PROFESSIONAL 2
1730 
1731 #define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
1732 #define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
1733 #define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
1734 #define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3
1735 #define FF_PROFILE_MJPEG_JPEG_LS 0xf7
1736 
1737 #define FF_PROFILE_SBC_MSBC 1
1738 
1739 #define FF_PROFILE_PRORES_PROXY 0
1740 #define FF_PROFILE_PRORES_LT 1
1741 #define FF_PROFILE_PRORES_STANDARD 2
1742 #define FF_PROFILE_PRORES_HQ 3
1743 #define FF_PROFILE_PRORES_4444 4
1744 #define FF_PROFILE_PRORES_XQ 5
1745 
1746 #define FF_PROFILE_ARIB_PROFILE_A 0
1747 #define FF_PROFILE_ARIB_PROFILE_C 1
1748 
1749 #define FF_PROFILE_KLVA_SYNC 0
1750 #define FF_PROFILE_KLVA_ASYNC 1
1751 
1752  /**
1753  * level
1754  * - encoding: Set by user.
1755  * - decoding: Set by libavcodec.
1756  */
1757  int level;
1758 #define FF_LEVEL_UNKNOWN -99
1759 
1760  /**
1761  * Skip loop filtering for selected frames.
1762  * - encoding: unused
1763  * - decoding: Set by user.
1764  */
1766 
1767  /**
1768  * Skip IDCT/dequantization for selected frames.
1769  * - encoding: unused
1770  * - decoding: Set by user.
1771  */
1773 
1774  /**
1775  * Skip decoding for selected frames.
1776  * - encoding: unused
1777  * - decoding: Set by user.
1778  */
1780 
1781  /**
1782  * Header containing style information for text subtitles.
1783  * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
1784  * [Script Info] and [V4+ Styles] section, plus the [Events] line and
1785  * the Format line following. It shouldn't include any Dialogue line.
1786  * - encoding: Set/allocated/freed by user (before avcodec_open2())
1787  * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
1788  */
1791 
1792  /**
1793  * Audio only. The number of "priming" samples (padding) inserted by the
1794  * encoder at the beginning of the audio. I.e. this number of leading
1795  * decoded samples must be discarded by the caller to get the original audio
1796  * without leading padding.
1797  *
1798  * - decoding: unused
1799  * - encoding: Set by libavcodec. The timestamps on the output packets are
1800  * adjusted by the encoder so that they always refer to the
1801  * first sample of the data actually contained in the packet,
1802  * including any added padding. E.g. if the timebase is
1803  * 1/samplerate and the timestamp of the first input sample is
1804  * 0, the timestamp of the first output packet will be
1805  * -initial_padding.
1806  */
1808 
1809  /**
1810  * - decoding: For codecs that store a framerate value in the compressed
1811  * bitstream, the decoder may export it here. { 0, 1} when
1812  * unknown.
1813  * - encoding: May be used to signal the framerate of CFR content to an
1814  * encoder.
1815  */
1817 
1818  /**
1819  * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
1820  * - encoding: unused.
1821  * - decoding: Set by libavcodec before calling get_format()
1822  */
1824 
1825  /**
1826  * Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
1827  * - encoding unused.
1828  * - decoding set by user.
1829  */
1831 
1832  /**
1833  * AVCodecDescriptor
1834  * - encoding: unused.
1835  * - decoding: set by libavcodec.
1836  */
1838 
1839  /**
1840  * Current statistics for PTS correction.
1841  * - decoding: maintained and used by libavcodec, not intended to be used by user apps
1842  * - encoding: unused
1843  */
1844  int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far
1845  int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far
1846  int64_t pts_correction_last_pts; /// PTS of the last frame
1847  int64_t pts_correction_last_dts; /// DTS of the last frame
1848 
1849  /**
1850  * Character encoding of the input subtitles file.
1851  * - decoding: set by user
1852  * - encoding: unused
1853  */
1855 
1856  /**
1857  * Subtitles character encoding mode. Formats or codecs might be adjusting
1858  * this setting (if they are doing the conversion themselves for instance).
1859  * - decoding: set by libavcodec
1860  * - encoding: unused
1861  */
1863 #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)
1864 #define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself
1865 #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
1866 #define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8
1867 
1868  /**
1869  * Skip processing alpha if supported by codec.
1870  * Note that if the format uses pre-multiplied alpha (common with VP6,
1871  * and recommended due to better video quality/compression)
1872  * the image will look as if alpha-blended onto a black background.
1873  * However for formats that do not use pre-multiplied alpha
1874  * there might be serious artefacts (though e.g. libswscale currently
1875  * assumes pre-multiplied alpha anyway).
1876  *
1877  * - decoding: set by user
1878  * - encoding: unused
1879  */
1881 
1882  /**
1883  * Number of samples to skip after a discontinuity
1884  * - decoding: unused
1885  * - encoding: set by libavcodec
1886  */
1888 
1889 #if FF_API_DEBUG_MV
1890  /**
1891  * @deprecated unused
1892  */
1895 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
1896 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
1897 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
1898 #endif
1899 
1900  /**
1901  * custom intra quantization matrix
1902  * - encoding: Set by user, can be NULL.
1903  * - decoding: unused.
1904  */
1906 
1907  /**
1908  * dump format separator.
1909  * can be ", " or "\n " or anything else
1910  * - encoding: Set by user.
1911  * - decoding: Set by user.
1912  */
1913  uint8_t *dump_separator;
1914 
1915  /**
1916  * ',' separated list of allowed decoders.
1917  * If NULL then all are allowed
1918  * - encoding: unused
1919  * - decoding: set by user
1920  */
1922 
1923  /**
1924  * Properties of the stream that gets decoded
1925  * - encoding: unused
1926  * - decoding: set by libavcodec
1927  */
1928  unsigned properties;
1929 #define FF_CODEC_PROPERTY_LOSSLESS 0x00000001
1930 #define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002
1931 
1932  /**
1933  * Additional data associated with the entire coded stream.
1934  *
1935  * - decoding: unused
1936  * - encoding: may be set by libavcodec after avcodec_open2().
1937  */
1940 
1941  /**
1942  * A reference to the AVHWFramesContext describing the input (for encoding)
1943  * or output (decoding) frames. The reference is set by the caller and
1944  * afterwards owned (and freed) by libavcodec - it should never be read by
1945  * the caller after being set.
1946  *
1947  * - decoding: This field should be set by the caller from the get_format()
1948  * callback. The previous reference (if any) will always be
1949  * unreffed by libavcodec before the get_format() call.
1950  *
1951  * If the default get_buffer2() is used with a hwaccel pixel
1952  * format, then this AVHWFramesContext will be used for
1953  * allocating the frame buffers.
1954  *
1955  * - encoding: For hardware encoders configured to use a hwaccel pixel
1956  * format, this field should be set by the caller to a reference
1957  * to the AVHWFramesContext describing input frames.
1958  * AVHWFramesContext.format must be equal to
1959  * AVCodecContext.pix_fmt.
1960  *
1961  * This field should be set before avcodec_open2() is called.
1962  */
1964 
1965  /**
1966  * Control the form of AVSubtitle.rects[N]->ass
1967  * - decoding: set by user
1968  * - encoding: unused
1969  */
1971 #define FF_SUB_TEXT_FMT_ASS 0
1972 
1973  /**
1974  * Audio only. The amount of padding (in samples) appended by the encoder to
1975  * the end of the audio. I.e. this number of decoded samples must be
1976  * discarded by the caller from the end of the stream to get the original
1977  * audio without any trailing padding.
1978  *
1979  * - decoding: unused
1980  * - encoding: unused
1981  */
1983 
1984  /**
1985  * The number of pixels per image to maximally accept.
1986  *
1987  * - decoding: set by user
1988  * - encoding: set by user
1989  */
1990  int64_t max_pixels;
1991 
1992  /**
1993  * A reference to the AVHWDeviceContext describing the device which will
1994  * be used by a hardware encoder/decoder. The reference is set by the
1995  * caller and afterwards owned (and freed) by libavcodec.
1996  *
1997  * This should be used if either the codec device does not require
1998  * hardware frames or any that are used are to be allocated internally by
1999  * libavcodec. If the user wishes to supply any of the frames used as
2000  * encoder input or decoder output then hw_frames_ctx should be used
2001  * instead. When hw_frames_ctx is set in get_format() for a decoder, this
2002  * field will be ignored while decoding the associated stream segment, but
2003  * may again be used on a following one after another get_format() call.
2004  *
2005  * For both encoders and decoders this field should be set before
2006  * avcodec_open2() is called and must not be written to thereafter.
2007  *
2008  * Note that some decoders may require this field to be set initially in
2009  * order to support hw_frames_ctx at all - in that case, all frames
2010  * contexts used must be created on the same device.
2011  */
2013 
2014  /**
2015  * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
2016  * decoding (if active).
2017  * - encoding: unused
2018  * - decoding: Set by user (either before avcodec_open2(), or in the
2019  * AVCodecContext.get_format callback)
2020  */
2022 
2023  /**
2024  * Video decoding only. Certain video codecs support cropping, meaning that
2025  * only a sub-rectangle of the decoded frame is intended for display. This
2026  * option controls how cropping is handled by libavcodec.
2027  *
2028  * When set to 1 (the default), libavcodec will apply cropping internally.
2029  * I.e. it will modify the output frame width/height fields and offset the
2030  * data pointers (only by as much as possible while preserving alignment, or
2031  * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
2032  * the frames output by the decoder refer only to the cropped area. The
2033  * crop_* fields of the output frames will be zero.
2034  *
2035  * When set to 0, the width/height fields of the output frames will be set
2036  * to the coded dimensions and the crop_* fields will describe the cropping
2037  * rectangle. Applying the cropping is left to the caller.
2038  *
2039  * @warning When hardware acceleration with opaque output frames is used,
2040  * libavcodec is unable to apply cropping from the top/left border.
2041  *
2042  * @note when this option is set to zero, the width/height fields of the
2043  * AVCodecContext and output AVFrames have different meanings. The codec
2044  * context fields store display dimensions (with the coded dimensions in
2045  * coded_width/height), while the frame fields store the coded dimensions
2046  * (with the display dimensions being determined by the crop_* fields).
2047  */
2049 
2050  /*
2051  * Video decoding only. Sets the number of extra hardware frames which
2052  * the decoder will allocate for use by the caller. This must be set
2053  * before avcodec_open2() is called.
2054  *
2055  * Some hardware decoders require all frames that they will use for
2056  * output to be defined in advance before decoding starts. For such
2057  * decoders, the hardware frame pool must therefore be of a fixed size.
2058  * The extra frames set here are on top of any number that the decoder
2059  * needs internally in order to operate normally (for example, frames
2060  * used as reference pictures).
2061  */
2063 
2064  /**
2065  * The percentage of damaged samples to discard a frame.
2066  *
2067  * - decoding: set by user
2068  * - encoding: unused
2069  */
2071 
2072  /**
2073  * The number of samples per frame to maximally accept.
2074  *
2075  * - decoding: set by user
2076  * - encoding: set by user
2077  */
2078  int64_t max_samples;
2079 
2080  /**
2081  * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of
2082  * metadata exported in frame, packet, or coded stream side data by
2083  * decoders and encoders.
2084  *
2085  * - decoding: set by user
2086  * - encoding: set by user
2087  */
2089 
2090  /**
2091  * This callback is called at the beginning of each packet to get a data
2092  * buffer for it.
2093  *
2094  * The following field will be set in the packet before this callback is
2095  * called:
2096  * - size
2097  * This callback must use the above value to calculate the required buffer size,
2098  * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes.
2099  *
2100  * This callback must fill the following fields in the packet:
2101  * - data: alignment requirements for AVPacket apply, if any. Some architectures and
2102  * encoders may benefit from having aligned data.
2103  * - buf: must contain a pointer to an AVBufferRef structure. The packet's
2104  * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(),
2105  * and av_buffer_ref().
2106  *
2107  * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call
2108  * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by
2109  * some other means.
2110  *
2111  * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags.
2112  * They may be used for example to hint what use the buffer may get after being
2113  * created.
2114  * Implementations of this callback may ignore flags they don't understand.
2115  * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused
2116  * (read and/or written to if it is writable) later by libavcodec.
2117  *
2118  * This callback must be thread-safe, as when frame threading is used, it may
2119  * be called from multiple threads simultaneously.
2120  *
2121  * @see avcodec_default_get_encode_buffer()
2122  *
2123  * - encoding: Set by libavcodec, user can override.
2124  * - decoding: unused
2125  */
2127 } AVCodecContext;
2128 
2129 struct MpegEncContext;
2130 
2131 /**
2132  * @defgroup lavc_hwaccel AVHWAccel
2133  *
2134  * @note Nothing in this structure should be accessed by the user. At some
2135  * point in future it will not be externally visible at all.
2136  *
2137  * @{
2138  */
2139 typedef struct AVHWAccel {
2140  /**
2141  * Name of the hardware accelerated codec.
2142  * The name is globally unique among encoders and among decoders (but an
2143  * encoder and a decoder can share the same name).
2144  */
2145  const char *name;
2146 
2147  /**
2148  * Type of codec implemented by the hardware accelerator.
2149  *
2150  * See AVMEDIA_TYPE_xxx
2151  */
2153 
2154  /**
2155  * Codec implemented by the hardware accelerator.
2156  *
2157  * See AV_CODEC_ID_xxx
2158  */
2160 
2161  /**
2162  * Supported pixel format.
2163  *
2164  * Only hardware accelerated formats are supported here.
2165  */
2167 
2168  /**
2169  * Hardware accelerated codec capabilities.
2170  * see AV_HWACCEL_CODEC_CAP_*
2171  */
2173 
2174  /*****************************************************************
2175  * No fields below this line are part of the public API. They
2176  * may not be used outside of libavcodec and can be changed and
2177  * removed at will.
2178  * New public fields should be added right above.
2179  *****************************************************************
2180  */
2181 
2182  /**
2183  * Allocate a custom buffer
2184  */
2186 
2187  /**
2188  * Called at the beginning of each frame or field picture.
2189  *
2190  * Meaningful frame information (codec specific) is guaranteed to
2191  * be parsed at this point. This function is mandatory.
2192  *
2193  * Note that buf can be NULL along with buf_size set to 0.
2194  * Otherwise, this means the whole frame is available at this point.
2195  *
2196  * @param avctx the codec context
2197  * @param buf the frame data buffer base
2198  * @param buf_size the size of the frame in bytes
2199  * @return zero if successful, a negative value otherwise
2200  */
2201  int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
2202 
2203  /**
2204  * Callback for parameter data (SPS/PPS/VPS etc).
2205  *
2206  * Useful for hardware decoders which keep persistent state about the
2207  * video parameters, and need to receive any changes to update that state.
2208  *
2209  * @param avctx the codec context
2210  * @param type the nal unit type
2211  * @param buf the nal unit data buffer
2212  * @param buf_size the size of the nal unit in bytes
2213  * @return zero if successful, a negative value otherwise
2214  */
2215  int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size);
2216 
2217  /**
2218  * Callback for each slice.
2219  *
2220  * Meaningful slice information (codec specific) is guaranteed to
2221  * be parsed at this point. This function is mandatory.
2222  * The only exception is XvMC, that works on MB level.
2223  *
2224  * @param avctx the codec context
2225  * @param buf the slice data buffer base
2226  * @param buf_size the size of the slice in bytes
2227  * @return zero if successful, a negative value otherwise
2228  */
2229  int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
2230 
2231  /**
2232  * Called at the end of each frame or field picture.
2233  *
2234  * The whole picture is parsed at this point and can now be sent
2235  * to the hardware accelerator. This function is mandatory.
2236  *
2237  * @param avctx the codec context
2238  * @return zero if successful, a negative value otherwise
2239  */
2241 
2242  /**
2243  * Size of per-frame hardware accelerator private data.
2244  *
2245  * Private data is allocated with av_mallocz() before
2246  * AVCodecContext.get_buffer() and deallocated after
2247  * AVCodecContext.release_buffer().
2248  */
2250 
2251  /**
2252  * Called for every Macroblock in a slice.
2253  *
2254  * XvMC uses it to replace the ff_mpv_reconstruct_mb().
2255  * Instead of decoding to raw picture, MB parameters are
2256  * stored in an array provided by the video driver.
2257  *
2258  * @param s the mpeg context
2259  */
2260  void (*decode_mb)(struct MpegEncContext *s);
2261 
2262  /**
2263  * Initialize the hwaccel private data.
2264  *
2265  * This will be called from ff_get_format(), after hwaccel and
2266  * hwaccel_context are set and the hwaccel private data in AVCodecInternal
2267  * is allocated.
2268  */
2270 
2271  /**
2272  * Uninitialize the hwaccel private data.
2273  *
2274  * This will be called from get_format() or avcodec_close(), after hwaccel
2275  * and hwaccel_context are already uninitialized.
2276  */
2278 
2279  /**
2280  * Size of the private data to allocate in
2281  * AVCodecInternal.hwaccel_priv_data.
2282  */
2284 
2285  /**
2286  * Internal hwaccel capabilities.
2287  */
2289 
2290  /**
2291  * Fill the given hw_frames context with current codec parameters. Called
2292  * from get_format. Refer to avcodec_get_hw_frames_parameters() for
2293  * details.
2294  *
2295  * This CAN be called before AVHWAccel.init is called, and you must assume
2296  * that avctx->hwaccel_priv_data is invalid.
2297  */
2299 } AVHWAccel;
2300 
2301 /**
2302  * HWAccel is experimental and is thus avoided in favor of non experimental
2303  * codecs
2304  */
2305 #define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200
2306 
2307 /**
2308  * Hardware acceleration should be used for decoding even if the codec level
2309  * used is unknown or higher than the maximum supported level reported by the
2310  * hardware driver.
2311  *
2312  * It's generally a good idea to pass this flag unless you have a specific
2313  * reason not to, as hardware tends to under-report supported levels.
2314  */
2315 #define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0)
2316 
2317 /**
2318  * Hardware acceleration can output YUV pixel formats with a different chroma
2319  * sampling than 4:2:0 and/or other than 8 bits per component.
2320  */
2321 #define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1)
2322 
2323 /**
2324  * Hardware acceleration should still be attempted for decoding when the
2325  * codec profile does not match the reported capabilities of the hardware.
2326  *
2327  * For example, this can be used to try to decode baseline profile H.264
2328  * streams in hardware - it will often succeed, because many streams marked
2329  * as baseline profile actually conform to constrained baseline profile.
2330  *
2331  * @warning If the stream is actually not supported then the behaviour is
2332  * undefined, and may include returning entirely incorrect output
2333  * while indicating success.
2334  */
2335 #define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2)
2336 
2337 /**
2338  * @}
2339  */
2340 
2343 
2344  SUBTITLE_BITMAP, ///< A bitmap, pict will be set
2345 
2346  /**
2347  * Plain text, the text field must be set by the decoder and is
2348  * authoritative. ass and pict fields may contain approximations.
2349  */
2351 
2352  /**
2353  * Formatted text, the ass field must be set by the decoder and is
2354  * authoritative. pict and text fields may contain approximations.
2355  */
2357 };
2358 
2359 #define AV_SUBTITLE_FLAG_FORCED 0x00000001
2360 
2361 typedef struct AVSubtitleRect {
2362  int x; ///< top left corner of pict, undefined when pict is not set
2363  int y; ///< top left corner of pict, undefined when pict is not set
2364  int w; ///< width of pict, undefined when pict is not set
2365  int h; ///< height of pict, undefined when pict is not set
2366  int nb_colors; ///< number of colors in pict, undefined when pict is not set
2367 
2368  /**
2369  * data+linesize for the bitmap of this subtitle.
2370  * Can be set for text/ass as well once they are rendered.
2371  */
2372  uint8_t *data[4];
2373  int linesize[4];
2374 
2376 
2377  char *text; ///< 0 terminated plain UTF-8 text
2378 
2379  /**
2380  * 0 terminated ASS/SSA compatible event line.
2381  * The presentation of this is unaffected by the other values in this
2382  * struct.
2383  */
2384  char *ass;
2385 
2386  int flags;
2387 } AVSubtitleRect;
2388 
2389 typedef struct AVSubtitle {
2390  uint16_t format; /* 0 = graphics */
2391  uint32_t start_display_time; /* relative to packet pts, in ms */
2392  uint32_t end_display_time; /* relative to packet pts, in ms */
2393  unsigned num_rects;
2395  int64_t pts; ///< Same as packet pts, in AV_TIME_BASE
2396 } AVSubtitle;
2397 
2398 /**
2399  * Return the LIBAVCODEC_VERSION_INT constant.
2400  */
2401 unsigned avcodec_version(void);
2402 
2403 /**
2404  * Return the libavcodec build-time configuration.
2405  */
2406 const char *avcodec_configuration(void);
2407 
2408 /**
2409  * Return the libavcodec license.
2410  */
2411 const char *avcodec_license(void);
2412 
2413 /**
2414  * Allocate an AVCodecContext and set its fields to default values. The
2415  * resulting struct should be freed with avcodec_free_context().
2416  *
2417  * @param codec if non-NULL, allocate private data and initialize defaults
2418  * for the given codec. It is illegal to then call avcodec_open2()
2419  * with a different codec.
2420  * If NULL, then the codec-specific defaults won't be initialized,
2421  * which may result in suboptimal default settings (this is
2422  * important mainly for encoders, e.g. libx264).
2423  *
2424  * @return An AVCodecContext filled with default values or NULL on failure.
2425  */
2427 
2428 /**
2429  * Free the codec context and everything associated with it and write NULL to
2430  * the provided pointer.
2431  */
2432 void avcodec_free_context(AVCodecContext **avctx);
2433 
2434 /**
2435  * Get the AVClass for AVCodecContext. It can be used in combination with
2436  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2437  *
2438  * @see av_opt_find().
2439  */
2440 const AVClass *avcodec_get_class(void);
2441 
2442 #if FF_API_GET_FRAME_CLASS
2443 /**
2444  * @deprecated This function should not be used.
2445  */
2447 const AVClass *avcodec_get_frame_class(void);
2448 #endif
2449 
2450 /**
2451  * Get the AVClass for AVSubtitleRect. It can be used in combination with
2452  * AV_OPT_SEARCH_FAKE_OBJ for examining options.
2453  *
2454  * @see av_opt_find().
2455  */
2457 
2458 /**
2459  * Fill the parameters struct based on the values from the supplied codec
2460  * context. Any allocated fields in par are freed and replaced with duplicates
2461  * of the corresponding fields in codec.
2462  *
2463  * @return >= 0 on success, a negative AVERROR code on failure
2464  */
2466  const AVCodecContext *codec);
2467 
2468 /**
2469  * Fill the codec context based on the values from the supplied codec
2470  * parameters. Any allocated fields in codec that have a corresponding field in
2471  * par are freed and replaced with duplicates of the corresponding field in par.
2472  * Fields in codec that do not have a counterpart in par are not touched.
2473  *
2474  * @return >= 0 on success, a negative AVERROR code on failure.
2475  */
2477  const AVCodecParameters *par);
2478 
2479 /**
2480  * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
2481  * function the context has to be allocated with avcodec_alloc_context3().
2482  *
2483  * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
2484  * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
2485  * retrieving a codec.
2486  *
2487  * @warning This function is not thread safe!
2488  *
2489  * @note Always call this function before using decoding routines (such as
2490  * @ref avcodec_receive_frame()).
2491  *
2492  * @code
2493  * av_dict_set(&opts, "b", "2.5M", 0);
2494  * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
2495  * if (!codec)
2496  * exit(1);
2497  *
2498  * context = avcodec_alloc_context3(codec);
2499  *
2500  * if (avcodec_open2(context, codec, opts) < 0)
2501  * exit(1);
2502  * @endcode
2503  *
2504  * @param avctx The context to initialize.
2505  * @param codec The codec to open this context for. If a non-NULL codec has been
2506  * previously passed to avcodec_alloc_context3() or
2507  * for this context, then this parameter MUST be either NULL or
2508  * equal to the previously passed codec.
2509  * @param options A dictionary filled with AVCodecContext and codec-private options.
2510  * On return this object will be filled with options that were not found.
2511  *
2512  * @return zero on success, a negative value on error
2513  * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
2514  * av_dict_set(), av_opt_find().
2515  */
2516 int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
2517 
2518 /**
2519  * Close a given AVCodecContext and free all the data associated with it
2520  * (but not the AVCodecContext itself).
2521  *
2522  * Calling this function on an AVCodecContext that hasn't been opened will free
2523  * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
2524  * codec. Subsequent calls will do nothing.
2525  *
2526  * @note Do not use this function. Use avcodec_free_context() to destroy a
2527  * codec context (either open or closed). Opening and closing a codec context
2528  * multiple times is not supported anymore -- use multiple codec contexts
2529  * instead.
2530  */
2531 int avcodec_close(AVCodecContext *avctx);
2532 
2533 /**
2534  * Free all allocated data in the given subtitle struct.
2535  *
2536  * @param sub AVSubtitle to free.
2537  */
2539 
2540 /**
2541  * @}
2542  */
2543 
2544 /**
2545  * @addtogroup lavc_decoding
2546  * @{
2547  */
2548 
2549 /**
2550  * The default callback for AVCodecContext.get_buffer2(). It is made public so
2551  * it can be called by custom get_buffer2() implementations for decoders without
2552  * AV_CODEC_CAP_DR1 set.
2553  */
2555 
2556 /**
2557  * The default callback for AVCodecContext.get_encode_buffer(). It is made public so
2558  * it can be called by custom get_encode_buffer() implementations for encoders without
2559  * AV_CODEC_CAP_DR1 set.
2560  */
2562 
2563 /**
2564  * Modify width and height values so that they will result in a memory
2565  * buffer that is acceptable for the codec if you do not use any horizontal
2566  * padding.
2567  *
2568  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2569  */
2571 
2572 /**
2573  * Modify width and height values so that they will result in a memory
2574  * buffer that is acceptable for the codec if you also ensure that all
2575  * line sizes are a multiple of the respective linesize_align[i].
2576  *
2577  * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
2578  */
2580  int linesize_align[AV_NUM_DATA_POINTERS]);
2581 
2582 /**
2583  * Converts AVChromaLocation to swscale x/y chroma position.
2584  *
2585  * The positions represent the chroma (0,0) position in a coordinates system
2586  * with luma (0,0) representing the origin and luma(1,1) representing 256,256
2587  *
2588  * @param xpos horizontal chroma sample position
2589  * @param ypos vertical chroma sample position
2590  */
2591 int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos);
2592 
2593 /**
2594  * Converts swscale x/y chroma position to AVChromaLocation.
2595  *
2596  * The positions represent the chroma (0,0) position in a coordinates system
2597  * with luma (0,0) representing the origin and luma(1,1) representing 256,256
2598  *
2599  * @param xpos horizontal chroma sample position
2600  * @param ypos vertical chroma sample position
2601  */
2602 enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos);
2603 
2604 /**
2605  * Decode a subtitle message.
2606  * Return a negative value on error, otherwise return the number of bytes used.
2607  * If no subtitle could be decompressed, got_sub_ptr is zero.
2608  * Otherwise, the subtitle is stored in *sub.
2609  * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
2610  * simplicity, because the performance difference is expected to be negligible
2611  * and reusing a get_buffer written for video codecs would probably perform badly
2612  * due to a potentially very different allocation pattern.
2613  *
2614  * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
2615  * and output. This means that for some packets they will not immediately
2616  * produce decoded output and need to be flushed at the end of decoding to get
2617  * all the decoded data. Flushing is done by calling this function with packets
2618  * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
2619  * returning subtitles. It is safe to flush even those decoders that are not
2620  * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
2621  *
2622  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
2623  * before packets may be fed to the decoder.
2624  *
2625  * @param avctx the codec context
2626  * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored,
2627  * must be freed with avsubtitle_free if *got_sub_ptr is set.
2628  * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
2629  * @param[in] avpkt The input AVPacket containing the input buffer.
2630  */
2632  int *got_sub_ptr,
2633  AVPacket *avpkt);
2634 
2635 /**
2636  * Supply raw packet data as input to a decoder.
2637  *
2638  * Internally, this call will copy relevant AVCodecContext fields, which can
2639  * influence decoding per-packet, and apply them when the packet is actually
2640  * decoded. (For example AVCodecContext.skip_frame, which might direct the
2641  * decoder to drop the frame contained by the packet sent with this function.)
2642  *
2643  * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
2644  * larger than the actual read bytes because some optimized bitstream
2645  * readers read 32 or 64 bits at once and could read over the end.
2646  *
2647  * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
2648  * before packets may be fed to the decoder.
2649  *
2650  * @param avctx codec context
2651  * @param[in] avpkt The input AVPacket. Usually, this will be a single video
2652  * frame, or several complete audio frames.
2653  * Ownership of the packet remains with the caller, and the
2654  * decoder will not write to the packet. The decoder may create
2655  * a reference to the packet data (or copy it if the packet is
2656  * not reference-counted).
2657  * Unlike with older APIs, the packet is always fully consumed,
2658  * and if it contains multiple frames (e.g. some audio codecs),
2659  * will require you to call avcodec_receive_frame() multiple
2660  * times afterwards before you can send a new packet.
2661  * It can be NULL (or an AVPacket with data set to NULL and
2662  * size set to 0); in this case, it is considered a flush
2663  * packet, which signals the end of the stream. Sending the
2664  * first flush packet will return success. Subsequent ones are
2665  * unnecessary and will return AVERROR_EOF. If the decoder
2666  * still has frames buffered, it will return them after sending
2667  * a flush packet.
2668  *
2669  * @return 0 on success, otherwise negative error code:
2670  * AVERROR(EAGAIN): input is not accepted in the current state - user
2671  * must read output with avcodec_receive_frame() (once
2672  * all output is read, the packet should be resent, and
2673  * the call will not fail with EAGAIN).
2674  * AVERROR_EOF: the decoder has been flushed, and no new packets can
2675  * be sent to it (also returned if more than 1 flush
2676  * packet is sent)
2677  * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush
2678  * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
2679  * other errors: legitimate decoding errors
2680  */
2681 int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
2682 
2683 /**
2684  * Return decoded output data from a decoder.
2685  *
2686  * @param avctx codec context
2687  * @param frame This will be set to a reference-counted video or audio
2688  * frame (depending on the decoder type) allocated by the
2689  * decoder. Note that the function will always call
2690  * av_frame_unref(frame) before doing anything else.
2691  *
2692  * @return
2693  * 0: success, a frame was returned
2694  * AVERROR(EAGAIN): output is not available in this state - user must try
2695  * to send new input
2696  * AVERROR_EOF: the decoder has been fully flushed, and there will be
2697  * no more output frames
2698  * AVERROR(EINVAL): codec not opened, or it is an encoder
2699  * AVERROR_INPUT_CHANGED: current decoded frame has changed parameters
2700  * with respect to first decoded frame. Applicable
2701  * when flag AV_CODEC_FLAG_DROPCHANGED is set.
2702  * other negative values: legitimate decoding errors
2703  */
2705 
2706 /**
2707  * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
2708  * to retrieve buffered output packets.
2709  *
2710  * @param avctx codec context
2711  * @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
2712  * Ownership of the frame remains with the caller, and the
2713  * encoder will not write to the frame. The encoder may create
2714  * a reference to the frame data (or copy it if the frame is
2715  * not reference-counted).
2716  * It can be NULL, in which case it is considered a flush
2717  * packet. This signals the end of the stream. If the encoder
2718  * still has packets buffered, it will return them after this
2719  * call. Once flushing mode has been entered, additional flush
2720  * packets are ignored, and sending frames will return
2721  * AVERROR_EOF.
2722  *
2723  * For audio:
2724  * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
2725  * can have any number of samples.
2726  * If it is not set, frame->nb_samples must be equal to
2727  * avctx->frame_size for all frames except the last.
2728  * The final frame may be smaller than avctx->frame_size.
2729  * @return 0 on success, otherwise negative error code:
2730  * AVERROR(EAGAIN): input is not accepted in the current state - user
2731  * must read output with avcodec_receive_packet() (once
2732  * all output is read, the packet should be resent, and
2733  * the call will not fail with EAGAIN).
2734  * AVERROR_EOF: the encoder has been flushed, and no new frames can
2735  * be sent to it
2736  * AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a
2737  * decoder, or requires flush
2738  * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
2739  * other errors: legitimate encoding errors
2740  */
2741 int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
2742 
2743 /**
2744  * Read encoded data from the encoder.
2745  *
2746  * @param avctx codec context
2747  * @param avpkt This will be set to a reference-counted packet allocated by the
2748  * encoder. Note that the function will always call
2749  * av_packet_unref(avpkt) before doing anything else.
2750  * @return 0 on success, otherwise negative error code:
2751  * AVERROR(EAGAIN): output is not available in the current state - user
2752  * must try to send input
2753  * AVERROR_EOF: the encoder has been fully flushed, and there will be
2754  * no more output packets
2755  * AVERROR(EINVAL): codec not opened, or it is a decoder
2756  * other errors: legitimate encoding errors
2757  */
2758 int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
2759 
2760 /**
2761  * Create and return a AVHWFramesContext with values adequate for hardware
2762  * decoding. This is meant to get called from the get_format callback, and is
2763  * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
2764  * This API is for decoding with certain hardware acceleration modes/APIs only.
2765  *
2766  * The returned AVHWFramesContext is not initialized. The caller must do this
2767  * with av_hwframe_ctx_init().
2768  *
2769  * Calling this function is not a requirement, but makes it simpler to avoid
2770  * codec or hardware API specific details when manually allocating frames.
2771  *
2772  * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
2773  * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
2774  * it unnecessary to call this function or having to care about
2775  * AVHWFramesContext initialization at all.
2776  *
2777  * There are a number of requirements for calling this function:
2778  *
2779  * - It must be called from get_format with the same avctx parameter that was
2780  * passed to get_format. Calling it outside of get_format is not allowed, and
2781  * can trigger undefined behavior.
2782  * - The function is not always supported (see description of return values).
2783  * Even if this function returns successfully, hwaccel initialization could
2784  * fail later. (The degree to which implementations check whether the stream
2785  * is actually supported varies. Some do this check only after the user's
2786  * get_format callback returns.)
2787  * - The hw_pix_fmt must be one of the choices suggested by get_format. If the
2788  * user decides to use a AVHWFramesContext prepared with this API function,
2789  * the user must return the same hw_pix_fmt from get_format.
2790  * - The device_ref passed to this function must support the given hw_pix_fmt.
2791  * - After calling this API function, it is the user's responsibility to
2792  * initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
2793  * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
2794  * before returning from get_format (this is implied by the normal
2795  * AVCodecContext.hw_frames_ctx API rules).
2796  * - The AVHWFramesContext parameters may change every time time get_format is
2797  * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
2798  * you are inherently required to go through this process again on every
2799  * get_format call.
2800  * - It is perfectly possible to call this function without actually using
2801  * the resulting AVHWFramesContext. One use-case might be trying to reuse a
2802  * previously initialized AVHWFramesContext, and calling this API function
2803  * only to test whether the required frame parameters have changed.
2804  * - Fields that use dynamically allocated values of any kind must not be set
2805  * by the user unless setting them is explicitly allowed by the documentation.
2806  * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
2807  * the new free callback must call the potentially set previous free callback.
2808  * This API call may set any dynamically allocated fields, including the free
2809  * callback.
2810  *
2811  * The function will set at least the following fields on AVHWFramesContext
2812  * (potentially more, depending on hwaccel API):
2813  *
2814  * - All fields set by av_hwframe_ctx_alloc().
2815  * - Set the format field to hw_pix_fmt.
2816  * - Set the sw_format field to the most suited and most versatile format. (An
2817  * implication is that this will prefer generic formats over opaque formats
2818  * with arbitrary restrictions, if possible.)
2819  * - Set the width/height fields to the coded frame size, rounded up to the
2820  * API-specific minimum alignment.
2821  * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
2822  * field to the number of maximum reference surfaces possible with the codec,
2823  * plus 1 surface for the user to work (meaning the user can safely reference
2824  * at most 1 decoded surface at a time), plus additional buffering introduced
2825  * by frame threading. If the hwaccel does not require pre-allocation, the
2826  * field is left to 0, and the decoder will allocate new surfaces on demand
2827  * during decoding.
2828  * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
2829  * hardware API.
2830  *
2831  * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
2832  * with basic frame parameters set.
2833  *
2834  * The function is stateless, and does not change the AVCodecContext or the
2835  * device_ref AVHWDeviceContext.
2836  *
2837  * @param avctx The context which is currently calling get_format, and which
2838  * implicitly contains all state needed for filling the returned
2839  * AVHWFramesContext properly.
2840  * @param device_ref A reference to the AVHWDeviceContext describing the device
2841  * which will be used by the hardware decoder.
2842  * @param hw_pix_fmt The hwaccel format you are going to return from get_format.
2843  * @param out_frames_ref On success, set to a reference to an _uninitialized_
2844  * AVHWFramesContext, created from the given device_ref.
2845  * Fields will be set to values required for decoding.
2846  * Not changed if an error is returned.
2847  * @return zero on success, a negative value on error. The following error codes
2848  * have special semantics:
2849  * AVERROR(ENOENT): the decoder does not support this functionality. Setup
2850  * is always manual, or it is a decoder which does not
2851  * support setting AVCodecContext.hw_frames_ctx at all,
2852  * or it is a software format.
2853  * AVERROR(EINVAL): it is known that hardware decoding is not supported for
2854  * this configuration, or the device_ref is not supported
2855  * for the hwaccel referenced by hw_pix_fmt.
2856  */
2858  AVBufferRef *device_ref,
2860  AVBufferRef **out_frames_ref);
2861 
2862 
2863 
2864 /**
2865  * @defgroup lavc_parsing Frame parsing
2866  * @{
2867  */
2868 
2871  AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field
2872  AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field
2873  AV_PICTURE_STRUCTURE_FRAME, //< coded as frame
2874 };
2875 
2876 typedef struct AVCodecParserContext {
2877  void *priv_data;
2878  const struct AVCodecParser *parser;
2879  int64_t frame_offset; /* offset of the current frame */
2880  int64_t cur_offset; /* current offset
2881  (incremented by each av_parser_parse()) */
2882  int64_t next_frame_offset; /* offset of the next frame */
2883  /* video info */
2884  int pict_type; /* XXX: Put it back in AVCodecContext. */
2885  /**
2886  * This field is used for proper frame duration computation in lavf.
2887  * It signals, how much longer the frame duration of the current frame
2888  * is compared to normal frame duration.
2889  *
2890  * frame_duration = (1 + repeat_pict) * time_base
2891  *
2892  * It is used by codecs like H.264 to display telecined material.
2893  */
2894  int repeat_pict; /* XXX: Put it back in AVCodecContext. */
2895  int64_t pts; /* pts of the current frame */
2896  int64_t dts; /* dts of the current frame */
2897 
2898  /* private data */
2899  int64_t last_pts;
2900  int64_t last_dts;
2902 
2903 #define AV_PARSER_PTS_NB 4
2908 
2909  int flags;
2910 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001
2911 #define PARSER_FLAG_ONCE 0x0002
2912 /// Set if the parser has a valid file offset
2913 #define PARSER_FLAG_FETCHED_OFFSET 0x0004
2914 #define PARSER_FLAG_USE_CODEC_TS 0x1000
2915 
2916  int64_t offset; ///< byte offset from starting packet start
2918 
2919  /**
2920  * Set by parser to 1 for key frames and 0 for non-key frames.
2921  * It is initialized to -1, so if the parser doesn't set this flag,
2922  * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
2923  * will be used.
2924  */
2926 
2927  // Timestamp generation support:
2928  /**
2929  * Synchronization point for start of timestamp generation.
2930  *
2931  * Set to >0 for sync point, 0 for no sync point and <0 for undefined
2932  * (default).
2933  *
2934  * For example, this corresponds to presence of H.264 buffering period
2935  * SEI message.
2936  */
2938 
2939  /**
2940  * Offset of the current timestamp against last timestamp sync point in
2941  * units of AVCodecContext.time_base.
2942  *
2943  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
2944  * contain a valid timestamp offset.
2945  *
2946  * Note that the timestamp of sync point has usually a nonzero
2947  * dts_ref_dts_delta, which refers to the previous sync point. Offset of
2948  * the next frame after timestamp sync point will be usually 1.
2949  *
2950  * For example, this corresponds to H.264 cpb_removal_delay.
2951  */
2953 
2954  /**
2955  * Presentation delay of current frame in units of AVCodecContext.time_base.
2956  *
2957  * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
2958  * contain valid non-negative timestamp delta (presentation time of a frame
2959  * must not lie in the past).
2960  *
2961  * This delay represents the difference between decoding and presentation
2962  * time of the frame.
2963  *
2964  * For example, this corresponds to H.264 dpb_output_delay.
2965  */
2967 
2968  /**
2969  * Position of the packet in file.
2970  *
2971  * Analogous to cur_frame_pts/dts
2972  */
2974 
2975  /**
2976  * Byte position of currently parsed frame in stream.
2977  */
2978  int64_t pos;
2979 
2980  /**
2981  * Previous frame byte position.
2982  */
2983  int64_t last_pos;
2984 
2985  /**
2986  * Duration of the current frame.
2987  * For audio, this is in units of 1 / AVCodecContext.sample_rate.
2988  * For all other types, this is in units of AVCodecContext.time_base.
2989  */
2991 
2993 
2994  /**
2995  * Indicate whether a picture is coded as a frame, top field or bottom field.
2996  *
2997  * For example, H.264 field_pic_flag equal to 0 corresponds to
2998  * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
2999  * equal to 1 and bottom_field_flag equal to 0 corresponds to
3000  * AV_PICTURE_STRUCTURE_TOP_FIELD.
3001  */
3003 
3004  /**
3005  * Picture number incremented in presentation or output order.
3006  * This field may be reinitialized at the first picture of a new sequence.
3007  *
3008  * For example, this corresponds to H.264 PicOrderCnt.
3009  */
3011 
3012  /**
3013  * Dimensions of the decoded video intended for presentation.
3014  */
3015  int width;
3016  int height;
3017 
3018  /**
3019  * Dimensions of the coded video.
3020  */
3023 
3024  /**
3025  * The format of the coded data, corresponds to enum AVPixelFormat for video
3026  * and for enum AVSampleFormat for audio.
3027  *
3028  * Note that a decoder can have considerable freedom in how exactly it
3029  * decodes the data, so the format reported here might be different from the
3030  * one returned by a decoder.
3031  */
3032  int format;
3034 
3035 typedef struct AVCodecParser {
3036  int codec_ids[5]; /* several codec IDs are permitted */
3039  /* This callback never returns an error, a negative value means that
3040  * the frame start was in a previous packet. */
3042  AVCodecContext *avctx,
3043  const uint8_t **poutbuf, int *poutbuf_size,
3044  const uint8_t *buf, int buf_size);
3046  int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
3047 } AVCodecParser;
3048 
3049 /**
3050  * Iterate over all registered codec parsers.
3051  *
3052  * @param opaque a pointer where libavcodec will store the iteration state. Must
3053  * point to NULL to start the iteration.
3054  *
3055  * @return the next registered codec parser or NULL when the iteration is
3056  * finished
3057  */
3058 const AVCodecParser *av_parser_iterate(void **opaque);
3059 
3061 
3062 /**
3063  * Parse a packet.
3064  *
3065  * @param s parser context.
3066  * @param avctx codec context.
3067  * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
3068  * @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
3069  * @param buf input buffer.
3070  * @param buf_size buffer size in bytes without the padding. I.e. the full buffer
3071  size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
3072  To signal EOF, this should be 0 (so that the last frame
3073  can be output).
3074  * @param pts input presentation timestamp.
3075  * @param dts input decoding timestamp.
3076  * @param pos input byte position in stream.
3077  * @return the number of bytes of the input bitstream used.
3078  *
3079  * Example:
3080  * @code
3081  * while(in_len){
3082  * len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
3083  * in_data, in_len,
3084  * pts, dts, pos);
3085  * in_data += len;
3086  * in_len -= len;
3087  *
3088  * if(size)
3089  * decode_frame(data, size);
3090  * }
3091  * @endcode
3092  */
3094  AVCodecContext *avctx,
3095  uint8_t **poutbuf, int *poutbuf_size,
3096  const uint8_t *buf, int buf_size,
3097  int64_t pts, int64_t dts,
3098  int64_t pos);
3099 
3101 
3102 /**
3103  * @}
3104  * @}
3105  */
3106 
3107 /**
3108  * @addtogroup lavc_encoding
3109  * @{
3110  */
3111 
3112 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
3113  const AVSubtitle *sub);
3114 
3115 
3116 /**
3117  * @}
3118  */
3119 
3120 /**
3121  * @defgroup lavc_misc Utility functions
3122  * @ingroup libavc
3123  *
3124  * Miscellaneous utility functions related to both encoding and decoding
3125  * (or neither).
3126  * @{
3127  */
3128 
3129 /**
3130  * @defgroup lavc_misc_pixfmt Pixel formats
3131  *
3132  * Functions for working with pixel formats.
3133  * @{
3134  */
3135 
3136 /**
3137  * Return a value representing the fourCC code associated to the
3138  * pixel format pix_fmt, or 0 if no associated fourCC code can be
3139  * found.
3140  */
3142 
3143 /**
3144  * Find the best pixel format to convert to given a certain source pixel
3145  * format. When converting from one pixel format to another, information loss
3146  * may occur. For example, when converting from RGB24 to GRAY, the color
3147  * information will be lost. Similarly, other losses occur when converting from
3148  * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
3149  * the given pixel formats should be used to suffer the least amount of loss.
3150  * The pixel formats from which it chooses one, are determined by the
3151  * pix_fmt_list parameter.
3152  *
3153  *
3154  * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
3155  * @param[in] src_pix_fmt source pixel format
3156  * @param[in] has_alpha Whether the source pixel format alpha channel is used.
3157  * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
3158  * @return The best pixel format to convert to or -1 if none was found.
3159  */
3160 enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
3161  enum AVPixelFormat src_pix_fmt,
3162  int has_alpha, int *loss_ptr);
3163 
3165 
3166 /**
3167  * @}
3168  */
3169 
3170 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
3171 
3172 /**
3173  * Return a name for the specified profile, if available.
3174  *
3175  * @param codec the codec that is searched for the given profile
3176  * @param profile the profile value for which a name is requested
3177  * @return A name for the profile if found, NULL otherwise.
3178  */
3179 const char *av_get_profile_name(const AVCodec *codec, int profile);
3180 
3181 /**
3182  * Return a name for the specified profile, if available.
3183  *
3184  * @param codec_id the ID of the codec to which the requested profile belongs
3185  * @param profile the profile value for which a name is requested
3186  * @return A name for the profile if found, NULL otherwise.
3187  *
3188  * @note unlike av_get_profile_name(), which searches a list of profiles
3189  * supported by a specific decoder or encoder implementation, this
3190  * function searches the list of profiles from the AVCodecDescriptor
3191  */
3192 const char *avcodec_profile_name(enum AVCodecID codec_id, int profile);
3193 
3194 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
3195 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
3196 //FIXME func typedef
3197 
3198 /**
3199  * Fill AVFrame audio data and linesize pointers.
3200  *
3201  * The buffer buf must be a preallocated buffer with a size big enough
3202  * to contain the specified samples amount. The filled AVFrame data
3203  * pointers will point to this buffer.
3204  *
3205  * AVFrame extended_data channel pointers are allocated if necessary for
3206  * planar audio.
3207  *
3208  * @param frame the AVFrame
3209  * frame->nb_samples must be set prior to calling the
3210  * function. This function fills in frame->data,
3211  * frame->extended_data, frame->linesize[0].
3212  * @param nb_channels channel count
3213  * @param sample_fmt sample format
3214  * @param buf buffer to use for frame data
3215  * @param buf_size size of buffer
3216  * @param align plane size sample alignment (0 = default)
3217  * @return >=0 on success, negative error code on failure
3218  * @todo return the size in bytes required to store the samples in
3219  * case of success, at the next libavutil bump
3220  */
3222  enum AVSampleFormat sample_fmt, const uint8_t *buf,
3223  int buf_size, int align);
3224 
3225 /**
3226  * Reset the internal codec state / flush internal buffers. Should be called
3227  * e.g. when seeking or when switching to a different stream.
3228  *
3229  * @note for decoders, when refcounted frames are not used
3230  * (i.e. avctx->refcounted_frames is 0), this invalidates the frames previously
3231  * returned from the decoder. When refcounted frames are used, the decoder just
3232  * releases any references it might keep internally, but the caller's reference
3233  * remains valid.
3234  *
3235  * @note for encoders, this function will only do something if the encoder
3236  * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder
3237  * will drain any remaining packets, and can then be re-used for a different
3238  * stream (as opposed to sending a null frame which will leave the encoder
3239  * in a permanent EOF state after draining). This can be desirable if the
3240  * cost of tearing down and replacing the encoder instance is high.
3241  */
3243 
3244 /**
3245  * Return codec bits per sample.
3246  *
3247  * @param[in] codec_id the codec
3248  * @return Number of bits per sample or zero if unknown for the given codec.
3249  */
3251 
3252 /**
3253  * Return the PCM codec associated with a sample format.
3254  * @param be endianness, 0 for little, 1 for big,
3255  * -1 (or anything else) for native
3256  * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
3257  */
3258 enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be);
3259 
3260 /**
3261  * Return codec bits per sample.
3262  * Only return non-zero if the bits per sample is exactly correct, not an
3263  * approximation.
3264  *
3265  * @param[in] codec_id the codec
3266  * @return Number of bits per sample or zero if unknown for the given codec.
3267  */
3269 
3270 /**
3271  * Return audio frame duration.
3272  *
3273  * @param avctx codec context
3274  * @param frame_bytes size of the frame, or 0 if unknown
3275  * @return frame duration, in samples, if known. 0 if not able to
3276  * determine.
3277  */
3278 int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes);
3279 
3280 /**
3281  * This function is the same as av_get_audio_frame_duration(), except it works
3282  * with AVCodecParameters instead of an AVCodecContext.
3283  */
3284 int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes);
3285 
3286 /* memory */
3287 
3288 /**
3289  * Same behaviour av_fast_malloc but the buffer has additional
3290  * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
3291  *
3292  * In addition the whole buffer will initially and after resizes
3293  * be 0-initialized so that no uninitialized data will ever appear.
3294  */
3295 void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
3296 
3297 /**
3298  * Same behaviour av_fast_padded_malloc except that buffer will always
3299  * be 0-initialized after call.
3300  */
3301 void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
3302 
3303 /**
3304  * Encode extradata length to a buffer. Used by xiph codecs.
3305  *
3306  * @param s buffer to write to; must be at least (v/255+1) bytes long
3307  * @param v size of extradata in bytes
3308  * @return number of bytes written to the buffer.
3309  */
3310 unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
3311 
3312 /**
3313  * @return a positive value if s is open (i.e. avcodec_open2() was called on it
3314  * with no corresponding avcodec_close()), 0 otherwise.
3315  */
3317 
3318 /**
3319  * Allocate a CPB properties structure and initialize its fields to default
3320  * values.
3321  *
3322  * @param size if non-NULL, the size of the allocated struct will be written
3323  * here. This is useful for embedding it in side data.
3324  *
3325  * @return the newly allocated struct or NULL on failure
3326  */
3328 
3329 /**
3330  * @}
3331  */
3332 
3333 #endif /* AVCODEC_AVCODEC_H */
AVSubtitle
Definition: avcodec.h:2389
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:455
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:68
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:407
AVCodecContext::frame_size
int frame_size
Number of samples per channel in an audio frame.
Definition: avcodec.h:1118
AVCodecContext::hwaccel
const struct AVHWAccel * hwaccel
Hardware accelerator in use.
Definition: avcodec.h:1465
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:1476
hw_pix_fmt
static enum AVPixelFormat hw_pix_fmt
Definition: hw_decode.c:46
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
AVCodecParserContext::pts
int64_t pts
Definition: avcodec.h:2895
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:422
AVCodecContext::log_level_offset
int log_level_offset
Definition: avcodec.h:507
AV_AUDIO_SERVICE_TYPE_VOICE_OVER
@ AV_AUDIO_SERVICE_TYPE_VOICE_OVER
Definition: avcodec.h:224
AVCodecContext::keyint_min
int keyint_min
minimum GOP size
Definition: avcodec.h:1031
AV_AUDIO_SERVICE_TYPE_EMERGENCY
@ AV_AUDIO_SERVICE_TYPE_EMERGENCY
Definition: avcodec.h:223
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:1357
AVSubtitle::rects
AVSubtitleRect ** rects
Definition: avcodec.h:2394
av_xiphlacing
unsigned int av_xiphlacing(unsigned char *s, unsigned int v)
Encode extradata length to a buffer.
Definition: utils.c:826
AVCodecContext::get_format
enum AVPixelFormat(* get_format)(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
callback to negotiate the pixelFormat
Definition: avcodec.h:753
AVCodecParserContext::dts_sync_point
int dts_sync_point
Synchronization point for start of timestamp generation.
Definition: avcodec.h:2937
AVCodecContext::audio_service_type
enum AVAudioServiceType audio_service_type
Type of service that the audio stream conveys.
Definition: avcodec.h:1163
AVCodecContext::channel_layout
uint64_t channel_layout
Audio channel layout.
Definition: avcodec.h:1149
AVCodecContext::colorspace
enum AVColorSpace colorspace
YUV colorspace type.
Definition: avcodec.h:1066
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:473
AVCodecContext::av_class
const AVClass * av_class
information on struct for av_log
Definition: avcodec.h:506
AVCodecParserContext::pict_type
int pict_type
Definition: avcodec.h:2884
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition: avcodec.h:1098
AVCodecContext::rc_min_rate
int64_t rc_min_rate
minimum bitrate
Definition: avcodec.h:1307
AVCodecParserContext::output_picture_number
int output_picture_number
Picture number incremented in presentation or output order.
Definition: avcodec.h:3010
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
AVHWAccel::type
enum AVMediaType type
Type of codec implemented by the hardware accelerator.
Definition: avcodec.h:2152
AV_PICTURE_STRUCTURE_UNKNOWN
@ AV_PICTURE_STRUCTURE_UNKNOWN
Definition: avcodec.h:2870
AVHWAccel::caps_internal
int caps_internal
Internal hwaccel capabilities.
Definition: avcodec.h:2288
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
AVPanScan
Pan Scan area.
Definition: avcodec.h:401
AVCodecParserContext::duration
int duration
Duration of the current frame.
Definition: avcodec.h:2990
AVCodecContext::err_recognition
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
Definition: avcodec.h:1430
avcodec_string
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
Definition: avcodec.c:530
rational.h
AVCodecContext::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the entire coded stream.
Definition: avcodec.h:1938
AVSubtitleRect
Definition: avcodec.h:2361
AVSubtitle::num_rects
unsigned num_rects
Definition: avcodec.h:2393
av_parser_iterate
const AVCodecParser * av_parser_iterate(void **opaque)
Iterate over all registered codec parsers.
Definition: parsers.c:78
AVCodecContext::intra_matrix
uint16_t * intra_matrix
custom intra quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:974
AVCodecContext::mv0_threshold
int mv0_threshold
Note: Value depends upon the compare function used for fullpel ME.
Definition: avcodec.h:1045
AVCodecContext::lumi_masking
float lumi_masking
luminance masking (0-> disabled)
Definition: avcodec.h:808
profile
mfxU16 profile
Definition: qsvenc.c:45
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:303
AVCodecContext::color_trc
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
Definition: avcodec.h:1059
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:2966
AVCodecContext::slice_offset
int * slice_offset
slice offsets in the frame in bytes
Definition: avcodec.h:850
avcodec_decode_subtitle2
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
Decode a subtitle message.
Definition: decode.c:791
AVProducerReferenceTime::wallclock
int64_t wallclock
A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
Definition: avcodec.h:472
AVCodecContext::field_order
enum AVFieldOrder field_order
Field order.
Definition: avcodec.h:1095
AVHWAccel::capabilities
int capabilities
Hardware accelerated codec capabilities.
Definition: avcodec.h:2172
AVCodecContext::b_quant_offset
float b_quant_offset
qscale offset between IP and B-frames
Definition: avcodec.h:777
AVCodecParserContext::height
int height
Definition: avcodec.h:3016
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:328
RcOverride::qscale
int qscale
Definition: avcodec.h:235
AVHWAccel::init
int(* init)(AVCodecContext *avctx)
Initialize the hwaccel private data.
Definition: avcodec.h:2269
AVCodecContext::subtitle_header
uint8_t * subtitle_header
Header containing style information for text subtitles.
Definition: avcodec.h:1789
version.h
AVSubtitleRect::linesize
int linesize[4]
Definition: avcodec.h:2373
AVCodecParserContext::cur_frame_start_index
int cur_frame_start_index
Definition: avcodec.h:2904
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:479
AVCodecContext::me_pre_cmp
int me_pre_cmp
motion estimation prepass comparison function
Definition: avcodec.h:922
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:448
avcodec_default_get_format
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
Definition: decode.c:860
avcodec_find_best_pix_fmt_of_list
enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Find the best pixel format to convert to given a certain source pixel format.
Definition: imgconvert.c:31
AVCodecContext::mb_decision
int mb_decision
macroblock decision mode
Definition: avcodec.h:962
avcodec_is_open
int avcodec_is_open(AVCodecContext *s)
Definition: avcodec.c:722
AVCodecContext::qmax
int qmax
maximum quantizer
Definition: avcodec.h:1271
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:1156
AVCodecParserContext::coded_width
int coded_width
Dimensions of the coded video.
Definition: avcodec.h:3021
AVCodecContext::delay
int delay
Codec delay.
Definition: avcodec.h:657
AVCodecContext::me_subpel_quality
int me_subpel_quality
subpel ME quality
Definition: avcodec.h:936
AVCodecContext::mb_cmp
int mb_cmp
macroblock comparison function (not supported yet)
Definition: avcodec.h:878
AVCodecContext::slice_count
int slice_count
slice count
Definition: avcodec.h:843
AVPictureStructure
AVPictureStructure
Definition: avcodec.h:2869
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:2356
AV_AUDIO_SERVICE_TYPE_NB
@ AV_AUDIO_SERVICE_TYPE_NB
Not part of ABI.
Definition: avcodec.h:226
AVCodecParserContext::parser
const struct AVCodecParser * parser
Definition: avcodec.h:2878
AVCodecContext::framerate
AVRational framerate
Definition: avcodec.h:1816
AVCodecContext::skip_top
int skip_top
Number of macroblock rows at the top which are skipped.
Definition: avcodec.h:997
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:343
AVCodecParserContext::offset
int64_t offset
byte offset from starting packet start
Definition: avcodec.h:2916
AVHWAccel
Definition: avcodec.h:2139
AVCodecParserContext::key_frame
int key_frame
Set by parser to 1 for key frames and 0 for non-key frames.
Definition: avcodec.h:2925
AVCodecContext::skip_idct
enum AVDiscard skip_idct
Skip IDCT/dequantization for selected frames.
Definition: avcodec.h:1772
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:794
AVCodecContext::nsse_weight
int nsse_weight
noise vs.
Definition: avcodec.h:1624
bsf.h
AVCodecContext::codec
const struct AVCodec * codec
Definition: avcodec.h:510
AVCodecContext::skip_frame
enum AVDiscard skip_frame
Skip decoding for selected frames.
Definition: avcodec.h:1779
AVCodecContext::thread_count
int thread_count
thread count is used to decide how many independent tasks should be passed to execute()
Definition: avcodec.h:1546
samplefmt.h
AVSubtitleRect::x
int x
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2362
AVCodecContext::initial_padding
int initial_padding
Audio only.
Definition: avcodec.h:1807
AVCodecContext::refs
int refs
number of reference frames
Definition: avcodec.h:1038
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:414
AVDISCARD_NONE
@ AVDISCARD_NONE
discard nothing
Definition: avcodec.h:207
AVCodecContext::flags
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:581
AVCodecContext::bit_rate_tolerance
int bit_rate_tolerance
number of bits the bitstream is allowed to diverge from the reference.
Definition: avcodec.h:559
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:1490
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:689
AVCodecContext::max_samples
int64_t max_samples
The number of samples per frame to maximally accept.
Definition: avcodec.h:2078
codec.h
AVCodecParserContext::dts
int64_t dts
Definition: avcodec.h:2896
AVSubtitleRect::ass
char * ass
0 terminated ASS/SSA compatible event line.
Definition: avcodec.h:2384
AVHWAccel::priv_data_size
int priv_data_size
Size of the private data to allocate in AVCodecInternal.hwaccel_priv_data.
Definition: avcodec.h:2283
avsubtitle_free
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
Definition: avcodec.c:436
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:1253
AV_PICTURE_STRUCTURE_FRAME
@ AV_PICTURE_STRUCTURE_FRAME
Definition: avcodec.h:2873
RcOverride::quality_factor
float quality_factor
Definition: avcodec.h:236
AVCodecContext::color_primaries
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
Definition: avcodec.h:1052
AVCodecParserContext::cur_frame_end
int64_t cur_frame_end[AV_PARSER_PTS_NB]
Definition: avcodec.h:2917
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:1844
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:1328
codec_id.h
AVHWAccel::alloc_frame
int(* alloc_frame)(AVCodecContext *avctx, AVFrame *frame)
Allocate a custom buffer.
Definition: avcodec.h:2185
AVCodecContext::extradata_size
int extradata_size
Definition: avcodec.h:603
AVCodecContext::has_b_frames
int has_b_frames
Size of the frame reordering buffer in the decoder.
Definition: avcodec.h:785
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
Definition: options.c:141
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:1350
AVCodecContext::global_quality
int global_quality
Global quality for codecs which cannot change it per frame.
Definition: avcodec.h:567
AVCodecParserContext::fetch_timestamp
int fetch_timestamp
Definition: avcodec.h:2901
AVHWAccel::uninit
int(* uninit)(AVCodecContext *avctx)
Uninitialize the hwaccel private data.
Definition: avcodec.h:2277
RcOverride
Definition: avcodec.h:232
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED
@ AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED
Definition: avcodec.h:219
AVCodecParserContext::last_pts
int64_t last_pts
Definition: avcodec.h:2899
AVSubtitleRect::y
int y
top left corner of pict, undefined when pict is not set
Definition: avcodec.h:2363
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:633
AVCodecContext::sub_text_format
int sub_text_format
Control the form of AVSubtitle.rects[N]->ass.
Definition: avcodec.h:1970
AVCodecContext::error_concealment
int error_concealment
error concealment flags
Definition: avcodec.h:1398
avcodec_receive_frame
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Return decoded output data from a decoder.
Definition: decode.c:628
AVSubtitleType
AVSubtitleType
Definition: avcodec.h:2341
AVCodecContext::thread_type
int thread_type
Which multithreading methods to use.
Definition: avcodec.h:1556
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1531
avcodec_fill_audio_frame
int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align)
Fill AVFrame audio data and linesize pointers.
Definition: utils.c:366
RcOverride::start_frame
int start_frame
Definition: avcodec.h:233
AVCodecParserContext::format
int format
The format of the coded data, corresponds to enum AVPixelFormat for video and for enum AVSampleFormat...
Definition: avcodec.h:3032
AVAudioServiceType
AVAudioServiceType
Definition: avcodec.h:216
AVSubtitle::pts
int64_t pts
Same as packet pts, in AV_TIME_BASE.
Definition: avcodec.h:2395
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:1990
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:2215
AVCodecContext::rc_max_rate
int64_t rc_max_rate
maximum bitrate
Definition: avcodec.h:1300
AVCodecContext::error
uint64_t error[AV_NUM_DATA_POINTERS]
error
Definition: avcodec.h:1483
AVSubtitleRect::text
char * text
0 terminated plain UTF-8 text
Definition: avcodec.h:2377
AVCPBProperties
This structure describes the bitrate properties of an encoded bitstream.
Definition: avcodec.h:430
AVDISCARD_BIDIR
@ AVDISCARD_BIDIR
discard all bidirectional frames
Definition: avcodec.h:210
AVCodecContext::codec_id
enum AVCodecID codec_id
Definition: avcodec.h:511
AVCodecContext::p_masking
float p_masking
p block masking (0-> disabled)
Definition: avcodec.h:829
arg
const char * arg
Definition: jacosubdec.c:67
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:2952
AVCodecParserContext::repeat_pict
int repeat_pict
This field is used for proper frame duration computation in lavf.
Definition: avcodec.h:2894
AV_PICTURE_STRUCTURE_BOTTOM_FIELD
@ AV_PICTURE_STRUCTURE_BOTTOM_FIELD
Definition: avcodec.h:2872
AVCodecContext::rc_buffer_size
int rc_buffer_size
decoder bitstream buffer size
Definition: avcodec.h:1285
AVCodecContext::sub_charenc
char * sub_charenc
DTS of the last frame.
Definition: avcodec.h:1854
AVDISCARD_ALL
@ AVDISCARD_ALL
discard all
Definition: avcodec.h:213
AVSubtitleRect::w
int w
width of pict, undefined when pict is not set
Definition: avcodec.h:2364
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:174
AVCodecContext::apply_cropping
int apply_cropping
Video decoding only.
Definition: avcodec.h:2048
AVCodecContext::color_range
enum AVColorRange color_range
MPEG vs JPEG YUV range.
Definition: avcodec.h:1073
AVCodecParser::codec_ids
int codec_ids[5]
Definition: avcodec.h:3036
AVCodecContext::slice_flags
int slice_flags
slice flags
Definition: avcodec.h:952
AVCodecParser::parser_close
void(* parser_close)(AVCodecParserContext *s)
Definition: avcodec.h:3045
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:156
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:1939
AVCodecContext::qblur
float qblur
amount of qscale smoothing over time (0.0-1.0)
Definition: avcodec.h:1257
AV_PICTURE_STRUCTURE_TOP_FIELD
@ AV_PICTURE_STRUCTURE_TOP_FIELD
Definition: avcodec.h:2871
AVCodecContext::bit_rate
int64_t bit_rate
the average bitrate
Definition: avcodec.h:551
AVCodecParser::split
int(* split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
Definition: avcodec.h:3046
AVHWAccel::end_frame
int(* end_frame)(AVCodecContext *avctx)
Called at the end of each frame or field picture.
Definition: avcodec.h:2240
AVCodecContext::subtitle_header_size
int subtitle_header_size
Definition: avcodec.h:1790
AVSubtitleRect::data
uint8_t * data[4]
data+linesize for the bitmap of this subtitle.
Definition: avcodec.h:2372
src
#define src
Definition: vp8dsp.c:255
AVCodecContext::trailing_padding
int trailing_padding
Audio only.
Definition: avcodec.h:1982
AVCodecContext::ildct_cmp
int ildct_cmp
interlaced DCT comparison function
Definition: avcodec.h:884
avcodec_license
const char * avcodec_license(void)
Return the libavcodec license.
Definition: avcodec.c:59
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:1585
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:1321
avcodec_open2
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
Definition: avcodec.c:135
AVCodecParserContext::flags
int flags
Definition: avcodec.h:2909
avcodec_version
unsigned avcodec_version(void)
Return the LIBAVCODEC_VERSION_INT constant.
Definition: avcodec.c:44
AV_AUDIO_SERVICE_TYPE_MAIN
@ AV_AUDIO_SERVICE_TYPE_MAIN
Definition: avcodec.h:217
AVCodecContext::me_cmp
int me_cmp
motion estimation comparison function
Definition: avcodec.h:866
AVCodecParserContext::picture_structure
enum AVPictureStructure picture_structure
Indicate whether a picture is coded as a frame, top field or bottom field.
Definition: avcodec.h:3002
AVCodecContext::trellis
int trellis
trellis RD quantization
Definition: avcodec.h:1335
AVProducerReferenceTime
This structure supplies correlation between a packet timestamp and a wall clock production time.
Definition: avcodec.h:468
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:976
AVCodecContext::level
int level
level
Definition: avcodec.h:1757
AVProducerReferenceTime::flags
int flags
Definition: avcodec.h:473
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:228
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:815
AV_AUDIO_SERVICE_TYPE_KARAOKE
@ AV_AUDIO_SERVICE_TYPE_KARAOKE
Definition: avcodec.h:225
AVCodecContext::qcompress
float qcompress
amount of qscale change between easy & hard scenes (0.0-1.0)
Definition: avcodec.h:1256
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:624
AVCodecContext::lowres
int lowres
low resolution decoding, 1-> 1/2 size, 2->1/4 size
Definition: avcodec.h:1538
av_get_bits_per_sample
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
Definition: utils.c:583
options
const OptionDef options[]
AVCodecContext::stats_out
char * stats_out
pass1 encoding statistics output buffer
Definition: avcodec.h:1342
AVDISCARD_NONKEY
@ AVDISCARD_NONKEY
discard all frames except keyframes
Definition: avcodec.h:212
AVCodecContext::rc_override
RcOverride * rc_override
Definition: avcodec.h:1293
AVCodecContext::flags2
int flags2
AV_CODEC_FLAG2_*.
Definition: avcodec.h:588
AVMediaType
AVMediaType
Definition: avutil.h:199
AVCodecParserContext::frame_offset
int64_t frame_offset
Definition: avcodec.h:2879
AVCodecContext::gop_size
int gop_size
the number of pictures in a group of pictures, or 0 for intra_only
Definition: avcodec.h:696
AVDISCARD_DEFAULT
@ AVDISCARD_DEFAULT
discard useless packets like 0 size packets in avi
Definition: avcodec.h:208
AVCodecContext::extra_hw_frames
int extra_hw_frames
Definition: avcodec.h:2062
cpu.h
AVCodecParserContext::next_frame_offset
int64_t next_frame_offset
Definition: avcodec.h:2882
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:466
AVCodecParserContext::cur_frame_offset
int64_t cur_frame_offset[AV_PARSER_PTS_NB]
Definition: avcodec.h:2905
AVCodecContext::sample_fmt
enum AVSampleFormat sample_fmt
audio sample format
Definition: avcodec.h:1106
AVCodecContext::pkt_timebase
AVRational pkt_timebase
Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
Definition: avcodec.h:1830
size
int size
Definition: twinvq_data.h:10344
AVCodecParserContext::width
int width
Dimensions of the decoded video intended for presentation.
Definition: avcodec.h:3015
AV_NUM_DATA_POINTERS
#define AV_NUM_DATA_POINTERS
Definition: frame.h:304
avcodec_get_frame_class
const attribute_deprecated AVClass * avcodec_get_frame_class(void)
Definition: options.c:202
AVCodecContext::me_range
int me_range
maximum motion estimation search range in subpel units If 0 then no limit.
Definition: avcodec.h:945
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:3041
AVCodecContext::skip_alpha
int skip_alpha
Skip processing alpha if supported by codec.
Definition: avcodec.h:1880
AVCodecContext::chroma_intra_matrix
uint16_t * chroma_intra_matrix
custom intra quantization matrix
Definition: avcodec.h:1905
AVCodecContext::skip_bottom
int skip_bottom
Number of macroblock rows at the bottom which are skipped.
Definition: avcodec.h:1004
AVCodecContext::last_predictor_count
int last_predictor_count
amount of previous MV predictors (2a+1 x 2a+1 square)
Definition: avcodec.h:915
AVCPBProperties::min_bitrate
int64_t min_bitrate
Minimum bitrate of the stream, in bits per second.
Definition: avcodec.h:440
AVSubtitle::end_display_time
uint32_t end_display_time
Definition: avcodec.h:2392
frame.h
AVSubtitleRect::type
enum AVSubtitleType type
Definition: avcodec.h:2375
SUBTITLE_TEXT
@ SUBTITLE_TEXT
Plain text, the text field must be set by the decoder and is authoritative.
Definition: avcodec.h:2350
buffer.h
attribute_deprecated
#define attribute_deprecated
Definition: attributes.h:104
SUBTITLE_NONE
@ SUBTITLE_NONE
Definition: avcodec.h:2342
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:872
AVCodecContext::pts_correction_num_faulty_dts
int64_t pts_correction_num_faulty_dts
Number of incorrect PTS values so far.
Definition: avcodec.h:1845
height
#define height
AVCodecContext::pts_correction_last_pts
int64_t pts_correction_last_pts
Number of incorrect DTS values so far.
Definition: avcodec.h:1846
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:65
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:1171
attributes.h
AVCodecInternal
Definition: internal.h:124
AVCodecContext::skip_loop_filter
enum AVDiscard skip_loop_filter
Skip loop filtering for selected frames.
Definition: avcodec.h:1765
AVCPBProperties::avg_bitrate
int64_t avg_bitrate
Average bitrate of the stream, in bits per second.
Definition: avcodec.h:445
SUBTITLE_BITMAP
@ SUBTITLE_BITMAP
A bitmap, pict will be set.
Definition: avcodec.h:2344
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:770
AVCodecParserContext::cur_frame_pts
int64_t cur_frame_pts[AV_PARSER_PTS_NB]
Definition: avcodec.h:2906
AVCodecContext::channels
int channels
number of audio channels
Definition: avcodec.h:1099
AVChromaLocation
AVChromaLocation
Location of chroma samples.
Definition: pixfmt.h:595
AVCodecParserContext::cur_frame_pos
int64_t cur_frame_pos[AV_PARSER_PTS_NB]
Position of the packet in file.
Definition: avcodec.h:2973
AVHWAccel::name
const char * name
Name of the hardware accelerated codec.
Definition: avcodec.h:2145
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:460
AVSubtitleRect::flags
int flags
Definition: avcodec.h:2386
AVCodecContext::bits_per_coded_sample
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
Definition: avcodec.h:1524
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:1438
avcodec_send_packet
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
Definition: decode.c:565
AVCodecParserContext::pos
int64_t pos
Byte position of currently parsed frame in stream.
Definition: avcodec.h:2978
AVSubtitle::format
uint16_t format
Definition: avcodec.h:2390
AVDISCARD_NONINTRA
@ AVDISCARD_NONINTRA
discard all non intra frames
Definition: avcodec.h:211
log.h
RcOverride::end_frame
int end_frame
Definition: avcodec.h:234
AVCodecContext::properties
unsigned properties
Properties of the stream that gets decoded.
Definition: avcodec.h:1928
AVCodecContext::extradata
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
Definition: avcodec.h:602
AVSubtitleRect::nb_colors
int nb_colors
number of colors in pict, undefined when pict is not set
Definition: avcodec.h:2366
AVHWAccel::decode_slice
int(* decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size)
Callback for each slice.
Definition: avcodec.h:2229
packet.h
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:220
AVCodecContext::intra_dc_precision
int intra_dc_precision
precision of the intra DC coefficient - 8
Definition: avcodec.h:990
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:502
AV_AUDIO_SERVICE_TYPE_EFFECTS
@ AV_AUDIO_SERVICE_TYPE_EFFECTS
Definition: avcodec.h:218
AVCodecContext::cutoff
int cutoff
Audio cutoff bandwidth (0 means "automatic")
Definition: avcodec.h:1142
AVCodecContext::hwaccel_flags
int hwaccel_flags
Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated decoding (if active).
Definition: avcodec.h:2021
AVCodecParserContext::cur_offset
int64_t cur_offset
Definition: avcodec.h:2880
AVCPBProperties::max_bitrate
int64_t max_bitrate
Maximum bitrate of the stream, in bits per second.
Definition: avcodec.h:435
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:3038
AVCodecContext::pts_correction_last_dts
int64_t pts_correction_last_dts
PTS of the last frame.
Definition: avcodec.h:1847
AVCodecContext::dia_size
int dia_size
ME diamond size & shape.
Definition: avcodec.h:908
AVCodecContext::dump_separator
uint8_t * dump_separator
dump format separator.
Definition: avcodec.h:1913
AVCodecContext::mb_lmin
int mb_lmin
minimum MB Lagrange multiplier
Definition: avcodec.h:1011
av_get_audio_frame_duration
int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
Return audio frame duration.
Definition: utils.c:800
AVCodecContext::idct_algo
int idct_algo
IDCT algorithm, see FF_IDCT_* below.
Definition: avcodec.h:1503
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:2012
AVCodecContext::chroma_sample_location
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples.
Definition: avcodec.h:1080
AVCodecContext::height
int height
Definition: avcodec.h:674
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:711
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:494
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:1963
AVCodecParserContext
Definition: avcodec.h:2876
AVCodecContext::sub_charenc_mode
int sub_charenc_mode
Subtitles character encoding mode.
Definition: avcodec.h:1862
AVHWAccel::decode_mb
void(* decode_mb)(struct MpegEncContext *s)
Called for every Macroblock in a slice.
Definition: avcodec.h:2260
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:974
ret
ret
Definition: filter_design.txt:187
AVSubtitleRect::h
int h
height of pict, undefined when pict is not set
Definition: avcodec.h:2365
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:1135
pixfmt.h
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal codec state / flush internal buffers.
Definition: avcodec.c:387
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
AVCPBProperties::buffer_size
int64_t buffer_size
The size of the buffer to which the ratecontrol is applied, in bits.
Definition: avcodec.h:451
AVCodecParserContext::coded_height
int coded_height
Definition: avcodec.h:3022
AVCodecContext::strict_std_compliance
int strict_std_compliance
strictly follow the standard (MPEG-4, ...).
Definition: avcodec.h:1386
AVCodecContext::opaque
void * opaque
Private data of the user, can be used to carry app specific stuff.
Definition: avcodec.h:543
pos
unsigned int pos
Definition: spdifenc.c:412
AVCodecParser::priv_data_size
int priv_data_size
Definition: avcodec.h:3037
dict.h
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:736
AV_AUDIO_SERVICE_TYPE_COMMENTARY
@ AV_AUDIO_SERVICE_TYPE_COMMENTARY
Definition: avcodec.h:222
AVCodecContext::max_qdiff
int max_qdiff
maximum quantizer difference between frames
Definition: avcodec.h:1278
AVCodecContext::dark_masking
float dark_masking
darkness masking (0-> disabled)
Definition: avcodec.h:836
AVCodecContext
main external API structure.
Definition: avcodec.h:501
AVCodecContext::active_thread_type
int active_thread_type
Which multithreading methods are in use by the codec.
Definition: avcodec.h:1565
AVCodecContext::codec_descriptor
const AVCodecDescriptor * codec_descriptor
AVCodecDescriptor.
Definition: avcodec.h:1837
c2
static const uint64_t c2
Definition: murmur3.c:52
AVCodecParserContext::field_order
enum AVFieldOrder field_order
Definition: avcodec.h:2992
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:1597
channel_layout.h
AVCodecContext::qmin
int qmin
minimum quantizer
Definition: avcodec.h:1264
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:561
AVHWAccel::frame_priv_data_size
int frame_priv_data_size
Size of per-frame hardware accelerator private data.
Definition: avcodec.h:2249
AVCodecContext::bidir_refine
int bidir_refine
Definition: avcodec.h:1024
AVCodecContext::profile
int profile
profile
Definition: avcodec.h:1631
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:2126
AVCodecContext::spatial_cplx_masking
float spatial_cplx_masking
spatial complexity masking (0-> disabled)
Definition: avcodec.h:822
AVCodecContext::i_quant_offset
float i_quant_offset
qscale offset between P and I-frames
Definition: avcodec.h:801
AVCodecContext::discard_damaged_percentage
int discard_damaged_percentage
The percentage of damaged samples to discard a frame.
Definition: avcodec.h:2070
AVCodecContext::mb_lmax
int mb_lmax
maximum MB Lagrange multiplier
Definition: avcodec.h:1018
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:2088
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:809
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:355
AVCodecContext::pre_dia_size
int pre_dia_size
ME prepass diamond size & shape.
Definition: avcodec.h:929
AVCodecContext::debug
int debug
debug
Definition: avcodec.h:1408
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:2201
AVCodecContext::coded_width
int coded_width
Bitstream width / height, may be different from width/height e.g.
Definition: avcodec.h:689
AVCodecContext::codec_type
enum AVMediaType codec_type
Definition: avcodec.h:509
AVCodecContext::seek_preroll
int seek_preroll
Number of samples to skip after a discontinuity.
Definition: avcodec.h:1887
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:115
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:761
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:1129
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:1314
AV_AUDIO_SERVICE_TYPE_DIALOGUE
@ AV_AUDIO_SERVICE_TYPE_DIALOGUE
Definition: avcodec.h:221
AVCodecContext::codec_tag
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
Definition: avcodec.h:526
codec_par.h
AVFieldOrder
AVFieldOrder
Definition: codec_par.h:36
AV_PARSER_PTS_NB
#define AV_PARSER_PTS_NB
Definition: avcodec.h:2903
AVCodecContext::slices
int slices
Number of slices.
Definition: avcodec.h:1089
AVPacket
This structure stores compressed data.
Definition: packet.h:342
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:528
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:2983
AVCodecContext::inter_matrix
uint16_t * inter_matrix
custom inter quantization matrix Must be allocated with the av_malloc() family of functions,...
Definition: avcodec.h:983
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:2298
AVCodecParser
Definition: avcodec.h:3035
AVCodecContext::rc_override_count
int rc_override_count
ratecontrol override, see RcOverride
Definition: avcodec.h:1292
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:1458
avcodec_configuration
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
Definition: avcodec.c:54
AVCodecContext::width
int width
picture width / height.
Definition: avcodec.h:674
AVCodecContext::debug_mv
attribute_deprecated int debug_mv
Definition: avcodec.h:1894
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
hwcontext.h
AVCodecParserContext::priv_data
void * priv_data
Definition: avcodec.h:2877
AVPanScan::height
int height
Definition: avcodec.h:415
AVCodecContext::sw_pix_fmt
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:1823
AVCodecParserContext::cur_frame_dts
int64_t cur_frame_dts[AV_PARSER_PTS_NB]
Definition: avcodec.h:2907
AVCodecContext::codec_whitelist
char * codec_whitelist
',' separated list of allowed decoders.
Definition: avcodec.h:1921
AVDiscard
AVDiscard
Definition: avcodec.h:204
AVDISCARD_NONREF
@ AVDISCARD_NONREF
discard all non reference
Definition: avcodec.h:209
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:541
AVCodecParserContext::last_dts
int64_t last_dts
Definition: avcodec.h:2900
codec_desc.h
int
int
Definition: ffmpeg_filter.c:156
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:81
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:1617
AVHWAccel::pix_fmt
enum AVPixelFormat pix_fmt
Supported pixel format.
Definition: avcodec.h:2166
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:859
AVSubtitle::start_display_time
uint32_t start_display_time
Definition: avcodec.h:2391
AVCodecContext::compression_level
int compression_level
Definition: avcodec.h:573
av_parser_close
void av_parser_close(AVCodecParserContext *s)
Definition: parser.c:187
nb_channels
int nb_channels
Definition: channel_layout.c:81
AVHWAccel::id
enum AVCodecID id
Codec implemented by the hardware accelerator.
Definition: avcodec.h:2159