1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

Fix broken vbv_buffer_init handling in libx264.c

Due to being pants-on-head retarded, libavcodec defaults this to zero, which
results in broken output.  This didn't affect ffmpeg.c, which sets it itself,
but caused problems for other calling apps using VBV.
(cherry picked from commit f7f8120fb9)
This commit is contained in:
Jason Garrett-Glaser 2011-02-06 05:10:15 -08:00 committed by Michael Niedermayer
parent a1b0a3c8bd
commit 2c855cea85

View File

@ -277,12 +277,11 @@ static av_cold int X264_init(AVCodecContext *avctx)
if (avctx->level > 0) if (avctx->level > 0)
x4->params.i_level_idc = avctx->level; x4->params.i_level_idc = avctx->level;
if ((avctx->rc_buffer_size != 0) && if (avctx->rc_buffer_size && avctx->rc_initial_buffer_occupancy &&
(avctx->rc_initial_buffer_occupancy <= avctx->rc_buffer_size)) { (avctx->rc_initial_buffer_occupancy <= avctx->rc_buffer_size)) {
x4->params.rc.f_vbv_buffer_init = x4->params.rc.f_vbv_buffer_init =
(float)avctx->rc_initial_buffer_occupancy / avctx->rc_buffer_size; (float)avctx->rc_initial_buffer_occupancy / avctx->rc_buffer_size;
} else }
x4->params.rc.f_vbv_buffer_init = 0.9;
x4->params.rc.b_mb_tree = !!(avctx->flags2 & CODEC_FLAG2_MBTREE); x4->params.rc.b_mb_tree = !!(avctx->flags2 & CODEC_FLAG2_MBTREE);
x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor); x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor);