Mercurial > libavcodec.hg
comparison ratecontrol.c @ 2637:ef44d24680d1 libavcodec
switch to native time bases
author | michael |
---|---|
date | Sat, 30 Apr 2005 21:43:59 +0000 |
parents | 511e3afc43e1 |
children | ef2149182f1c |
comparison
equal
deleted
inserted
replaced
2636:2344c6713011 | 2637:ef44d24680d1 |
---|---|
164 rcc->frame_count[rce.pict_type] ++; | 164 rcc->frame_count[rce.pict_type] ++; |
165 | 165 |
166 bits= rce.i_tex_bits + rce.p_tex_bits; | 166 bits= rce.i_tex_bits + rce.p_tex_bits; |
167 | 167 |
168 q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i); | 168 q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i); |
169 rcc->pass1_wanted_bits+= s->bit_rate/(s->avctx->frame_rate / (double)s->avctx->frame_rate_base); | 169 rcc->pass1_wanted_bits+= s->bit_rate/(1/av_q2d(s->avctx->time_base)); //FIXME missbehaves a little for variable fps |
170 } | 170 } |
171 } | 171 } |
172 | 172 |
173 } | 173 } |
174 | 174 |
197 return rce->qscale * (double)(rce->i_tex_bits + rce->p_tex_bits+1)/ bits; | 197 return rce->qscale * (double)(rce->i_tex_bits + rce->p_tex_bits+1)/ bits; |
198 } | 198 } |
199 | 199 |
200 int ff_vbv_update(MpegEncContext *s, int frame_size){ | 200 int ff_vbv_update(MpegEncContext *s, int frame_size){ |
201 RateControlContext *rcc= &s->rc_context; | 201 RateControlContext *rcc= &s->rc_context; |
202 const double fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; | 202 const double fps= 1/av_q2d(s->avctx->time_base); |
203 const int buffer_size= s->avctx->rc_buffer_size; | 203 const int buffer_size= s->avctx->rc_buffer_size; |
204 const double min_rate= s->avctx->rc_min_rate/fps; | 204 const double min_rate= s->avctx->rc_min_rate/fps; |
205 const double max_rate= s->avctx->rc_max_rate/fps; | 205 const double max_rate= s->avctx->rc_max_rate/fps; |
206 | 206 |
207 //printf("%d %f %d %f %f\n", buffer_size, rcc->buffer_index, frame_size, min_rate, max_rate); | 207 //printf("%d %f %d %f %f\n", buffer_size, rcc->buffer_index, frame_size, min_rate, max_rate); |
398 RateControlContext *rcc= &s->rc_context; | 398 RateControlContext *rcc= &s->rc_context; |
399 int qmin, qmax; | 399 int qmin, qmax; |
400 double bits; | 400 double bits; |
401 const int pict_type= rce->new_pict_type; | 401 const int pict_type= rce->new_pict_type; |
402 const double buffer_size= s->avctx->rc_buffer_size; | 402 const double buffer_size= s->avctx->rc_buffer_size; |
403 const double fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; | 403 const double fps= 1/av_q2d(s->avctx->time_base); |
404 const double min_rate= s->avctx->rc_min_rate / fps; | 404 const double min_rate= s->avctx->rc_min_rate / fps; |
405 const double max_rate= s->avctx->rc_max_rate / fps; | 405 const double max_rate= s->avctx->rc_max_rate / fps; |
406 | 406 |
407 get_qminmax(&qmin, &qmax, s, pict_type); | 407 get_qminmax(&qmin, &qmax, s, pict_type); |
408 | 408 |
629 Picture * const pic= &s->current_picture; | 629 Picture * const pic= &s->current_picture; |
630 emms_c(); | 630 emms_c(); |
631 | 631 |
632 get_qminmax(&qmin, &qmax, s, pict_type); | 632 get_qminmax(&qmin, &qmax, s, pict_type); |
633 | 633 |
634 fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; | 634 fps= 1/av_q2d(s->avctx->time_base); |
635 //printf("input_pic_num:%d pic_num:%d frame_rate:%d\n", s->input_picture_number, s->picture_number, s->frame_rate); | 635 //printf("input_pic_num:%d pic_num:%d frame_rate:%d\n", s->input_picture_number, s->picture_number, s->frame_rate); |
636 /* update predictors */ | 636 /* update predictors */ |
637 if(picture_number>2){ | 637 if(picture_number>2){ |
638 const int last_var= s->last_pict_type == I_TYPE ? rcc->last_mb_var_sum : rcc->last_mc_mb_var_sum; | 638 const int last_var= s->last_pict_type == I_TYPE ? rcc->last_mb_var_sum : rcc->last_mc_mb_var_sum; |
639 update_predictor(&rcc->pred[s->last_pict_type], rcc->last_qscale, sqrt(last_var), s->frame_bits); | 639 update_predictor(&rcc->pred[s->last_pict_type], rcc->last_qscale, sqrt(last_var), s->frame_bits); |
755 static int init_pass2(MpegEncContext *s) | 755 static int init_pass2(MpegEncContext *s) |
756 { | 756 { |
757 RateControlContext *rcc= &s->rc_context; | 757 RateControlContext *rcc= &s->rc_context; |
758 AVCodecContext *a= s->avctx; | 758 AVCodecContext *a= s->avctx; |
759 int i; | 759 int i; |
760 double fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; | 760 double fps= 1/av_q2d(s->avctx->time_base); |
761 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1 | 761 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1 |
762 double avg_quantizer[5]; | 762 double avg_quantizer[5]; |
763 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits | 763 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits |
764 uint64_t available_bits[5]; | 764 uint64_t available_bits[5]; |
765 uint64_t all_const_bits; | 765 uint64_t all_const_bits; |