diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 6b60473466..8306ad9ba6 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -69,6 +69,7 @@ extern int motion_estimation_method; #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 */ @@ -121,8 +122,6 @@ typedef struct AVCodecContext { int qmax; /* max qscale */ int max_qdiff; /* max qscale difference between frames */ - int force_type; /* 0= no force, otherwise I_TYPE, P_TYPE, ... */ - struct AVCodec *codec; void *priv_data; diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 2a7aca21d2..55159c68c6 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -514,7 +514,8 @@ int MPV_encode_picture(AVCodecContext *avctx, init_put_bits(&s->pb, buf, buf_size, NULL, NULL); - s->force_type= avctx->force_type; + s->force_type= (avctx->flags&CODEC_FLAG_TYPE) ? + (avctx->key_frame ? I_TYPE : P_TYPE) : 0; if (!s->intra_only) { /* first picture of GOP is intra */ if (s->picture_in_gop_number % s->gop_size==0 || s->force_type==I_TYPE){