diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index bc01f4559c..993ed785e8 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -604,7 +604,9 @@ typedef struct RcOverride{ #endif #define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. #define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. +#if FF_API_MPEGVIDEO_GLOBAL_OPTS #define CODEC_FLAG_H263P_AIV 0x00000008 ///< H.263 alternative inter VLC +#endif #define CODEC_FLAG_OBMC 0x00000001 ///< OBMC #define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter #define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 98e015fb24..447431dcf4 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -609,10 +609,11 @@ av_cold int MPV_encode_init(AVCodecContext *avctx) #if FF_API_MPEGVIDEO_GLOBAL_OPTS if (avctx->flags & CODEC_FLAG_H263P_UMV) s->umvplus = 1; + if (avctx->flags & CODEC_FLAG_H263P_AIV) + s->alt_inter_vlc = 1; #endif s->h263_aic= (avctx->flags & CODEC_FLAG_AC_PRED) ? 1:0; s->modified_quant= s->h263_aic; - s->alt_inter_vlc= (avctx->flags & CODEC_FLAG_H263P_AIV) ? 1:0; s->obmc= (avctx->flags & CODEC_FLAG_OBMC) ? 1:0; s->loop_filter= (avctx->flags & CODEC_FLAG_LOOP_FILTER) ? 1:0; s->unrestricted_mv= s->obmc || s->loop_filter || s->umvplus; @@ -3798,6 +3799,7 @@ AVCodec ff_h263_encoder = { #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "umv", "Use unlimited motion vectors.", OFFSET(umvplus), FF_OPT_TYPE_INT, { 0 }, 0, 1, VE }, + { "aiv", "Use alternative inter VLC.", OFFSET(alt_inter_vlc), FF_OPT_TYPE_INT, { 0 }, 0, 1, VE }, { NULL }, }; static const AVClass h263p_class = { diff --git a/libavcodec/options.c b/libavcodec/options.c index 23ff7e7f16..fb1fb17f9a 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -108,7 +108,9 @@ static const AVOption options[]={ #endif {"cbp", "use rate distortion optimization for cbp", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_CBP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, {"qprd", "use rate distortion optimization for qp selection", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, +#if FF_API_MPEGVIDEO_GLOBAL_OPTS {"aiv", "h263 alternative inter vlc", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_H263P_AIV }, INT_MIN, INT_MAX, V|E, "flags"}, +#endif {"slice", NULL, 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_H263P_SLICE_STRUCT }, INT_MIN, INT_MAX, V|E, "flags"}, {"ilme", "interlaced motion estimation", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INTERLACED_ME }, INT_MIN, INT_MAX, V|E, "flags"}, {"scan_offset", "will reserve space for svcd scan offset user data", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_SVCD_SCAN_OFFSET }, INT_MIN, INT_MAX, V|E, "flags"},