summaryrefslogtreecommitdiff
path: root/libavcodec/mpegvideo_enc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-01-25 20:34:31 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-01-29 19:30:24 +0100
commit0063a06aaa900ff69e26f21d7ad7c1725c01a29c (patch)
tree0343949d6d2e227b9aeb6343dac8648db2e3dfb3 /libavcodec/mpegvideo_enc.c
parentaeb83322aa26621b940c32e76d8601b4d5378a09 (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.c25
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) &&