diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-01-25 20:34:31 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-01-29 19:30:24 +0100 |
commit | 0063a06aaa900ff69e26f21d7ad7c1725c01a29c (patch) | |
tree | 0343949d6d2e227b9aeb6343dac8648db2e3dfb3 /libavcodec/mpegvideo_enc.c | |
parent | aeb83322aa26621b940c32e76d8601b4d5378a09 (diff) |
avcodec/mpegvideo_enc: Localize check for invalid number of b-frames
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/mpegvideo_enc.c')
-rw-r--r-- | libavcodec/mpegvideo_enc.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 044c675014..920cb337a1 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -350,9 +350,21 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_ERROR, "Too many B-frames requested, maximum " "is %d.\n", MAX_B_FRAMES); avctx->max_b_frames = MAX_B_FRAMES; + } else if (avctx->max_b_frames < 0) { + av_log(avctx, AV_LOG_ERROR, + "max b frames must be 0 or positive for mpegvideo based encoders\n"); + return AVERROR(EINVAL); } s->max_b_frames = avctx->max_b_frames; s->codec_id = avctx->codec->id; + if (s->max_b_frames && + s->codec_id != AV_CODEC_ID_MPEG4 && + s->codec_id != AV_CODEC_ID_MPEG1VIDEO && + s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { + av_log(avctx, AV_LOG_ERROR, "B-frames not supported by codec\n"); + return AVERROR(EINVAL); + } + s->strict_std_compliance = avctx->strict_std_compliance; s->quarter_sample = (avctx->flags & AV_CODEC_FLAG_QPEL) != 0; s->rtp_mode = !!s->rtp_payload_size; @@ -499,19 +511,6 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - if (s->max_b_frames && - s->codec_id != AV_CODEC_ID_MPEG4 && - s->codec_id != AV_CODEC_ID_MPEG1VIDEO && - s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { - av_log(avctx, AV_LOG_ERROR, "B-frames not supported by codec\n"); - return AVERROR(EINVAL); - } - if (s->max_b_frames < 0) { - av_log(avctx, AV_LOG_ERROR, - "max b frames must be 0 or positive for mpegvideo based encoders\n"); - return AVERROR(EINVAL); - } - if ((s->codec_id == AV_CODEC_ID_MPEG4 || s->codec_id == AV_CODEC_ID_H263 || s->codec_id == AV_CODEC_ID_H263P) && |