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;