summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/avcodec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libffmpeg/libavcodec/avcodec.h')
-rw-r--r--src/libffmpeg/libavcodec/avcodec.h445
1 files changed, 311 insertions, 134 deletions
diff --git a/src/libffmpeg/libavcodec/avcodec.h b/src/libffmpeg/libavcodec/avcodec.h
index 26fee27ef..064f58df2 100644
--- a/src/libffmpeg/libavcodec/avcodec.h
+++ b/src/libffmpeg/libavcodec/avcodec.h
@@ -15,16 +15,9 @@ extern "C" {
#include "rational.h"
#include <sys/types.h> /* size_t */
-/* FIXME: We cannot use ffmpeg's XvMC capabilities, since that would require
- * linking the ffmpeg plugin against XvMC libraries, which is a bad thing,
- * since they are output dependend.
- * The correct fix would be to reimplement the XvMC functions libavcodec uses
- * and do the necessary talking with our XvMC output plugin there. */
-#undef HAVE_XVMC
-
-#define FFMPEG_VERSION_INT 0x000408
-#define FFMPEG_VERSION "0.4.8"
-#define LIBAVCODEC_BUILD 4715
+#define FFMPEG_VERSION_INT 0x000409
+#define FFMPEG_VERSION "0.4.9-pre1"
+#define LIBAVCODEC_BUILD 4752
#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVCODEC_VERSION FFMPEG_VERSION
@@ -36,18 +29,22 @@ extern "C" {
#define AV_NOPTS_VALUE int64_t_C(0x8000000000000000)
#define AV_TIME_BASE 1000000
+/* FIXME: We cannot use ffmpeg's XvMC capabilities, since that would require
+ * linking the ffmpeg plugin against XvMC libraries, which is a bad thing,
+ * since they are output dependend.
+ * The correct fix would be to reimplement the XvMC functions libavcodec uses
+ * and do the necessary talking with our XvMC output plugin there. */
+#undef HAVE_XVMC
+
enum CodecID {
CODEC_ID_NONE,
CODEC_ID_MPEG1VIDEO,
CODEC_ID_MPEG2VIDEO, /* prefered ID for MPEG Video 1 or 2 decoding */
CODEC_ID_MPEG2VIDEO_XVMC,
+ CODEC_ID_H261,
CODEC_ID_H263,
CODEC_ID_RV10,
CODEC_ID_RV20,
- CODEC_ID_MP2,
- CODEC_ID_MP3, /* prefered ID for MPEG Audio layer 1, 2 or3 decoding */
- CODEC_ID_VORBIS,
- CODEC_ID_AC3,
CODEC_ID_MJPEG,
CODEC_ID_MJPEGB,
CODEC_ID_LJPEG,
@@ -65,19 +62,12 @@ enum CodecID {
CODEC_ID_SVQ1,
CODEC_ID_SVQ3,
CODEC_ID_DVVIDEO,
- CODEC_ID_DVAUDIO,
- CODEC_ID_WMAV1,
- CODEC_ID_WMAV2,
- CODEC_ID_MACE3,
- CODEC_ID_MACE6,
CODEC_ID_HUFFYUV,
CODEC_ID_CYUV,
CODEC_ID_H264,
CODEC_ID_INDEO3,
CODEC_ID_VP3,
CODEC_ID_THEORA,
- CODEC_ID_AAC,
- CODEC_ID_MPEG4AAC,
CODEC_ID_ASV1,
CODEC_ID_ASV2,
CODEC_ID_FFV1,
@@ -100,13 +90,33 @@ enum CodecID {
CODEC_ID_FLIC,
CODEC_ID_TRUEMOTION1,
CODEC_ID_VMDVIDEO,
- CODEC_ID_VMDAUDIO,
CODEC_ID_MSZH,
CODEC_ID_ZLIB,
CODEC_ID_QTRLE,
+ CODEC_ID_SNOW,
+ CODEC_ID_TSCC,
+ CODEC_ID_ULTI,
+ CODEC_ID_QDRAW,
+ CODEC_ID_VIXL,
+ CODEC_ID_QPEG,
+ CODEC_ID_XVID,
+ CODEC_ID_PNG,
+ CODEC_ID_PPM,
+ CODEC_ID_PBM,
+ CODEC_ID_PGM,
+ CODEC_ID_PGMYUV,
+ CODEC_ID_PAM,
+ CODEC_ID_FFVHUFF,
+ CODEC_ID_RV30,
+ CODEC_ID_RV40,
+ CODEC_ID_VC9,
+ CODEC_ID_WMV3,
+ CODEC_ID_LOCO,
+ CODEC_ID_WNV1,
+ CODEC_ID_AASC,
/* various pcm "codecs" */
- CODEC_ID_PCM_S16LE,
+ CODEC_ID_PCM_S16LE= 0x10000,
CODEC_ID_PCM_S16BE,
CODEC_ID_PCM_U16LE,
CODEC_ID_PCM_U16BE,
@@ -116,7 +126,7 @@ enum CodecID {
CODEC_ID_PCM_ALAW,
/* various adpcm codecs */
- CODEC_ID_ADPCM_IMA_QT,
+ CODEC_ID_ADPCM_IMA_QT= 0x11000,
CODEC_ID_ADPCM_IMA_WAV,
CODEC_ID_ADPCM_IMA_DK3,
CODEC_ID_ADPCM_IMA_DK4,
@@ -128,23 +138,48 @@ enum CodecID {
CODEC_ID_ADPCM_ADX,
CODEC_ID_ADPCM_EA,
CODEC_ID_ADPCM_G726,
+ CODEC_ID_ADPCM_CT,
+ CODEC_ID_ADPCM_SWF,
- /* AMR */
- CODEC_ID_AMR_NB,
+ /* AMR */
+ CODEC_ID_AMR_NB= 0x12000,
CODEC_ID_AMR_WB,
/* RealAudio codecs*/
- CODEC_ID_RA_144,
+ CODEC_ID_RA_144= 0x13000,
CODEC_ID_RA_288,
/* various DPCM codecs */
- CODEC_ID_ROQ_DPCM,
+ CODEC_ID_ROQ_DPCM= 0x14000,
CODEC_ID_INTERPLAY_DPCM,
CODEC_ID_XAN_DPCM,
+ CODEC_ID_SOL_DPCM,
+ CODEC_ID_MP2= 0x15000,
+ CODEC_ID_MP3, /* prefered ID for MPEG Audio layer 1, 2 or3 decoding */
+ CODEC_ID_AAC,
+ CODEC_ID_MPEG4AAC,
+ CODEC_ID_AC3,
+ CODEC_ID_DTS,
+ CODEC_ID_VORBIS,
+ CODEC_ID_DVAUDIO,
+ CODEC_ID_WMAV1,
+ CODEC_ID_WMAV2,
+ CODEC_ID_MACE3,
+ CODEC_ID_MACE6,
+ CODEC_ID_VMDAUDIO,
+ CODEC_ID_SONIC,
+ CODEC_ID_SONIC_LS,
CODEC_ID_FLAC,
+ CODEC_ID_MP3ADU,
+ CODEC_ID_MP3ON4,
+ CODEC_ID_SHORTEN,
+ CODEC_ID_ALAC,
+ CODEC_ID_WESTWOOD_SND1,
+
+ CODEC_ID_OGGTHEORA= 0x16000,
- CODEC_ID_MPEG2TS, /* _FAKE_ codec to indicate a raw MPEG2 transport
+ CODEC_ID_MPEG2TS= 0x20000, /* _FAKE_ codec to indicate a raw MPEG2 transport
stream (only used by libavformat) */
};
@@ -178,7 +213,7 @@ enum CodecType {
*/
enum PixelFormat {
PIX_FMT_YUV420P, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples)
- PIX_FMT_YUV422,
+ PIX_FMT_YUV422, ///< Packed pixel, Y0 Cb Y1 Cr
PIX_FMT_RGB24, ///< Packed pixel, 3 bytes per pixel, RGBRGB...
PIX_FMT_BGR24, ///< Packed pixel, 3 bytes per pixel, BGRBGR...
PIX_FMT_YUV422P, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)
@@ -197,12 +232,17 @@ enum PixelFormat {
PIX_FMT_YUVJ444P, ///< Planar YUV 4:4:4 full scale (jpeg)
PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing(xvmc_render.h)
PIX_FMT_XVMC_MPEG2_IDCT,
+ PIX_FMT_UYVY422, ///< Packed pixel, Cb Y0 Cr Y1
+ PIX_FMT_UYVY411, ///< Packed pixel, Cb Y0 Y1 Cr Y2 Y3
PIX_FMT_NB,
};
/* currently unused, may be used if 24/32 bits samples ever supported */
enum SampleFormat {
SAMPLE_FMT_S16 = 0, ///< signed 16 bits
+ SAMPLE_FMT_S32, ///< signed 32 bits
+ SAMPLE_FMT_FLT, ///< float
+ SAMPLE_FMT_DBL, ///< double
};
/* in bytes */
@@ -217,6 +257,12 @@ enum SampleFormat {
*/
#define FF_INPUT_BUFFER_PADDING_SIZE 8
+/**
+ * minimum encoding buffer size.
+ * used to avoid some checks during header writing
+ */
+#define FF_MIN_BUFFER_SIZE 16384
+
/* motion estimation type, EPZS by default */
enum Motion_Est_ID {
ME_ZERO = 1,
@@ -227,6 +273,14 @@ enum Motion_Est_ID {
ME_X1
};
+enum AVRounding {
+ AV_ROUND_ZERO = 0, ///< round toward zero
+ AV_ROUND_INF = 1, ///< round away from zero
+ AV_ROUND_DOWN = 2, ///< round toward -infinity
+ AV_ROUND_UP = 3, ///< round toward +infinity
+ AV_ROUND_NEAR_INF = 5, ///< round to nearest and halfway cases away from zero
+};
+
typedef struct RcOverride{
int start_frame;
int end_frame;
@@ -281,6 +335,10 @@ extern int motion_estimation_method;
#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 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
+
/* Unsupported options :
* Syntax Arithmetic coding (SAC)
* Reference Picture Selection
@@ -300,6 +358,11 @@ extern int motion_estimation_method;
#define CODEC_CAP_TRUNCATED 0x0008
/* codec can export data for HW decoding (XvMC) */
#define CODEC_CAP_HWACCEL 0x0010
+/**
+ * codec has a non zero delay and needs to be feeded with NULL at the end to get the delayed data.
+ * if this is not set, the codec is guranteed to never be feeded with NULL data
+ */
+#define CODEC_CAP_DELAY 0x0020
//the following defines might change, so dont expect compatibility if u use them
#define MB_TYPE_INTRA4x4 0x0001
@@ -448,7 +511,14 @@ typedef struct AVPanScan{
uint8_t *mbskip_table;\
\
/**\
- * Motion vector table\
+ * Motion vector table.\
+ * @code\
+ * example:\
+ * int mv_sample_log2= 4 - motion_subsample_log2;\
+ * int mb_width= (width+15)>>4;\
+ * int mv_stride= (mb_width << mv_sample_log2) + 1;\
+ * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];\
+ * @endcode\
* - encoding: set by user\
* - decoding: set by lavc\
*/\
@@ -463,7 +533,8 @@ typedef struct AVPanScan{
uint32_t *mb_type;\
\
/**\
- * Macroblock size: (0->16x16, 1->8x8, 2-> 4x4, 3-> 2x2)\
+ * log2 of the size of the block which a single vector in motion_val represents: \
+ * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)\
* - encoding: unused\
* - decoding: set by lavc\
*/\
@@ -645,6 +716,8 @@ typedef struct AVCodecContext {
* mjpeg: huffman tables
* rv10: additional flags
* mpeg4: global headers (they can be in the bitstream or here)
+ * the allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger
+ * then extradata_size to avoid prolems if its read with the bitstream reader
* - encoding: set/allocated/freed by lavc.
* - decoding: set/allocated/freed by user.
*/
@@ -662,9 +735,11 @@ typedef struct AVCodecContext {
int frame_rate;
/**
- * width / height.
+ * picture width / height.
* - encoding: MUST be set by user.
- * - decoding: set by user if known, codec should override / dynamically change if needed
+ * - decoding: set by lavc.
+ * Note, for compatibility its possible to set this instead of
+ * coded_width/height before decoding
*/
int width, height;
@@ -679,10 +754,7 @@ typedef struct AVCodecContext {
/**
* pixel format, see PIX_FMT_xxx.
- * - encoding: FIXME: used by ffmpeg to decide whether an pix_fmt
- * conversion is in order. This only works for
- * codecs with one supported pix_fmt, we should
- * do something for a generic case as well.
+ * - encoding: set by user.
* - decoding: set by lavc.
*/
enum PixelFormat pix_fmt;
@@ -714,7 +786,13 @@ typedef struct AVCodecContext {
/* audio only */
int sample_rate; ///< samples per sec
int channels;
- int sample_fmt; ///< sample format, currenly unused
+
+ /**
+ * audio sample format.
+ * - encoding: set by user.
+ * - decoding: set by lavc.
+ */
+ enum SampleFormat sample_fmt; ///< sample format, currenly unused
/* the following data should not be initialized */
int frame_size; ///< in samples, initialized when calling 'init'
@@ -798,8 +876,10 @@ typedef struct AVCodecContext {
/* The RTP callcack: This function is called */
/* every time the encoder as a packet to send */
/* Depends on the encoder if the data starts */
- /* with a Start Code (it should) H.263 does */
- void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int packet_number);
+ /* with a Start Code (it should) H.263 does. */
+ /* mb_nb contains the number of macroblocks */
+ /* encoded in the RTP payload */
+ void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
/* statistics, used for 2-pass encoding */
int mv_bits;
@@ -839,7 +919,7 @@ typedef struct AVCodecContext {
/**
* workaround bugs in encoders which sometimes cannot be detected automatically.
- * - encoding: unused
+ * - encoding: set by user
* - decoding: set by user
*/
int workaround_bugs;
@@ -857,6 +937,7 @@ typedef struct AVCodecContext {
#define FF_BUG_EDGE 1024
#define FF_BUG_HPEL_CHROMA 2048
#define FF_BUG_DC_CLIP 4096
+#define FF_BUG_MS 8192 ///< workaround various bugs in microsofts broken decoders
//#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100%
/**
@@ -921,8 +1002,8 @@ typedef struct AVCodecContext {
void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic);
/**
- * is 1 if the decoded stream contains b frames, 0 otherwise.
- * - encoding: unused
+ * if 1 the stream has a 1 frame delay during decoding.
+ * - encoding: set by lavc
* - decoding: set by lavc
*/
int has_b_frames;
@@ -1096,6 +1177,7 @@ typedef struct AVCodecContext {
#define FF_IDCT_ALTIVEC 8
#define FF_IDCT_SH4 9
#define FF_IDCT_SIMPLEARM 10
+#define FF_IDCT_H264 11
/**
* slice count.
@@ -1136,6 +1218,7 @@ typedef struct AVCodecContext {
#define FF_MM_MMXEXT 0x0002 /* SSE integer functions or AMD MMX ext */
#define FF_MM_SSE 0x0008 /* SSE functions */
#define FF_MM_SSE2 0x0010 /* PIV SSE2 functions */
+#define FF_MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */
#endif /* HAVE_MMX */
/**
@@ -1211,14 +1294,14 @@ typedef struct AVCodecContext {
/**
* minimum MB quantizer.
- * - encoding: set by user.
+ * - encoding: unused
* - decoding: unused
*/
int mb_qmin;
/**
* maximum MB quantizer.
- * - encoding: set by user.
+ * - encoding: unused
* - decoding: unused
*/
int mb_qmax;
@@ -1257,6 +1340,10 @@ typedef struct AVCodecContext {
#define FF_CMP_ZERO 7
#define FF_CMP_VSAD 8
#define FF_CMP_VSSE 9
+#define FF_CMP_NSSE 10
+#define FF_CMP_W53 11
+#define FF_CMP_W97 12
+#define FF_CMP_DCTMAX 13
#define FF_CMP_CHROMA 256
/**
@@ -1596,11 +1683,120 @@ typedef struct AVCodecContext {
int mb_threshold;
/**
- *
+ * precision of the intra dc coefficient - 8.
* - encoding: set by user
* - decoding: unused
*/
int intra_dc_precision;
+
+ /**
+ * noise vs. sse weight for the nsse comparsion function.
+ * - encoding: set by user
+ * - decoding: unused
+ */
+ int nsse_weight;
+
+ /**
+ * number of macroblock rows at the top which are skiped.
+ * - encoding: unused
+ * - decoding: set by user
+ */
+ int skip_top;
+
+ /**
+ * number of macroblock rows at the bottom which are skiped.
+ * - encoding: unused
+ * - decoding: set by user
+ */
+ int skip_bottom;
+
+ /**
+ * profile
+ * - encoding: set by user
+ * - decoding: set by lavc
+ */
+ int profile;
+#define FF_PROFILE_UNKNOWN -99
+
+ /**
+ * level
+ * - encoding: set by user
+ * - decoding: set by lavc
+ */
+ int level;
+#define FF_LEVEL_UNKNOWN -99
+
+ /**
+ * low resolution decoding. 1-> 1/2 size, 2->1/4 size
+ * - encoding: unused
+ * - decoding: set by user
+ */
+ int lowres;
+
+ /**
+ * bitsream width / height. may be different from width/height if lowres
+ * or other things are used
+ * - encoding: unused
+ * - decoding: set by user before init if known, codec should override / dynamically change if needed
+ */
+ int coded_width, coded_height;
+
+ /**
+ * frame skip threshold
+ * - encoding: set by user
+ * - decoding: unused
+ */
+ int frame_skip_threshold;
+
+ /**
+ * frame skip factor
+ * - encoding: set by user
+ * - decoding: unused
+ */
+ int frame_skip_factor;
+
+ /**
+ * frame skip exponent
+ * - encoding: set by user
+ * - decoding: unused
+ */
+ int frame_skip_exp;
+
+ /**
+ * frame skip comparission function
+ * - encoding: set by user.
+ * - decoding: unused
+ */
+ int frame_skip_cmp;
+
+ /**
+ * border processing masking. raises the quantizer for mbs on the borders
+ * of the picture.
+ * - encoding: set by user
+ * - decoding: unused
+ */
+ float border_masking;
+
+ /**
+ * minimum MB lagrange multipler.
+ * - encoding: set by user.
+ * - decoding: unused
+ */
+ int mb_lmin;
+
+ /**
+ * maximum MB lagrange multipler.
+ * - encoding: set by user.
+ * - decoding: unused
+ */
+ int mb_lmax;
+
+ /**
+ *
+ * - encoding: set by user.
+ * - decoding: unused
+ */
+ int me_penalty_compensation;
} AVCodecContext;
@@ -1640,21 +1836,12 @@ typedef struct AVOption {
} AVOption;
/**
- * Parse option(s) and sets fields in passed structure
- * @param strct structure where the parsed results will be written
- * @param list list with AVOptions
- * @param opts string with options for parsing
- */
-int avoption_parse(void* strct, const AVOption* list, const char* opts);
-
-
-/**
* AVCodec.
*/
typedef struct AVCodec {
const char *name;
enum CodecType type;
- int id;
+ enum CodecID id;
int priv_data_size;
int (*init)(AVCodecContext *);
int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);
@@ -1662,7 +1849,7 @@ typedef struct AVCodec {
int (*decode)(AVCodecContext *, void *outdata, int *outdata_size,
uint8_t *buf, int buf_size);
int capabilities;
- const AVOption *options;
+ void *dummy; // FIXME remove next time we break binary compatibility
struct AVCodec *next;
void (*flush)(AVCodecContext *);
const AVRational *supported_framerates; ///array of supported framerates, or NULL if any, array is terminated by {0,0}
@@ -1703,9 +1890,12 @@ 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 xvid_encoder;
extern AVCodec mpeg1video_encoder;
extern AVCodec mpeg2video_encoder;
+extern AVCodec h261_encoder;
extern AVCodec h263_encoder;
extern AVCodec h263p_encoder;
extern AVCodec flv_encoder;
@@ -1714,6 +1904,12 @@ extern AVCodec rv20_encoder;
extern AVCodec dvvideo_encoder;
extern AVCodec mjpeg_encoder;
extern AVCodec ljpeg_encoder;
+extern AVCodec png_encoder;
+extern AVCodec ppm_encoder;
+extern AVCodec pgm_encoder;
+extern AVCodec pgmyuv_encoder;
+extern AVCodec pbm_encoder;
+extern AVCodec pam_encoder;
extern AVCodec mpeg4_encoder;
extern AVCodec msmpeg4v1_encoder;
extern AVCodec msmpeg4v2_encoder;
@@ -1721,22 +1917,30 @@ extern AVCodec msmpeg4v3_encoder;
extern AVCodec wmv1_encoder;
extern AVCodec wmv2_encoder;
extern AVCodec huffyuv_encoder;
+extern AVCodec ffvhuff_encoder;
extern AVCodec h264_encoder;
extern AVCodec asv1_encoder;
extern AVCodec asv2_encoder;
extern AVCodec vcr1_encoder;
extern AVCodec ffv1_encoder;
+extern AVCodec snow_encoder;
extern AVCodec mdec_encoder;
extern AVCodec zlib_encoder;
+extern AVCodec sonic_encoder;
+extern AVCodec sonic_ls_encoder;
extern AVCodec svq1_encoder;
+extern AVCodec x264_encoder;
extern AVCodec h263_decoder;
+extern AVCodec h261_decoder;
extern AVCodec mpeg4_decoder;
extern AVCodec msmpeg4v1_decoder;
extern AVCodec msmpeg4v2_decoder;
extern AVCodec msmpeg4v3_decoder;
extern AVCodec wmv1_decoder;
extern AVCodec wmv2_decoder;
+extern AVCodec vc9_decoder;
+extern AVCodec wmv3_decoder;
extern AVCodec mpeg1video_decoder;
extern AVCodec mpeg2video_decoder;
extern AVCodec mpegvideo_decoder;
@@ -1745,6 +1949,8 @@ extern AVCodec h263i_decoder;
extern AVCodec flv_decoder;
extern AVCodec rv10_decoder;
extern AVCodec rv20_decoder;
+extern AVCodec rv30_decoder;
+extern AVCodec rv40_decoder;
extern AVCodec svq1_decoder;
extern AVCodec svq3_decoder;
extern AVCodec dvvideo_decoder;
@@ -1753,12 +1959,17 @@ extern AVCodec wmav2_decoder;
extern AVCodec mjpeg_decoder;
extern AVCodec mjpegb_decoder;
extern AVCodec sp5x_decoder;
+extern AVCodec png_decoder;
extern AVCodec mp2_decoder;
extern AVCodec mp3_decoder;
+extern AVCodec mp3adu_decoder;
+extern AVCodec mp3on4_decoder;
extern AVCodec mace3_decoder;
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;
@@ -1775,6 +1986,7 @@ extern AVCodec asv2_decoder;
extern AVCodec vcr1_decoder;
extern AVCodec cljr_decoder;
extern AVCodec ffv1_decoder;
+extern AVCodec snow_decoder;
extern AVCodec fourxm_decoder;
extern AVCodec mdec_decoder;
extern AVCodec roq_decoder;
@@ -1799,8 +2011,21 @@ extern AVCodec ra_288_decoder;
extern AVCodec roq_dpcm_decoder;
extern AVCodec interplay_dpcm_decoder;
extern AVCodec xan_dpcm_decoder;
+extern AVCodec sol_dpcm_decoder;
+extern AVCodec sonic_decoder;
extern AVCodec qtrle_decoder;
extern AVCodec flac_decoder;
+extern AVCodec tscc_decoder;
+extern AVCodec ulti_decoder;
+extern AVCodec qdraw_decoder;
+extern AVCodec xl_decoder;
+extern AVCodec qpeg_decoder;
+extern AVCodec shorten_decoder;
+extern AVCodec loco_decoder;
+extern AVCodec wnv1_decoder;
+extern AVCodec aasc_decoder;
+extern AVCodec alac_decoder;
+extern AVCodec ws_snd1_decoder;
/* pcm codecs */
#define PCM_CODEC(id, name) \
@@ -1830,6 +2055,8 @@ PCM_CODEC(CODEC_ID_ADPCM_XA, adpcm_xa);
PCM_CODEC(CODEC_ID_ADPCM_ADX, adpcm_adx);
PCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea);
PCM_CODEC(CODEC_ID_ADPCM_G726, adpcm_g726);
+PCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct);
+PCM_CODEC(CODEC_ID_ADPCM_SWF, adpcm_swf);
#undef PCM_CODEC
@@ -1839,10 +2066,12 @@ extern AVCodec rawvideo_decoder;
/* the following codecs use external GPL libs */
extern AVCodec ac3_decoder;
+extern AVCodec dts_decoder;
/* resample.c */
struct ReSampleContext;
+struct AVResampleContext;
typedef struct ReSampleContext ReSampleContext;
@@ -1851,6 +2080,11 @@ ReSampleContext *audio_resample_init(int output_channels, int input_channels,
int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);
void audio_resample_close(ReSampleContext *s);
+struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff);
+int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx);
+void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance);
+void av_resample_close(struct AVResampleContext *c);
+
/* YUV420 format is assumed ! */
struct ImgReSampleContext;
@@ -1894,7 +2128,9 @@ int avpicture_layout(const AVPicture* src, int pix_fmt, int width, int height,
int avpicture_get_size(int pix_fmt, int width, int height);
void avcodec_get_chroma_sub_sample(int pix_fmt, int *h_shift, int *v_shift);
const char *avcodec_get_pix_fmt_name(int pix_fmt);
+void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
enum PixelFormat avcodec_get_pix_fmt(const char* name);
+unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat p);
#define FF_LOSS_RESOLUTION 0x0001 /* loss due to resolution change */
#define FF_LOSS_DEPTH 0x0002 /* loss due to color depth change */
@@ -1948,6 +2184,7 @@ int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic);
void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic);
void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
+int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h);
enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt);
int avcodec_thread_init(AVCodecContext *s, int thread_count);
@@ -1982,6 +2219,8 @@ void avcodec_register_all(void);
void avcodec_flush_buffers(AVCodecContext *avctx);
+void avcodec_default_free_buffers(AVCodecContext *s);
+
/* misc usefull functions */
/**
@@ -1998,87 +2237,16 @@ char av_get_pict_type_char(int pict_type);
int av_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max);
/**
- * rescale a 64bit integer.
+ * rescale a 64bit integer with rounding to nearest.
* a simple a*b/c isnt possible as it can overflow
*/
int64_t av_rescale(int64_t a, int64_t b, int64_t c);
-
/**
- * Interface for 0.5.0 version
- *
- * do not even think about it's usage for this moment
- */
-
-typedef struct {
- /// compressed size used from given memory buffer
- int size;
- /// I/P/B frame type
- int frame_type;
-} avc_enc_result_t;
-
-/**
- * Commands
- * order can't be changed - once it was defined
- */
-typedef enum {
- // general commands
- AVC_OPEN_BY_NAME = 0xACA000,
- AVC_OPEN_BY_CODEC_ID,
- AVC_OPEN_BY_FOURCC,
- AVC_CLOSE,
-
- AVC_FLUSH,
- // pin - struct { uint8_t* src, uint_t src_size }
- // pout - struct { AVPicture* img, consumed_bytes,
- AVC_DECODE,
- // pin - struct { AVPicture* img, uint8_t* dest, uint_t dest_size }
- // pout - uint_t used_from_dest_size
- AVC_ENCODE,
-
- // query/get video commands
- AVC_GET_VERSION = 0xACB000,
- AVC_GET_WIDTH,
- AVC_GET_HEIGHT,
- AVC_GET_DELAY,
- AVC_GET_QUANT_TABLE,
- // ...
-
- // query/get audio commands
- AVC_GET_FRAME_SIZE = 0xABC000,
-
- // maybe define some simple structure which
- // might be passed to the user - but they can't
- // contain any codec specific parts and these
- // calls are usualy necessary only few times
-
- // set video commands
- AVC_SET_WIDTH = 0xACD000,
- AVC_SET_HEIGHT,
-
- // set video encoding commands
- AVC_SET_FRAME_RATE = 0xACD800,
- AVC_SET_QUALITY,
- AVC_SET_HURRY_UP,
-
- // set audio commands
- AVC_SET_SAMPLE_RATE = 0xACE000,
- AVC_SET_CHANNELS,
-
-} avc_cmd_t;
-
-/**
- * \param handle allocated private structure by libavcodec
- * for initialization pass NULL - will be returned pout
- * user is supposed to know nothing about its structure
- * \param cmd type of operation to be performed
- * \param pint input parameter
- * \param pout output parameter
- *
- * \returns command status - eventually for query command it might return
- * integer resulting value
+ * rescale a 64bit integer with specified rounding.
+ * a simple a*b/c isnt possible as it can overflow
*/
-int avcodec(void* handle, avc_cmd_t cmd, void* pin, void* pout);
+int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding);
/* frame parsing */
typedef struct AVCodecParserContext {
@@ -2107,7 +2275,7 @@ typedef struct AVCodecParserContext {
} AVCodecParserContext;
typedef struct AVCodecParser {
- int codec_ids[3]; /* several codec IDs are permitted */
+ int codec_ids[5]; /* several codec IDs are permitted */
int priv_data_size;
int (*parser_init)(AVCodecParserContext *s);
int (*parser_parse)(AVCodecParserContext *s,
@@ -2131,8 +2299,11 @@ void av_parser_close(AVCodecParserContext *s);
extern AVCodecParser mpegvideo_parser;
extern AVCodecParser mpeg4video_parser;
+extern AVCodecParser h261_parser;
extern AVCodecParser h263_parser;
extern AVCodecParser h264_parser;
+extern AVCodecParser mjpeg_parser;
+extern AVCodecParser pnm_parser;
extern AVCodecParser mpegaudio_parser;
extern AVCodecParser ac3_parser;
@@ -2148,6 +2319,7 @@ void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size);
/* call av_free_static to release all staticaly allocated tables */
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);
@@ -2164,7 +2336,12 @@ void img_copy(AVPicture *dst, const AVPicture *src,
#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);