From 2da49df19e115becdddf60f8704889868ca2f56b Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 14 Jan 2013 05:32:38 +0100 Subject: [PATCH] lavc: set the default rc_initial_buffer_occupancy rc_buffer_size is not set before. Solve the initial the rate control underflow issue reported in bug 222. CC: libav-stable@libav.org Signed-off-by: Luca Barbato (cherry picked from commit bff3607547fdbb6e32b3830a351e6a33280c1e0d) Signed-off-by: Luca Barbato --- avconv.c | 2 -- libavcodec/utils.c | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/avconv.c b/avconv.c index 90b72fda11..212d948905 100644 --- a/avconv.c +++ b/avconv.c @@ -3664,8 +3664,6 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc) if (p) p++; } video_enc->rc_override_count = i; - if (!video_enc->rc_initial_buffer_occupancy) - video_enc->rc_initial_buffer_occupancy = video_enc->rc_buffer_size * 3 / 4; video_enc->intra_dc_precision = intra_dc_precision - 8; /* two pass mode */ diff --git a/libavcodec/utils.c b/libavcodec/utils.c index f64bff8ff6..7902e987ca 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -810,6 +810,9 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVD } else if (avctx->channel_layout) { avctx->channels = av_get_channel_layout_nb_channels(avctx->channel_layout); } + + if (!avctx->rc_initial_buffer_occupancy) + avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size * 3 / 4; } if(avctx->codec->init && !(avctx->active_thread_type&FF_THREAD_FRAME)){