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