[FFmpeg-cvslog] avcodec/mpeg12dec: Add bit_rate field to Mpeg1Context
Andreas Rheinhardt
git at videolan.org
Wed Mar 26 06:09:56 EET 2025
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sat Mar 15 07:28:13 2025 +0100| [0a9f58a7a1b3c949b91b4f8919d26c6267df28da] | committer: Andreas Rheinhardt
avcodec/mpeg12dec: Add bit_rate field to Mpeg1Context
Use it instead of MpegEncContext.bit_rate which will be removed soon.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0a9f58a7a1b3c949b91b4f8919d26c6267df28da
---
libavcodec/mpeg12dec.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index 81cc543424..ed739be538 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -91,6 +91,7 @@ typedef struct Mpeg1Context {
int first_slice;
int extradata_decoded;
int vbv_delay;
+ int64_t bit_rate;
int64_t timecode_frame_start; /*< GOP timecode frame start number, in non drop frame format */
} Mpeg1Context;
@@ -950,12 +951,12 @@ static int mpeg_decode_postinit(AVCodecContext *avctx)
if (ret < 0)
return ret;
- if (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO && s->bit_rate &&
- (s->bit_rate != 0x3FFFF*400)) {
- avctx->rc_max_rate = s->bit_rate;
- } else if (avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO && s->bit_rate &&
- (s->bit_rate != 0x3FFFF*400 || s1->vbv_delay != 0xFFFF)) {
- avctx->bit_rate = s->bit_rate;
+ if (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO && s1->bit_rate &&
+ (s1->bit_rate != 0x3FFFF*400)) {
+ avctx->rc_max_rate = s1->bit_rate;
+ } else if (avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO && s1->bit_rate &&
+ (s1->bit_rate != 0x3FFFF*400 || s1->vbv_delay != 0xFFFF)) {
+ avctx->bit_rate = s1->bit_rate;
}
s1->save_aspect = s->avctx->sample_aspect_ratio;
s1->save_width = s->width;
@@ -1075,7 +1076,7 @@ static void mpeg_decode_sequence_extension(Mpeg1Context *s1)
s->width |= (horiz_size_ext << 12);
s->height |= (vert_size_ext << 12);
bit_rate_ext = get_bits(&s->gb, 12); /* XXX: handle it */
- s->bit_rate += (bit_rate_ext << 18) * 400LL;
+ s1->bit_rate += (bit_rate_ext << 18) * 400LL;
check_marker(s->avctx, &s->gb, "after bit rate extension");
s->avctx->rc_buffer_size += get_bits(&s->gb, 8) * 1024 * 16 << 10;
@@ -1093,7 +1094,7 @@ static void mpeg_decode_sequence_extension(Mpeg1Context *s1)
av_log(s->avctx, AV_LOG_DEBUG,
"profile: %d, level: %d ps: %d cf:%d vbv buffer: %d, bitrate:%"PRId64"\n",
s->avctx->profile, s->avctx->level, s->progressive_sequence, s->chroma_format,
- s->avctx->rc_buffer_size, s->bit_rate);
+ s->avctx->rc_buffer_size, s1->bit_rate);
}
static void mpeg_decode_sequence_display_extension(Mpeg1Context *s1)
@@ -1799,7 +1800,7 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx,
"frame_rate_index %d is invalid\n", s1->frame_rate_index);
s1->frame_rate_index = 1;
}
- s->bit_rate = get_bits(&s->gb, 18) * 400LL;
+ s1->bit_rate = get_bits(&s->gb, 18) * 400;
if (check_marker(s->avctx, &s->gb, "in sequence header") == 0) {
return AVERROR_INVALIDDATA;
}
@@ -1851,7 +1852,7 @@ static int mpeg1_decode_sequence(AVCodecContext *avctx,
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_DEBUG, "vbv buffer: %d, bitrate:%"PRId64", aspect_ratio_info: %d \n",
- s->avctx->rc_buffer_size, s->bit_rate, s1->aspect_ratio_info);
+ s->avctx->rc_buffer_size, s1->bit_rate, s1->aspect_ratio_info);
return 0;
}
More information about the ffmpeg-cvslog
mailing list