[FFmpeg-cvslog] avcodec/vc1: Add max_b_frames field to VC1Context

Andreas Rheinhardt git at videolan.org
Tue Mar 4 14:35:29 EET 2025


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Mon Feb 24 19:05:32 2025 +0100| [1adc84136e499302a787537dbc9323c4abb647bf] | committer: Andreas Rheinhardt

avcodec/vc1: Add max_b_frames field to VC1Context

Don't reuse MpegEncContext.max_b_frames, which is supposed
to be encoder-only.

Reviewed-by: Ramiro Polla <ramiro.polla at gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1adc84136e499302a787537dbc9323c4abb647bf
---

 libavcodec/dxva2_vc1.c | 2 +-
 libavcodec/mss2.c      | 2 +-
 libavcodec/nvdec_vc1.c | 2 +-
 libavcodec/vc1.c       | 4 ++--
 libavcodec/vc1.h       | 1 +
 libavcodec/vdpau_vc1.c | 2 +-
 6 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c
index bc9ad9648e..a7b440c0d9 100644
--- a/libavcodec/dxva2_vc1.c
+++ b/libavcodec/dxva2_vc1.c
@@ -117,7 +117,7 @@ void ff_dxva2_vc1_fill_picture_parameters(AVCodecContext *avctx,
                                   (v->multires       << 5) |
                                   (v->resync_marker  << 4) |
                                   (v->rangered       << 3) |
-                                  (s->max_b_frames       );
+                                  (v->max_b_frames       );
     pp->bPicExtrapolation       = (!v->interlace || v->fcm == PROGRESSIVE) ? 1 : 2;
     pp->bPicDeblocked           = ((!pp->bPicBackwardPrediction && v->overlap)        << 6) |
                                   ((v->profile != PROFILE_ADVANCED && v->rangeredfrm) << 5) |
diff --git a/libavcodec/mss2.c b/libavcodec/mss2.c
index 1888053eb2..74a25b3e55 100644
--- a/libavcodec/mss2.c
+++ b/libavcodec/mss2.c
@@ -844,7 +844,7 @@ static av_cold int wmv9_init(AVCodecContext *avctx)
     v->resync_marker   = 0;
     v->rangered        = 0;
 
-    v->s.max_b_frames = avctx->max_b_frames = 0;
+    v->max_b_frames    = avctx->max_b_frames = 0;
     v->quantizer_mode = 0;
 
     v->finterpflag = 0;
diff --git a/libavcodec/nvdec_vc1.c b/libavcodec/nvdec_vc1.c
index 0668863cb4..fbfba1ecb4 100644
--- a/libavcodec/nvdec_vc1.c
+++ b/libavcodec/nvdec_vc1.c
@@ -84,7 +84,7 @@ static int nvdec_vc1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
             .multires          = v->multires,
             .syncmarker        = v->resync_marker,
             .rangered          = v->rangered,
-            .maxbframes        = s->max_b_frames,
+            .maxbframes        = v->max_b_frames,
 
             .panscan_flag      = v->panscanflag,
             .refdist_flag      = v->refdist_flag,
diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index d263c70be7..dec3e16ea2 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -343,7 +343,7 @@ int ff_vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitCo
                "RANGERED should be set to 0 in Simple Profile\n");
     }
 
-    v->s.max_b_frames = avctx->max_b_frames = get_bits(gb, 3); //common
+    v->max_b_frames = avctx->max_b_frames = get_bits(gb, 3); //common
     v->quantizer_mode = get_bits(gb, 2); //common
 
     v->finterpflag = get_bits1(gb); //common
@@ -431,7 +431,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
         av_log(v->s.avctx, AV_LOG_ERROR, "Progressive Segmented Frame mode: not supported (yet)\n");
         return -1;
     }
-    v->s.max_b_frames = v->s.avctx->max_b_frames = 7;
+    v->max_b_frames = v->s.avctx->max_b_frames = 7;
     if (get_bits1(gb)) { //Display Info - decoding is not affected by it
         int w, h, ar = 0;
         av_log(v->s.avctx, AV_LOG_DEBUG, "Display extended info:\n");
diff --git a/libavcodec/vc1.h b/libavcodec/vc1.h
index 185236662f..b7339bcd5f 100644
--- a/libavcodec/vc1.h
+++ b/libavcodec/vc1.h
@@ -222,6 +222,7 @@ typedef struct VC1Context{
     int dquant;           ///< How qscale varies with MBs, 2 bits (not in Simple)
     int vstransform;      ///< variable-size [48]x[48] transform type + info
     int overlap;          ///< overlapped transforms in use
+    int max_b_frames;     ///< max number of B-frames
     int quantizer_mode;   ///< 2 bits, quantizer mode used for sequence, see QUANT_*
     int finterpflag;      ///< INTERPFRM present
     //@}
diff --git a/libavcodec/vdpau_vc1.c b/libavcodec/vdpau_vc1.c
index d02a454bb8..20208c6dbc 100644
--- a/libavcodec/vdpau_vc1.c
+++ b/libavcodec/vdpau_vc1.c
@@ -92,7 +92,7 @@ static int vdpau_vc1_start_frame(AVCodecContext *avctx,
     info->multires          = v->multires;
     info->syncmarker        = v->resync_marker;
     info->rangered          = v->rangered | (v->rangeredfrm << 1);
-    info->maxbframes        = v->s.max_b_frames;
+    info->maxbframes        = v->max_b_frames;
     info->deblockEnable     = v->postprocflag & 1;
     info->pquant            = v->pq;
 



More information about the ffmpeg-cvslog mailing list