mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-06 07:40:00 +08:00
lavc: add -mpv_flags to mpegvideo_enc-based encoders.
Deprecate CODEC_FLAG2_SKIP_RD in favor of the corresponding mpv_flags flag.
This commit is contained in:
@ -62,6 +62,11 @@ static int dct_quantize_trellis_c(MpegEncContext *s, DCTELEM *block, int n, int
|
||||
static uint8_t default_mv_penalty[MAX_FCODE + 1][MAX_MV * 2 + 1];
|
||||
static uint8_t default_fcode_tab[MAX_MV * 2 + 1];
|
||||
|
||||
const AVOption ff_mpv_generic_options[] = {
|
||||
FF_MPV_COMMON_OPTS
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64],
|
||||
uint16_t (*qmat16)[2][64],
|
||||
const uint16_t *quant_matrix,
|
||||
@ -606,6 +611,11 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
|
||||
}
|
||||
s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1;
|
||||
|
||||
#if FF_API_MPV_GLOBAL_OPTS
|
||||
if (avctx->flags2 & CODEC_FLAG2_SKIP_RD)
|
||||
s->mpv_flags |= FF_MPV_FLAG_SKIP_RD;
|
||||
#endif
|
||||
|
||||
switch (avctx->codec->id) {
|
||||
case CODEC_ID_MPEG1VIDEO:
|
||||
s->out_format = FMT_MPEG1;
|
||||
@ -2698,7 +2708,7 @@ static int encode_thread(AVCodecContext *c, void *arg){
|
||||
encode_mb_hq(s, &backup_s, &best_s, CANDIDATE_MB_TYPE_DIRECT, pb, pb2, tex_pb,
|
||||
&dmin, &next_block, 0, 0);
|
||||
}
|
||||
if(!best_s.mb_intra && s->flags2&CODEC_FLAG2_SKIP_RD){
|
||||
if (!best_s.mb_intra && s->mpv_flags & FF_MPV_FLAG_SKIP_RD) {
|
||||
int coded=0;
|
||||
for(i=0; i<6; i++)
|
||||
coded |= s->block_last_index[i];
|
||||
@ -4046,6 +4056,7 @@ int ff_dct_quantize_c(MpegEncContext *s,
|
||||
static const AVOption h263_options[] = {
|
||||
{ "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },
|
||||
{ "structured_slices","Write slice start position at every GOB header instead of just GOB number.", OFFSET(h263_slice_structured), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE},
|
||||
FF_MPV_COMMON_OPTS
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
@ -4074,6 +4085,7 @@ static const AVOption h263p_options[] = {
|
||||
{ "aiv", "Use alternative inter VLC.", OFFSET(alt_inter_vlc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },
|
||||
{ "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },
|
||||
{ "structured_slices", "Write slice start position at every GOB header instead of just GOB number.", OFFSET(h263_slice_structured), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE},
|
||||
FF_MPV_COMMON_OPTS
|
||||
{ NULL },
|
||||
};
|
||||
static const AVClass h263p_class = {
|
||||
@ -4097,6 +4109,8 @@ AVCodec ff_h263p_encoder = {
|
||||
.priv_class = &h263p_class,
|
||||
};
|
||||
|
||||
FF_MPV_GENERIC_CLASS(msmpeg4v2)
|
||||
|
||||
AVCodec ff_msmpeg4v2_encoder = {
|
||||
.name = "msmpeg4v2",
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
@ -4107,8 +4121,11 @@ AVCodec ff_msmpeg4v2_encoder = {
|
||||
.close = ff_MPV_encode_end,
|
||||
.pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
|
||||
.long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 2"),
|
||||
.priv_class = &msmpeg4v2_class,
|
||||
};
|
||||
|
||||
FF_MPV_GENERIC_CLASS(msmpeg4v3)
|
||||
|
||||
AVCodec ff_msmpeg4v3_encoder = {
|
||||
.name = "msmpeg4",
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
@ -4119,8 +4136,11 @@ AVCodec ff_msmpeg4v3_encoder = {
|
||||
.close = ff_MPV_encode_end,
|
||||
.pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
|
||||
.long_name= NULL_IF_CONFIG_SMALL("MPEG-4 part 2 Microsoft variant version 3"),
|
||||
.priv_class = &msmpeg4v3_class,
|
||||
};
|
||||
|
||||
FF_MPV_GENERIC_CLASS(wmv1)
|
||||
|
||||
AVCodec ff_wmv1_encoder = {
|
||||
.name = "wmv1",
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
@ -4131,4 +4151,5 @@ AVCodec ff_wmv1_encoder = {
|
||||
.close = ff_MPV_encode_end,
|
||||
.pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
|
||||
.long_name= NULL_IF_CONFIG_SMALL("Windows Media Video 7"),
|
||||
.priv_class = &wmv1_class,
|
||||
};
|
||||
|
Reference in New Issue
Block a user