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