From f6c94457b44f41d900cd0991857f54e1f0ccedd6 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 18 Nov 2015 10:37:16 +0100 Subject: mpegvideo_enc: enable rtp_mode when multiple slices are used Currently, multiple slices with just one thread produce corrupted output. Additionally, enable slice structured mode for h263(+) Bug-Id: 912 CC: libav-stabl@libav.org --- libavcodec/mpegvideo_enc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libavcodec/mpegvideo_enc.c') diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index d572b859a0..b9157412de 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -519,9 +519,6 @@ FF_ENABLE_DEPRECATION_WARNINGS return -1; } - if (s->avctx->thread_count > 1) - s->rtp_mode = 1; - if (!avctx->time_base.den || !avctx->time_base.num) { av_log(avctx, AV_LOG_ERROR, "framerate not set\n"); return -1; @@ -764,6 +761,13 @@ FF_ENABLE_DEPRECATION_WARNINGS if ((CONFIG_H263P_ENCODER || CONFIG_RV20_ENCODER) && s->modified_quant) s->chroma_qscale_table = ff_h263_chroma_qscale_table; + if (s->slice_context_count > 1) { + s->rtp_mode = 1; + + if (avctx->codec_id == AV_CODEC_ID_H263 || avctx->codec_id == AV_CODEC_ID_H263P) + s->h263_slice_structured = 1; + } + s->quant_precision = 5; ff_set_cmp(&s->mecc, s->mecc.ildct_cmp, s->avctx->ildct_cmp); -- cgit v1.2.3