Mercurial > libavcodec.hg
comparison ratecontrol.c @ 1126:77ccf7fe3bd0 libavcodec
per context frame_rate_base, this should finally fix frame_rate related av sync issues
| author | michaelni |
|---|---|
| date | Wed, 12 Mar 2003 15:16:19 +0000 |
| parents | 1e39f273ecd6 |
| children | 6d6003cf89c2 |
comparison
equal
deleted
inserted
replaced
| 1125:0980ae063f4e | 1126:77ccf7fe3bd0 |
|---|---|
| 162 rcc->frame_count[rce.pict_type] ++; | 162 rcc->frame_count[rce.pict_type] ++; |
| 163 | 163 |
| 164 bits= rce.i_tex_bits + rce.p_tex_bits; | 164 bits= rce.i_tex_bits + rce.p_tex_bits; |
| 165 | 165 |
| 166 q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i); | 166 q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i); |
| 167 rcc->pass1_wanted_bits+= s->bit_rate/(s->frame_rate / (double)FRAME_RATE_BASE); | 167 rcc->pass1_wanted_bits+= s->bit_rate/(s->avctx->frame_rate / (double)s->avctx->frame_rate_base); |
| 168 } | 168 } |
| 169 } | 169 } |
| 170 | 170 |
| 171 } | 171 } |
| 172 | 172 |
| 195 return rce->qscale * (double)(rce->i_tex_bits + rce->p_tex_bits+1)/ bits; | 195 return rce->qscale * (double)(rce->i_tex_bits + rce->p_tex_bits+1)/ bits; |
| 196 } | 196 } |
| 197 | 197 |
| 198 static void update_rc_buffer(MpegEncContext *s, int frame_size){ | 198 static void update_rc_buffer(MpegEncContext *s, int frame_size){ |
| 199 RateControlContext *rcc= &s->rc_context; | 199 RateControlContext *rcc= &s->rc_context; |
| 200 const double fps= (double)s->frame_rate / FRAME_RATE_BASE; | 200 const double fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; |
| 201 const double buffer_size= s->avctx->rc_buffer_size; | 201 const double buffer_size= s->avctx->rc_buffer_size; |
| 202 const double min_rate= s->avctx->rc_min_rate/fps; | 202 const double min_rate= s->avctx->rc_min_rate/fps; |
| 203 const double max_rate= s->avctx->rc_max_rate/fps; | 203 const double max_rate= s->avctx->rc_max_rate/fps; |
| 204 | 204 |
| 205 if(buffer_size){ | 205 if(buffer_size){ |
| 569 Picture * const pic= &s->current_picture; | 569 Picture * const pic= &s->current_picture; |
| 570 emms_c(); | 570 emms_c(); |
| 571 | 571 |
| 572 get_qminmax(&qmin, &qmax, s, pict_type); | 572 get_qminmax(&qmin, &qmax, s, pict_type); |
| 573 | 573 |
| 574 fps= (double)s->frame_rate / FRAME_RATE_BASE; | 574 fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; |
| 575 //printf("input_pic_num:%d pic_num:%d frame_rate:%d\n", s->input_picture_number, s->picture_number, s->frame_rate); | 575 //printf("input_pic_num:%d pic_num:%d frame_rate:%d\n", s->input_picture_number, s->picture_number, s->frame_rate); |
| 576 /* update predictors */ | 576 /* update predictors */ |
| 577 if(picture_number>2){ | 577 if(picture_number>2){ |
| 578 const int last_var= s->last_pict_type == I_TYPE ? rcc->last_mb_var_sum : rcc->last_mc_mb_var_sum; | 578 const int last_var= s->last_pict_type == I_TYPE ? rcc->last_mb_var_sum : rcc->last_mc_mb_var_sum; |
| 579 update_predictor(&rcc->pred[s->last_pict_type], rcc->last_qscale, sqrt(last_var), s->frame_bits); | 579 update_predictor(&rcc->pred[s->last_pict_type], rcc->last_qscale, sqrt(last_var), s->frame_bits); |
| 696 | 696 |
| 697 static int init_pass2(MpegEncContext *s) | 697 static int init_pass2(MpegEncContext *s) |
| 698 { | 698 { |
| 699 RateControlContext *rcc= &s->rc_context; | 699 RateControlContext *rcc= &s->rc_context; |
| 700 int i; | 700 int i; |
| 701 double fps= (double)s->frame_rate / FRAME_RATE_BASE; | 701 double fps= (double)s->avctx->frame_rate / (double)s->avctx->frame_rate_base; |
| 702 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1 | 702 double complexity[5]={0,0,0,0,0}; // aproximate bits at quant=1 |
| 703 double avg_quantizer[5]; | 703 double avg_quantizer[5]; |
| 704 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits | 704 uint64_t const_bits[5]={0,0,0,0,0}; // quantizer idependant bits |
| 705 uint64_t available_bits[5]; | 705 uint64_t available_bits[5]; |
| 706 uint64_t all_const_bits; | 706 uint64_t all_const_bits; |
