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.h41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/libffmpeg/libavcodec/avcodec.h b/src/libffmpeg/libavcodec/avcodec.h
index 3c27d99ea..05b27d8c2 100644
--- a/src/libffmpeg/libavcodec/avcodec.h
+++ b/src/libffmpeg/libavcodec/avcodec.h
@@ -14,11 +14,14 @@ enum CodecID {
CODEC_ID_MJPEG,
CODEC_ID_MPEG4,
CODEC_ID_RAWVIDEO,
- CODEC_ID_MSMPEG4,
+ CODEC_ID_MSMPEG4V1,
+ CODEC_ID_MSMPEG4V2,
+ CODEC_ID_MSMPEG4V3,
CODEC_ID_H263P,
CODEC_ID_H263I,
};
+#define CODEC_ID_MSMPEG4 CODEC_ID_MSMPEG4V3
enum CodecType {
CODEC_TYPE_VIDEO,
@@ -48,11 +51,19 @@ extern int motion_estimation_method;
#define ME_FULL 1
#define ME_LOG 2
#define ME_PHODS 3
+#define ME_EPZS 4
+#define ME_X1 5
/* encoding support */
+/* note not everything is supported yet */
#define CODEC_FLAG_HQ 0x0001 /* high quality (non real time) encoding */
#define CODEC_FLAG_QSCALE 0x0002 /* use fixed qscale */
+#define CODEC_FLAG_4MV 0x0004 /* 4 MV per MB allowed */
+#define CODEC_FLAG_B 0x0008 /* use B frames */
+#define CODEC_FLAG_QPEL 0x0010 /* use qpel MC */
+#define CODEC_FLAG_GMC 0x0020 /* use GMC */
+#define CODEC_FLAG_TYPE 0x0040 /* fixed I/P frame type, from avctx->key_frame */
/* codec capabilities */
@@ -63,12 +74,19 @@ extern int motion_estimation_method;
typedef struct AVCodecContext {
int bit_rate;
+ int bit_rate_tolerance; /* amount of +- bits (>0)*/
int flags;
int sub_id; /* some codecs needs additionnal format info. It is
stored there */
/* video only */
int frame_rate; /* frames per sec multiplied by FRAME_RATE_BASE */
int width, height;
+ int aspect_ratio_info;
+#define FF_ASPECT_SQUARE 1
+#define FF_ASPECT_4_3_625 2
+#define FF_ASPECT_4_3_525 3
+#define FF_ASPECT_16_9_625 4
+#define FF_ASPECT_16_9_525 5
int gop_size; /* 0 = intra only */
int pix_fmt; /* pixel format, see PIX_FMT_xxx */
@@ -92,6 +110,12 @@ typedef struct AVCodecContext {
a key frame (intra, or seekable) */
int quality; /* quality of the previous encoded frame
(between 1 (good) and 31 (bad)) */
+ float qcompress; /* amount of qscale change between easy & hard scenes (0.0-1.0)*/
+ float qblur; /* amount of qscale smoothing over time (0.0-1.0) */
+ int qmin; /* min qscale */
+ int qmax; /* max qscale */
+ int max_qdiff; /* max qscale difference between frames */
+
struct AVCodec *codec;
void *priv_data;
@@ -122,6 +146,17 @@ typedef struct AVCodecContext {
float psnr_cb;
float psnr_cr;
+ /* statistics, used for 2-pass encoding */
+ int mv_bits;
+ int header_bits;
+ int i_tex_bits;
+ int p_tex_bits;
+ int i_count;
+ int p_count;
+ int skip_count;
+ int misc_bits; // cbp, mb_type
+ int frame_bits;
+
/* the following fields are ignored */
void *opaque; /* can be used to carry app specific stuff */
char codec_name[32];
@@ -152,7 +187,9 @@ typedef struct AVPicture {
extern AVCodec h263_decoder;
extern AVCodec mpeg4_decoder;
-extern AVCodec msmpeg4_decoder;
+extern AVCodec msmpeg4v1_decoder;
+extern AVCodec msmpeg4v2_decoder;
+extern AVCodec msmpeg4v3_decoder;
extern AVCodec mpeg_decoder;
extern AVCodec h263i_decoder;
extern AVCodec rv10_decoder;