[FFmpeg-cvslog] mpegenc: use the CPB props side data

Anton Khirnov git at videolan.org
Thu Dec 17 13:57:52 CET 2015


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sun Oct  4 12:27:10 2015 +0200| [8bcadaacc2b8dc3c5d6569835a5ca20e62d3efca] | committer: Anton Khirnov

mpegenc: use the CPB props side data

Do not access the encoder options, since it makes no sense when the
AVStream codec context is not the encoding context.

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

 libavformat/mpegenc.c |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index 33eaefd..ac5a83c 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -341,6 +341,8 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
     lpcm_id = LPCM_ID;
 
     for (i = 0; i < ctx->nb_streams; i++) {
+        AVCPBProperties *props;
+
         st     = ctx->streams[i];
         stream = av_mallocz(sizeof(StreamInfo));
         if (!stream)
@@ -383,8 +385,10 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
                 stream->id = h264_id++;
             else
                 stream->id = mpv_id++;
-            if (st->codec->rc_buffer_size)
-                stream->max_buffer_size = 6 * 1024 + st->codec->rc_buffer_size / 8;
+
+            props = (AVCPBProperties*)av_stream_get_side_data(st, AV_PKT_DATA_CPB_PROPERTIES, NULL);
+            if (props && props->buffer_size)
+                stream->max_buffer_size = 6 * 1024 + props->buffer_size / 8;
             else {
                 av_log(ctx, AV_LOG_WARNING,
                        "VBV buffer size not set, muxing may fail\n");
@@ -408,13 +412,14 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx)
     audio_bitrate = 0;
     video_bitrate = 0;
     for (i = 0; i < ctx->nb_streams; i++) {
+        AVCPBProperties *props;
         int codec_rate;
         st     = ctx->streams[i];
         stream = (StreamInfo *)st->priv_data;
 
-        if (st->codec->rc_max_rate ||
-            st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
-            codec_rate = st->codec->rc_max_rate;
+        props = (AVCPBProperties*)av_stream_get_side_data(st, AV_PKT_DATA_CPB_PROPERTIES, NULL);
+        if (props)
+            codec_rate = props->max_bitrate;
         else
             codec_rate = st->codec->bit_rate;
 



More information about the ffmpeg-cvslog mailing list