X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Favcodec.h;h=8b6340029fdcc65dc20b28dab1238f32995ad33e;hb=b339f0c6be5f4c15d8136ef180b148550f0071cf;hp=bcf9fb6467b9493a4b47fb766aa072e30815a8bb;hpb=f9a9b3509c28ef78cd9d0e59c4263442d1205099;p=ffmpeg diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index bcf9fb6467b..8b6340029fd 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -27,14 +27,18 @@ */ -#include "avutil.h" -#include /* size_t */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define LIBAVCODEC_VERSION_INT ((51<<16)+(49<<8)+0) -#define LIBAVCODEC_VERSION 51.49.0 +#include "libavutil/avutil.h" + +#define LIBAVCODEC_VERSION_MAJOR 51 +#define LIBAVCODEC_VERSION_MINOR 57 +#define LIBAVCODEC_VERSION_MICRO 2 + +#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) +#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) #define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT #define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) @@ -57,6 +61,8 @@ */ enum CodecID { CODEC_ID_NONE, + + /* video codecs */ CODEC_ID_MPEG1VIDEO, CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding CODEC_ID_MPEG2VIDEO_XVMC, @@ -171,6 +177,15 @@ enum CodecID { CODEC_ID_VB, CODEC_ID_PCX, CODEC_ID_SUNRAST, + CODEC_ID_INDEO4, + CODEC_ID_INDEO5, + CODEC_ID_MIMIC, + CODEC_ID_RL2, + CODEC_ID_8SVX_EXP, + CODEC_ID_8SVX_FIB, + CODEC_ID_ESCAPE124, + CODEC_ID_DIRAC, + CODEC_ID_BFI, /* various PCM "codecs" */ CODEC_ID_PCM_S16LE= 0x10000, @@ -192,6 +207,7 @@ enum CodecID { CODEC_ID_PCM_S24DAUD, CODEC_ID_PCM_ZORK, CODEC_ID_PCM_S16LE_PLANAR, + CODEC_ID_PCM_DVD, /* various ADPCM codecs */ CODEC_ID_ADPCM_IMA_QT= 0x11000, @@ -220,6 +236,7 @@ enum CodecID { CODEC_ID_ADPCM_IMA_EA_SEAD, CODEC_ID_ADPCM_IMA_EA_EACS, CODEC_ID_ADPCM_EA_XAS, + CODEC_ID_ADPCM_EA_MAXIS_XA, /* AMR */ CODEC_ID_AMR_NB= 0x12000, @@ -235,6 +252,7 @@ enum CodecID { CODEC_ID_XAN_DPCM, CODEC_ID_SOL_DPCM, + /* audio codecs */ CODEC_ID_MP2= 0x15000, CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 CODEC_ID_AAC, @@ -276,6 +294,11 @@ enum CodecID { CODEC_ID_APE, CODEC_ID_NELLYMOSER, CODEC_ID_MUSEPACK8, + CODEC_ID_SPEEX, + CODEC_ID_WMAVOICE, + CODEC_ID_WMAPRO, + CODEC_ID_WMALOSSLESS, + CODEC_ID_ATRAC3P, /* subtitle codecs */ CODEC_ID_DVD_SUBTITLE= 0x17000, @@ -283,6 +306,10 @@ enum CodecID { CODEC_ID_TEXT, ///< raw UTF-8 text CODEC_ID_XSUB, CODEC_ID_SSA, + CODEC_ID_MOV_TEXT, + + /* other specific kind of codecs (generally used for attachments) */ + CODEC_ID_TTF= 0x18000, CODEC_ID_MPEG2TS= 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS * stream (only used by libavformat) */ @@ -300,6 +327,7 @@ enum CodecType { CODEC_TYPE_AUDIO, CODEC_TYPE_DATA, CODEC_TYPE_SUBTITLE, + CODEC_TYPE_ATTACHMENT, CODEC_TYPE_NB }; @@ -347,6 +375,7 @@ enum Motion_Est_ID { ME_HEX, ///< hexagon based search ME_UMH, ///< uneven multi-hexagon search ME_ITER, ///< iterative search + ME_TESA, ///< transformed exhaustive search algorithm }; enum AVDiscard{ @@ -415,7 +444,7 @@ typedef struct RcOverride{ #define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 #define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation #define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< Will reserve space for SVCD scan offset user data. -#define CODEC_FLAG_CLOSED_GOP ((int)0x80000000) +#define CODEC_FLAG_CLOSED_GOP 0x80000000 #define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. #define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. #define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. @@ -433,6 +462,7 @@ typedef struct RcOverride{ #define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping #define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. #define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2 nonlinear quantizer. +#define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible /* Unsupported options : * Syntax Arithmetic coding (SAC) @@ -584,6 +614,8 @@ typedef struct AVPanScan{ \ /**\ * is this picture used as reference\ + * The values for this are the same as the MpegEncContext.picture_structure\ + * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.\ * - encoding: unused\ * - decoding: Set by libavcodec. (before get_buffer() call)).\ */\ @@ -734,12 +766,13 @@ typedef struct AVPanScan{ #define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. -#define FF_I_TYPE 1 // Intra -#define FF_P_TYPE 2 // Predicted -#define FF_B_TYPE 3 // Bi-dir predicted -#define FF_S_TYPE 4 // S(GMC)-VOP MPEG4 -#define FF_SI_TYPE 5 -#define FF_SP_TYPE 6 +#define FF_I_TYPE 1 ///< Intra +#define FF_P_TYPE 2 ///< Predicted +#define FF_B_TYPE 3 ///< Bi-dir predicted +#define FF_S_TYPE 4 ///< S(GMC)-VOP MPEG4 +#define FF_SI_TYPE 5 ///< Switching Intra +#define FF_SP_TYPE 6 ///< Switching Predicted +#define FF_BI_TYPE 7 #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. @@ -773,7 +806,7 @@ typedef struct AVCodecContext { * information on struct for av_log * - set by avcodec_alloc_context */ - AVClass *av_class; + const AVClass *av_class; /** * the average bitrate * - encoding: Set by user; unused for constant quantizer encoding. @@ -809,7 +842,7 @@ typedef struct AVCodecContext { /** * Motion estimation algorithm used for video coding. * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), - * 8 (umh), 9 (iter) [7, 8 are x264 specific, 9 is snow specific] + * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] * - encoding: MUST be set by user. * - decoding: unused */ @@ -891,7 +924,7 @@ typedef struct AVCodecContext { /* audio only */ int sample_rate; ///< samples per second - int channels; + int channels; ///< number of audio channels /** * audio sample format @@ -1119,7 +1152,7 @@ typedef struct AVCodecContext { int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); /** - * Called to release buffers which where allocated with get_buffer. + * Called to release buffers which were allocated with get_buffer. * A released buffer can be reused in get_buffer(). * pic.data[*] must be set to NULL. * - encoding: unused @@ -1190,7 +1223,7 @@ typedef struct AVCodecContext { * - encoding: Set by user * - decoding: unused */ - char *rc_eq; + const char *rc_eq; /** * maximum bitrate @@ -1318,6 +1351,7 @@ typedef struct AVCodecContext { #define FF_IDCT_SIMPLEARMV6 17 #define FF_IDCT_SIMPLEVIS 18 #define FF_IDCT_WMV2 19 +#define FF_IDCT_FAAN 20 /** * slice count @@ -1668,7 +1702,7 @@ typedef struct AVCodecContext { int mb_decision; #define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp #define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits -#define FF_MB_DECISION_RD 2 ///< rate distoration +#define FF_MB_DECISION_RD 2 ///< rate distortion /** * custom intra quantization matrix @@ -2195,12 +2229,22 @@ typedef struct AVCodec { int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); int (*close)(AVCodecContext *); int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, - uint8_t *buf, int buf_size); + const uint8_t *buf, int buf_size); + /** + * Codec capabilities. + * see CODEC_CAP_* + */ int capabilities; struct AVCodec *next; + /** + * Flush buffers. + * Will be called when seeking + */ void (*flush)(AVCodecContext *); - const AVRational *supported_framerates; ///array of supported framerates, or NULL if any, array is terminated by {0,0} - const enum PixelFormat *pix_fmts; ///array of supported pixel formats, or NULL if unknown, array is terminanted by -1 + const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} + const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 + const char *long_name; ///< descriptive name for the codec, meant to be more human readable than \p name + const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 } AVCodec; /** @@ -2606,7 +2650,7 @@ int avcodec_open(AVCodecContext *avctx, AVCodec *codec); */ attribute_deprecated int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, - uint8_t *buf, int buf_size); + const uint8_t *buf, int buf_size); /** * Decodes an audio frame from \p buf into \p samples. @@ -2646,7 +2690,7 @@ attribute_deprecated int avcodec_decode_audio(AVCodecContext *avctx, int16_t *sa */ int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, - uint8_t *buf, int buf_size); + const uint8_t *buf, int buf_size); /** * Decodes a video frame from \p buf into \p picture. @@ -2681,7 +2725,7 @@ int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, */ int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, - uint8_t *buf, int buf_size); + const uint8_t *buf, int buf_size); /* Decode a subtitle message. Return -1 if error, otherwise return the * number of bytes used. If no subtitle could be decompressed, @@ -2708,6 +2752,8 @@ int avcodec_parse_frame(AVCodecContext *avctx, uint8_t **pdata, * @param[in] samples the input buffer containing the samples * The number of samples read from this buffer is frame_size*channels, * both of which are defined in \p avctx. + * For PCM audio the number of samples read from \p samples is equal to + * \p buf_size * input_sample_size / output_sample_size. * @return On error a negative value is returned, on success zero or the number * of bytes used to encode the data read from the input buffer. */ @@ -2778,7 +2824,7 @@ typedef struct AVCodecParserContext { int64_t frame_offset; /* offset of the current frame */ int64_t cur_offset; /* current offset (incremented by each av_parser_parse()) */ - int64_t last_frame_offset; /* offset of the last frame */ + int64_t next_frame_offset; /* offset of the next frame */ /* video info */ int pict_type; /* XXX: Put it back in AVCodecContext. */ int repeat_pict; /* XXX: Put it back in AVCodecContext. */ @@ -2800,7 +2846,7 @@ typedef struct AVCodecParserContext { #define PARSER_FLAG_COMPLETE_FRAMES 0x0001 int64_t offset; ///< byte offset from starting packet start - int64_t last_offset; + int64_t cur_frame_end[AV_PARSER_PTS_NB]; } AVCodecParserContext; typedef struct AVCodecParser { @@ -2874,30 +2920,6 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); */ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); -/* for static data only */ - -/** - * Frees all static arrays and resets their pointers to 0. - * Call this function to release all statically allocated tables. - * - * @deprecated. Code which uses av_free_static is broken/misdesigned - * and should correctly use static arrays - * - */ -attribute_deprecated void av_free_static(void); - -/** - * Allocation of static arrays. - * - * @warning Do not use for normal allocation. - * - * @param[in] size The amount of memory you need in bytes. - * @return block of memory of the requested size - * @deprecated. Code which uses av_mallocz_static is broken/misdesigned - * and should correctly use static arrays - */ -attribute_deprecated void *av_mallocz_static(unsigned int size); - /** * Copy image 'src' to 'dst'. */