X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Favcodec.h;h=9c1acbf4f32594231cd34784f49099989a427fac;hb=eb57c88973cacd0e451fea3a6bbaff66e6dacedd;hp=f38cab7eb7b853c0ace68b4e4861c044cbaa7348;hpb=f2cf4a6be71fbd8334ffd9778dbada5bdca44ffe;p=ffmpeg diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index f38cab7eb7b..9c1acbf4f32 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -14,15 +14,11 @@ extern "C" { #include "avutil.h" #include /* size_t */ -//FIXME the following 2 really dont belong in here -#define FFMPEG_VERSION_INT 0x000409 -#define FFMPEG_VERSION "CVS" - #define AV_STRINGIFY(s) AV_TOSTRING(s) #define AV_TOSTRING(s) #s -#define LIBAVCODEC_VERSION_INT ((51<<16)+(9<<8)+0) -#define LIBAVCODEC_VERSION 51.9.0 +#define LIBAVCODEC_VERSION_INT ((51<<16)+(13<<8)+0) +#define LIBAVCODEC_VERSION 51.13.0 #define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT #define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) @@ -105,7 +101,7 @@ enum CodecID { CODEC_ID_FFVHUFF, CODEC_ID_RV30, CODEC_ID_RV40, - CODEC_ID_VC9, + CODEC_ID_VC1, CODEC_ID_WMV3, CODEC_ID_LOCO, CODEC_ID_WNV1, @@ -122,6 +118,9 @@ enum CodecID { CODEC_ID_NUV, CODEC_ID_KMVC, CODEC_ID_FLASHSV, + CODEC_ID_CAVS, + CODEC_ID_JPEG2000, + CODEC_ID_VMNC, /* various pcm "codecs" */ CODEC_ID_PCM_S16LE= 0x10000, @@ -203,8 +202,7 @@ enum CodecID { CODEC_ID_TRUESPEECH, CODEC_ID_TTA, CODEC_ID_SMACKAUDIO, - - CODEC_ID_OGGTHEORA= 0x16000, + CODEC_ID_QCELP, /* subtitle codecs */ CODEC_ID_DVD_SUBTITLE= 0x17000, @@ -284,9 +282,6 @@ typedef struct RcOverride{ float quality_factor; } RcOverride; -/* only for ME compatiblity with old apps */ -extern int motion_estimation_method; - #define FF_MAX_B_FRAMES 16 /* encoding support @@ -369,6 +364,11 @@ extern int motion_estimation_method; * if this is not set, the codec is guranteed to never be feeded with NULL data */ #define CODEC_CAP_DELAY 0x0020 +/** + * Codec can be fed a final frame with a smaller size. + * This can be used to prevent truncation of the last audio samples. + */ +#define CODEC_CAP_SMALL_LAST_FRAME 0x0040 //the following defines may change, don't expect compatibility if you use them #define MB_TYPE_INTRA4x4 0x0001 @@ -661,19 +661,6 @@ typedef struct AVFrame { #define DEFAULT_FRAME_RATE_BASE 1001000 -/** - * Used by av_log - */ -typedef struct AVCLASS AVClass; -struct AVCLASS { - const char* class_name; - const char* (*item_name)(void*); /* actually passing a pointer to an AVCodecContext - or AVFormatContext, which begin with an AVClass. - Needed because av_log is in libavcodec and has no visibility - of AVIn/OutputFormat */ - struct AVOption *option; -}; - /** * main external api structure. */ @@ -1208,6 +1195,7 @@ typedef struct AVCodecContext { #define FF_IDCT_VP3 12 #define FF_IDCT_IPP 13 #define FF_IDCT_XVIDMMX 14 +#define FF_IDCT_CAVS 15 /** * slice count. @@ -1985,6 +1973,58 @@ typedef struct AVCodecContext { * - decoding: unused */ int b_sensitivity; + + /** + * - encoding: set by user. + * - decoding: unused + */ + int compression_level; +#define FF_COMPRESSION_DEFAULT -1 + + /** + * sets whether to use LPC mode - used by FLAC encoder + * - encoding: set by user. + * - decoding: unused. + */ + int use_lpc; + + /** + * LPC coefficient precision - used by FLAC encoder + * - encoding: set by user. + * - decoding: unused. + */ + int lpc_coeff_precision; + + /** + * - encoding: set by user. + * - decoding: unused. + */ + int min_prediction_order; + + /** + * - encoding: set by user. + * - decoding: unused. + */ + int max_prediction_order; + + /** + * search method for selecting prediction order + * - encoding: set by user. + * - decoding: unused. + */ + int prediction_order_method; + + /** + * - encoding: set by user. + * - decoding: unused. + */ + int min_partition_order; + + /** + * - encoding: set by user. + * - decoding: unused. + */ + int max_partition_order; } AVCodecContext; /** @@ -2063,8 +2103,8 @@ extern AVCodec ac3_encoder; extern AVCodec mp2_encoder; extern AVCodec mp3lame_encoder; extern AVCodec oggvorbis_encoder; -extern AVCodec oggtheora_encoder; extern AVCodec faac_encoder; +extern AVCodec flac_encoder; extern AVCodec xvid_encoder; extern AVCodec mpeg1video_encoder; extern AVCodec mpeg2video_encoder; @@ -2113,7 +2153,7 @@ extern AVCodec msmpeg4v2_decoder; extern AVCodec msmpeg4v3_decoder; extern AVCodec wmv1_decoder; extern AVCodec wmv2_decoder; -extern AVCodec vc9_decoder; +extern AVCodec vc1_decoder; extern AVCodec wmv3_decoder; extern AVCodec mpeg1video_decoder; extern AVCodec mpeg2video_decoder; @@ -2147,7 +2187,6 @@ extern AVCodec mace6_decoder; extern AVCodec huffyuv_decoder; extern AVCodec ffvhuff_decoder; extern AVCodec oggvorbis_decoder; -extern AVCodec oggtheora_decoder; extern AVCodec cyuv_decoder; extern AVCodec h264_decoder; extern AVCodec indeo3_decoder; @@ -2220,6 +2259,8 @@ extern AVCodec smacker_decoder; extern AVCodec smackaud_decoder; extern AVCodec kmvc_decoder; extern AVCodec flashsv_decoder; +extern AVCodec cavs_decoder; +extern AVCodec vmnc_decoder; /* pcm codecs */ #define PCM_CODEC(id, name) \ @@ -2412,6 +2453,17 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v */ int avcodec_open(AVCodecContext *avctx, AVCodec *codec); +/** + * Decode an audio frame. + * + * @param avctx the codec context. + * @param samples output buffer, 16 byte aligned + * @param frame_size_ptr the output buffer size in bytes, zero if no frame could be compressed + * @param buf input buffer, 16 byte aligned + * @param buf_size the input buffer size + * @return 0 if successful, -1 if not. + */ + int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, uint8_t *buf, int buf_size); @@ -2446,6 +2498,10 @@ void avcodec_default_free_buffers(AVCodecContext *s); */ char av_get_pict_type_char(int pict_type); +/** + * returns codec bits per sample + */ +int av_get_bits_per_sample(enum CodecID codec_id); /* frame parsing */ typedef struct AVCodecParserContext { @@ -2506,6 +2562,7 @@ void av_parser_close(AVCodecParserContext *s); extern AVCodecParser mpegvideo_parser; extern AVCodecParser mpeg4video_parser; +extern AVCodecParser cavsvideo_parser; extern AVCodecParser h261_parser; extern AVCodecParser h263_parser; extern AVCodecParser h264_parser; @@ -2517,11 +2574,42 @@ extern AVCodecParser dvdsub_parser; extern AVCodecParser dvbsub_parser; extern AVCodecParser aac_parser; + +typedef struct AVBitStreamFilterContext { + void *priv_data; + struct AVBitStreamFilter *filter; + AVCodecParserContext *parser; + struct AVBitStreamFilterContext *next; +} AVBitStreamFilterContext; + + +typedef struct AVBitStreamFilter { + const char *name; + int priv_data_size; + int (*filter)(AVBitStreamFilterContext *bsfc, + AVCodecContext *avctx, const char *args, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); + struct AVBitStreamFilter *next; +} AVBitStreamFilter; + +extern AVBitStreamFilter *av_first_bitstream_filter; + +void av_register_bitstream_filter(AVBitStreamFilter *bsf); +AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); +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); +void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); + +extern AVBitStreamFilter dump_extradata_bsf; +extern AVBitStreamFilter remove_extradata_bsf; +extern AVBitStreamFilter noise_bsf; + + /* memory */ -void *av_malloc(unsigned int size); void *av_mallocz(unsigned int size); -void *av_realloc(void *ptr, unsigned int size); -void av_free(void *ptr); char *av_strdup(const char *s); void av_freep(void *ptr); void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size); @@ -2531,9 +2619,6 @@ void av_free_static(void); void *av_mallocz_static(unsigned int size); void *av_realloc_static(void *ptr, unsigned int size); -/* add by bero : in adx.c */ -int is_adx(const unsigned char *buf,size_t bufsize); - void img_copy(AVPicture *dst, const AVPicture *src, int pix_fmt, int width, int height); @@ -2543,26 +2628,6 @@ int img_crop(AVPicture *dst, const AVPicture *src, int img_pad(AVPicture *dst, const AVPicture *src, int height, int width, int pix_fmt, int padtop, int padbottom, int padleft, int padright, int *color); -/* av_log API */ - -#include - -#define AV_LOG_QUIET -1 -#define AV_LOG_ERROR 0 -#define AV_LOG_INFO 1 -#define AV_LOG_DEBUG 2 - -#ifdef __GNUC__ -extern void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4))); -#else -extern void av_log(void*, int level, const char *fmt, ...); -#endif - -extern void av_vlog(void*, int level, const char *fmt, va_list); -extern int av_log_get_level(void); -extern void av_log_set_level(int); -extern void av_log_set_callback(void (*)(void*, int, const char*, va_list)); - /* endian macros */ #if !defined(BE_16) || !defined(BE_32) || !defined(LE_16) || !defined(LE_32) #define BE_16(x) ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1])