Mercurial > libavcodec.hg
comparison mpegvideo_enc.c @ 8227:596677256482 libavcodec
Implement the fields rc_max_available_vbv_use and
rc_min_vbv_overflow_use in AVCodecContext, and use their values in the
ratecontrol code rather than hardcoded ones.
See the thread: "[RFC] ratecontrol buffer size magic".
Patch by Baptiste Coudurier.
author | stefano |
---|---|
date | Sat, 29 Nov 2008 14:08:48 +0000 |
parents | 03054192daac |
children | 68e959302527 |
comparison
equal
deleted
inserted
replaced
8226:ee1b8c54a603 | 8227:596677256482 |
---|---|
1229 if (ENABLE_MJPEG_ENCODER && s->out_format == FMT_MJPEG) | 1229 if (ENABLE_MJPEG_ENCODER && s->out_format == FMT_MJPEG) |
1230 ff_mjpeg_encode_picture_trailer(s); | 1230 ff_mjpeg_encode_picture_trailer(s); |
1231 | 1231 |
1232 if(avctx->rc_buffer_size){ | 1232 if(avctx->rc_buffer_size){ |
1233 RateControlContext *rcc= &s->rc_context; | 1233 RateControlContext *rcc= &s->rc_context; |
1234 int max_size= rcc->buffer_index/3; | 1234 int max_size= rcc->buffer_index * avctx->rc_max_available_vbv_use; |
1235 | 1235 |
1236 if(put_bits_count(&s->pb) > max_size && s->lambda < s->avctx->lmax){ | 1236 if(put_bits_count(&s->pb) > max_size && s->lambda < s->avctx->lmax){ |
1237 s->next_lambda= FFMAX(s->lambda+1, s->lambda*(s->qscale+1) / s->qscale); | 1237 s->next_lambda= FFMAX(s->lambda+1, s->lambda*(s->qscale+1) / s->qscale); |
1238 if(s->adaptive_quant){ | 1238 if(s->adaptive_quant){ |
1239 int i; | 1239 int i; |