aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2003-01-03 23:21:52 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-01-03 23:21:52 +0000
commit70ac76c0eb13d74d2001e83d7803f3dc0299f86a (patch)
tree03790d6c8e2996583535dd39ea5d1b5129766e94 /libavcodec
parent001bcd29556b32c1afd686c03f6bdd65dd0e9a36 (diff)
downloadffmpeg-70ac76c0eb13d74d2001e83d7803f3dc0299f86a.tar.gz
mpeg4 header encoding bugfix
Originally committed as revision 1392 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/avcodec.h21
-rw-r--r--libavcodec/h263.c4
-rw-r--r--libavcodec/mpegvideo.h1
3 files changed, 19 insertions, 7 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 7833741268..08dd8c99f0 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -5,8 +5,8 @@
#define LIBAVCODEC_VERSION_INT 0x000406
#define LIBAVCODEC_VERSION "0.4.6"
-#define LIBAVCODEC_BUILD 4650
-#define LIBAVCODEC_BUILD_STR "4650"
+#define LIBAVCODEC_BUILD 4651
+#define LIBAVCODEC_BUILD_STR "4651"
enum CodecID {
CODEC_ID_NONE,
@@ -147,6 +147,7 @@ static const int Motion_Est_QTab[] = { ME_ZERO, ME_PHODS, ME_LOG,
#define CODEC_FLAG_LOW_DELAY 0x00080000 /* force low delay / will fail on b frames */
#define CODEC_FLAG_ALT_SCAN 0x00100000 /* use alternate scan */
#define CODEC_FLAG_TRELLIS_QUANT 0x00200000 /* use trellis quantization */
+#define CODEC_FLAG_GLOBAL_HEADER 0x00400000 /* place global headers in extradata instead of every keyframe */
/* codec capabilities */
@@ -894,7 +895,7 @@ typedef struct AVCodecContext {
* decoding: unused
*/
int last_predictor_count;
-
+
/**
* pre pass for motion estimation
* encoding: set by user.
@@ -902,6 +903,20 @@ typedef struct AVCodecContext {
*/
int pre_me;
+ /**
+ * motion estimation pre pass compare function
+ * encoding: set by user.
+ * decoding: unused
+ */
+ int me_pre_cmp;
+
+ /**
+ * ME pre pass diamond size & shape
+ * encoding: set by user.
+ * decoding: unused
+ */
+ int pre_dia_size;
+
} AVCodecContext;
typedef struct AVCodec {
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index c1bfbaf64d..bc21e0cd86 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -1727,11 +1727,9 @@ void mpeg4_encode_picture_header(MpegEncContext * s, int picture_number)
int time_div, time_mod;
if(s->pict_type==I_TYPE){
- if(picture_number - s->last_vo_picture_number >= 300 || picture_number==0){
+ if(!(s->flags&CODEC_FLAG_GLOBAL_HEADER)){
mpeg4_encode_visual_object_header(s);
mpeg4_encode_vol_header(s, 0, 0);
-
- s->last_vo_picture_number= picture_number;
}
mpeg4_encode_gop_header(s);
}
diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h
index 983e42dce5..1bd9bf6628 100644
--- a/libavcodec/mpegvideo.h
+++ b/libavcodec/mpegvideo.h
@@ -443,7 +443,6 @@ typedef struct MpegEncContext {
INT8 (*field_select_table)[2]; /* wtf, no really another table for interlaced b frames */
int t_frame; /* time distance of first I -> B, used for interlaced b frames */
int padding_bug_score; /* used to detect the VERY common padding bug in MPEG4 */
- int last_vo_picture_number; /* last picture number for which we added a VOS/VO/VOL header */
/* divx specific, used to workaround (many) bugs in divx5 */
int divx_version;