int ff_rate_control_init(MpegEncContext *s)

{

    RateControlContext *rcc= &s->rc_context;

    int i;

    const char *error = NULL;

    static const char * const const_names[]={

        "PI",

        "E",

        "iTex",

        "pTex",

        "tex",

        "mv",

        "fCode",

        "iCount",

        "mcVar",

        "var",

        "isI",

        "isP",

        "isB",

        "avgQP",

        "qComp",

/*        "lastIQP",

        "lastPQP",

        "lastBQP",

        "nextNonBQP",*/

        "avgIITex",

        "avgPITex",

        "avgPPTex",

        "avgBPTex",

        "avgTex",

        NULL

    };

    static double (*func1[])(void *, double)={

        (void *)bits2qp,

        (void *)qp2bits,

        NULL

    };

    static const char * const func1_names[]={

        "bits2qp",

        "qp2bits",

        NULL

    };

    emms_c();



    rcc->rc_eq_eval = ff_parse(s->avctx->rc_eq, const_names, func1, func1_names, NULL, NULL, &error);

    if (!rcc->rc_eq_eval) {

        av_log(s->avctx, AV_LOG_ERROR, "Error parsing rc_eq \"%s\": %s\n", s->avctx->rc_eq, error? error : "");

        return -1;

    }



    for(i=0; i<5; i++){

        rcc->pred[i].coeff= FF_QP2LAMBDA * 7.0;

        rcc->pred[i].count= 1.0;



        rcc->pred[i].decay= 0.4;

        rcc->i_cplx_sum [i]=

        rcc->p_cplx_sum [i]=

        rcc->mv_bits_sum[i]=

        rcc->qscale_sum [i]=

        rcc->frame_count[i]= 1; // 1 is better because of 1/0 and such

        rcc->last_qscale_for[i]=FF_QP2LAMBDA * 5;

    }

    rcc->buffer_index= s->avctx->rc_initial_buffer_occupancy;



    if(s->flags&CODEC_FLAG_PASS2){

        int i;

        char *p;



        /* find number of pics */

        p= s->avctx->stats_in;

        for(i=-1; p; i++){

            p= strchr(p+1, ';');

        }

        i+= s->max_b_frames;

        if(i<=0 || i>=INT_MAX / sizeof(RateControlEntry))

            return -1;

        rcc->entry = av_mallocz(i*sizeof(RateControlEntry));

        rcc->num_entries= i;



        /* init all to skipped p frames (with b frames we might have a not encoded frame at the end FIXME) */

        for(i=0; i<rcc->num_entries; i++){

            RateControlEntry *rce= &rcc->entry[i];

            rce->pict_type= rce->new_pict_type=FF_P_TYPE;

            rce->qscale= rce->new_qscale=FF_QP2LAMBDA * 2;

            rce->misc_bits= s->mb_num + 10;

            rce->mb_var_sum= s->mb_num*100;

        }



        /* read stats */

        p= s->avctx->stats_in;

        for(i=0; i<rcc->num_entries - s->max_b_frames; i++){

            RateControlEntry *rce;

            int picture_number;

            int e;

            char *next;



            next= strchr(p, ';');

            if(next){

                (*next)=0; //sscanf in unbelievably slow on looong strings //FIXME copy / do not write

                next++;

            }

            e= sscanf(p, " in:%d ", &picture_number);



            assert(picture_number >= 0);

            assert(picture_number < rcc->num_entries);

            rce= &rcc->entry[picture_number];



            e+=sscanf(p, " in:%*d out:%*d type:%d q:%f itex:%d ptex:%d mv:%d misc:%d fcode:%d bcode:%d mc-var:%d var:%d icount:%d skipcount:%d hbits:%d",

                   &rce->pict_type, &rce->qscale, &rce->i_tex_bits, &rce->p_tex_bits, &rce->mv_bits, &rce->misc_bits,

                   &rce->f_code, &rce->b_code, &rce->mc_mb_var_sum, &rce->mb_var_sum, &rce->i_count, &rce->skip_count, &rce->header_bits);

            if(e!=14){

                av_log(s->avctx, AV_LOG_ERROR, "statistics are damaged at line %d, parser out=%d\n", i, e);

                return -1;

            }



            p= next;

        }



        if(init_pass2(s) < 0) return -1;



        //FIXME maybe move to end

        if((s->flags&CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) {

#ifdef CONFIG_LIBXVID

            return ff_xvid_rate_control_init(s);

#else

            av_log(s->avctx, AV_LOG_ERROR, "Xvid ratecontrol requires libavcodec compiled with Xvid support.\n");

            return -1;

#endif

        }

    }



    if(!(s->flags&CODEC_FLAG_PASS2)){



        rcc->short_term_qsum=0.001;

        rcc->short_term_qcount=0.001;



        rcc->pass1_rc_eq_output_sum= 0.001;

        rcc->pass1_wanted_bits=0.001;



        if(s->avctx->qblur > 1.0){

            av_log(s->avctx, AV_LOG_ERROR, "qblur too large\n");

            return -1;

        }

        /* init stuff with the user specified complexity */

        if(s->avctx->rc_initial_cplx){

            for(i=0; i<60*30; i++){

                double bits= s->avctx->rc_initial_cplx * (i/10000.0 + 1.0)*s->mb_num;

                RateControlEntry rce;

                double q;



                if     (i%((s->gop_size+3)/4)==0) rce.pict_type= FF_I_TYPE;

                else if(i%(s->max_b_frames+1))    rce.pict_type= FF_B_TYPE;

                else                              rce.pict_type= FF_P_TYPE;



                rce.new_pict_type= rce.pict_type;

                rce.mc_mb_var_sum= bits*s->mb_num/100000;

                rce.mb_var_sum   = s->mb_num;

                rce.qscale   = FF_QP2LAMBDA * 2;

                rce.f_code   = 2;

                rce.b_code   = 1;

                rce.misc_bits= 1;



                if(s->pict_type== FF_I_TYPE){

                    rce.i_count   = s->mb_num;

                    rce.i_tex_bits= bits;

                    rce.p_tex_bits= 0;

                    rce.mv_bits= 0;

                }else{

                    rce.i_count   = 0; //FIXME we do know this approx

                    rce.i_tex_bits= 0;

                    rce.p_tex_bits= bits*0.9;

                    rce.mv_bits= bits*0.1;

                }

                rcc->i_cplx_sum [rce.pict_type] += rce.i_tex_bits*rce.qscale;

                rcc->p_cplx_sum [rce.pict_type] += rce.p_tex_bits*rce.qscale;

                rcc->mv_bits_sum[rce.pict_type] += rce.mv_bits;

                rcc->frame_count[rce.pict_type] ++;



                bits= rce.i_tex_bits + rce.p_tex_bits;



                q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i);

                rcc->pass1_wanted_bits+= s->bit_rate/(1/av_q2d(s->avctx->time_base)); //FIXME misbehaves a little for variable fps

            }

        }



    }



    return 0;

}

int ff_rate_control_init(MpegEncContext *s)

{

    RateControlContext *rcc= &s->rc_context;

    int i;

    const char *error = NULL;

    static const char * const const_names[]={

        "PI",

        "E",

        "iTex",

        "pTex",

        "tex",

        "mv",

        "fCode",

        "iCount",

        "mcVar",

        "var",

        "isI",

        "isP",

        "isB",

        "avgQP",

        "qComp",









        "avgIITex",

        "avgPITex",

        "avgPPTex",

        "avgBPTex",

        "avgTex",

        NULL

    };

    static double (*func1[])(void *, double)={

        (void *)bits2qp,

        (void *)qp2bits,

        NULL

    };

    static const char * const func1_names[]={

        "bits2qp",

        "qp2bits",

        NULL

    };

    emms_c();



    rcc->rc_eq_eval = ff_parse(s->avctx->rc_eq, const_names, func1, func1_names, NULL, NULL, &error);

    if (!rcc->rc_eq_eval) {

        av_log(s->avctx, AV_LOG_ERROR, "Error parsing rc_eq \"%s\": %s\n", s->avctx->rc_eq, error? error : "");

        return -1;

    }



    for(i=0; i<5; i++){

        rcc->pred[i].coeff= FF_QP2LAMBDA * 7.0;

        rcc->pred[i].count= 1.0;



        rcc->pred[i].decay= 0.4;

        rcc->i_cplx_sum [i]=

        rcc->p_cplx_sum [i]=

        rcc->mv_bits_sum[i]=

        rcc->qscale_sum [i]=

        rcc->frame_count[i]= 1; 

        rcc->last_qscale_for[i]=FF_QP2LAMBDA * 5;

    }

    rcc->buffer_index= s->avctx->rc_initial_buffer_occupancy;



    if(s->flags&CODEC_FLAG_PASS2){

        int i;

        char *p;



        

        p= s->avctx->stats_in;

        for(i=-1; p; i++){

            p= strchr(p+1, ';');

        }

        i+= s->max_b_frames;

        if(i<=0 || i>=INT_MAX / sizeof(RateControlEntry))

            return -1;

        rcc->entry = av_mallocz(i*sizeof(RateControlEntry));

        rcc->num_entries= i;



        

        for(i=0; i<rcc->num_entries; i++){

            RateControlEntry *rce= &rcc->entry[i];

            rce->pict_type= rce->new_pict_type=FF_P_TYPE;

            rce->qscale= rce->new_qscale=FF_QP2LAMBDA * 2;

            rce->misc_bits= s->mb_num + 10;

            rce->mb_var_sum= s->mb_num*100;

        }



        

        p= s->avctx->stats_in;

        for(i=0; i<rcc->num_entries - s->max_b_frames; i++){

            RateControlEntry *rce;

            int picture_number;

            int e;

            char *next;



            next= strchr(p, ';');

            if(next){

                (*next)=0; 

                next++;

            }

            e= sscanf(p, " in:%d ", &picture_number);



            assert(picture_number >= 0);

            assert(picture_number < rcc->num_entries);

            rce= &rcc->entry[picture_number];



            e+=sscanf(p, " in:%*d out:%*d type:%d q:%f itex:%d ptex:%d mv:%d misc:%d fcode:%d bcode:%d mc-var:%d var:%d icount:%d skipcount:%d hbits:%d",

                   &rce->pict_type, &rce->qscale, &rce->i_tex_bits, &rce->p_tex_bits, &rce->mv_bits, &rce->misc_bits,

                   &rce->f_code, &rce->b_code, &rce->mc_mb_var_sum, &rce->mb_var_sum, &rce->i_count, &rce->skip_count, &rce->header_bits);

            if(e!=14){

                av_log(s->avctx, AV_LOG_ERROR, "statistics are damaged at line %d, parser out=%d\n", i, e);

                return -1;

            }



            p= next;

        }



        if(init_pass2(s) < 0) return -1;



        

        if((s->flags&CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) {

#ifdef CONFIG_LIBXVID

            return ff_xvid_rate_control_init(s);

#else

            av_log(s->avctx, AV_LOG_ERROR, "Xvid ratecontrol requires libavcodec compiled with Xvid support.\n");

            return -1;

#endif

        }

    }



    if(!(s->flags&CODEC_FLAG_PASS2)){



        rcc->short_term_qsum=0.001;

        rcc->short_term_qcount=0.001;



        rcc->pass1_rc_eq_output_sum= 0.001;

        rcc->pass1_wanted_bits=0.001;



        if(s->avctx->qblur > 1.0){

            av_log(s->avctx, AV_LOG_ERROR, "qblur too large\n");

            return -1;

        }

        

        if(s->avctx->rc_initial_cplx){

            for(i=0; i<60*30; i++){

                double bits= s->avctx->rc_initial_cplx * (i/10000.0 + 1.0)*s->mb_num;

                RateControlEntry rce;

                double q;



                if     (i%((s->gop_size+3)/4)==0) rce.pict_type= FF_I_TYPE;

                else if(i%(s->max_b_frames+1))    rce.pict_type= FF_B_TYPE;

                else                              rce.pict_type= FF_P_TYPE;



                rce.new_pict_type= rce.pict_type;

                rce.mc_mb_var_sum= bits*s->mb_num/100000;

                rce.mb_var_sum   = s->mb_num;

                rce.qscale   = FF_QP2LAMBDA * 2;

                rce.f_code   = 2;

                rce.b_code   = 1;

                rce.misc_bits= 1;



                if(s->pict_type== FF_I_TYPE){

                    rce.i_count   = s->mb_num;

                    rce.i_tex_bits= bits;

                    rce.p_tex_bits= 0;

                    rce.mv_bits= 0;

                }else{

                    rce.i_count   = 0; 

                    rce.i_tex_bits= 0;

                    rce.p_tex_bits= bits*0.9;

                    rce.mv_bits= bits*0.1;

                }

                rcc->i_cplx_sum [rce.pict_type] += rce.i_tex_bits*rce.qscale;

                rcc->p_cplx_sum [rce.pict_type] += rce.p_tex_bits*rce.qscale;

                rcc->mv_bits_sum[rce.pict_type] += rce.mv_bits;

                rcc->frame_count[rce.pict_type] ++;



                bits= rce.i_tex_bits + rce.p_tex_bits;



                q= get_qscale(s, &rce, rcc->pass1_wanted_bits/rcc->pass1_rc_eq_output_sum, i);

                rcc->pass1_wanted_bits+= s->bit_rate/(1/av_q2d(s->avctx->time_base)); 

            }

        }



    }



    return 0;

}

    rcc->rc_eq_eval = ff_parse(s->avctx->rc_eq, const_names, func1, func1_names, NULL, NULL, &error);
VAR_6intVAR_6 VAR_6ff_rate_control_initVAR_6(VAR_6MpegEncContextVAR_6 *VAR_6VAR_0VAR_6)

{

    VAR_6RateControlContextVAR_6 *VAR_6rccVAR_6= &VAR_6VAR_0VAR_6->VAR_6rc_contextVAR_6;

    VAR_6intVAR_6 VAR_6VAR_7VAR_6;

    VAR_6constVAR_6 VAR_6charVAR_6 *VAR_6VAR_2VAR_6 = VAR_6NULLVAR_6;

    VAR_6staticVAR_6 VAR_6constVAR_6 VAR_6charVAR_6 * VAR_6constVAR_6 VAR_6VAR_3VAR_6[]={

        "VAR_6PIVAR_6",

        "VAR_6EVAR_6",

        "VAR_6iTexVAR_6",

        "VAR_6pTexVAR_6",

        "VAR_6texVAR_6",

        "VAR_6mvVAR_6",

        "VAR_6fCodeVAR_6",

        "VAR_6iCountVAR_6",

        "VAR_6mcVarVAR_6",

        "VAR_6varVAR_6",

        "VAR_6isIVAR_6",

        "VAR_6isPVAR_6",

        "VAR_6isBVAR_6",

        "VAR_6avgQPVAR_6",

        "VAR_6qCompVAR_6",









        "VAR_6avgIITexVAR_6",

        "VAR_6avgPITexVAR_6",

        "VAR_6avgPPTexVAR_6",

        "VAR_6avgBPTexVAR_6",

        "VAR_6avgTexVAR_6",

        VAR_6NULLVAR_6

    };

    VAR_6staticVAR_6 VAR_6doubleVAR_6 (*VAR_6VAR_4VAR_6[])(VAR_6voidVAR_6 *, VAR_6doubleVAR_6)={

        (VAR_6voidVAR_6 *)VAR_6bits2qpVAR_6,

        (VAR_6voidVAR_6 *)VAR_6qp2bitsVAR_6,

        VAR_6NULLVAR_6

    };

    VAR_6staticVAR_6 VAR_6constVAR_6 VAR_6charVAR_6 * VAR_6constVAR_6 VAR_6func1_namesVAR_6[]={

        "VAR_6bits2qpVAR_6",

        "VAR_6qp2bitsVAR_6",

        VAR_6NULLVAR_6

    };

    VAR_6emms_cVAR_6();



    VAR_6rccVAR_6->VAR_6rc_eq_evalVAR_6 = VAR_6ff_parseVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_eqVAR_6, VAR_6VAR_3VAR_6, VAR_6VAR_4VAR_6, VAR_6func1_namesVAR_6, VAR_6NULLVAR_6, VAR_6NULLVAR_6, &VAR_6VAR_2VAR_6);

    VAR_6ifVAR_6 (!VAR_6rccVAR_6->VAR_6rc_eq_evalVAR_6) {

        VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6ErrorVAR_6 VAR_6parsingVAR_6 VAR_6rc_eqVAR_6 \"%VAR_6VAR_0VAR_6\": %VAR_6VAR_0VAR_6\VAR_6nVAR_6", VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_eqVAR_6, VAR_6VAR_2VAR_6? VAR_6VAR_2VAR_6 : "");

        VAR_6returnVAR_6 -VAR_61VAR_6;

    }



    VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_65VAR_6; VAR_6VAR_7VAR_6++){

        VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6coeffVAR_6= VAR_6FF_QP2LAMBDAVAR_6 * VAR_67VAR_6.VAR_60VAR_6;

        VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6countVAR_6= VAR_61VAR_6.VAR_60VAR_6;



        VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6decayVAR_6= VAR_60VAR_6.VAR_64VAR_6;

        VAR_6rccVAR_6->VAR_6i_cplx_sumVAR_6 [VAR_6VAR_7VAR_6]=

        VAR_6rccVAR_6->VAR_6p_cplx_sumVAR_6 [VAR_6VAR_7VAR_6]=

        VAR_6rccVAR_6->VAR_6mv_bits_sumVAR_6[VAR_6VAR_7VAR_6]=

        VAR_6rccVAR_6->VAR_6qscale_sumVAR_6 [VAR_6VAR_7VAR_6]=

        VAR_6rccVAR_6->VAR_6frame_countVAR_6[VAR_6VAR_7VAR_6]= VAR_61VAR_6; 

        VAR_6rccVAR_6->VAR_6last_qscale_forVAR_6[VAR_6VAR_7VAR_6]=VAR_6FF_QP2LAMBDAVAR_6 * VAR_65VAR_6;

    }

    VAR_6rccVAR_6->VAR_6buffer_indexVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_buffer_occupancyVAR_6;



    VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6){

        VAR_6intVAR_6 VAR_6VAR_7VAR_6;

        VAR_6charVAR_6 *VAR_6pVAR_6;



        

        VAR_6pVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6stats_inVAR_6;

        VAR_6forVAR_6(VAR_6VAR_7VAR_6=-VAR_61VAR_6; VAR_6pVAR_6; VAR_6VAR_7VAR_6++){

            VAR_6pVAR_6= VAR_6strchrVAR_6(VAR_6pVAR_6+VAR_61VAR_6, ';');

        }

        VAR_6VAR_7VAR_6+= VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6;

        VAR_6ifVAR_6(VAR_6VAR_7VAR_6<=VAR_60VAR_6 || VAR_6VAR_7VAR_6>=VAR_6INT_MAXVAR_6 / VAR_6sizeofVAR_6(VAR_6RateControlEntryVAR_6))

            VAR_6returnVAR_6 -VAR_61VAR_6;

        VAR_6rccVAR_6->VAR_6entryVAR_6 = VAR_6av_malloczVAR_6(VAR_6VAR_7VAR_6*VAR_6sizeofVAR_6(VAR_6RateControlEntryVAR_6));

        VAR_6rccVAR_6->VAR_6num_entriesVAR_6= VAR_6VAR_7VAR_6;



        

        VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_6rccVAR_6->VAR_6num_entriesVAR_6; VAR_6VAR_7VAR_6++){

            VAR_6RateControlEntryVAR_6 *VAR_6rceVAR_6= &VAR_6rccVAR_6->VAR_6entryVAR_6[VAR_6VAR_7VAR_6];

            VAR_6rceVAR_6->VAR_6pict_typeVAR_6= VAR_6rceVAR_6->VAR_6new_pict_typeVAR_6=VAR_6FF_P_TYPEVAR_6;

            VAR_6rceVAR_6->VAR_6qscaleVAR_6= VAR_6rceVAR_6->VAR_6new_qscaleVAR_6=VAR_6FF_QP2LAMBDAVAR_6 * VAR_62VAR_6;

            VAR_6rceVAR_6->VAR_6misc_bitsVAR_6= VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6 + VAR_610VAR_6;

            VAR_6rceVAR_6->VAR_6mb_var_sumVAR_6= VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6*VAR_6100VAR_6;

        }



        

        VAR_6pVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6stats_inVAR_6;

        VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_6rccVAR_6->VAR_6num_entriesVAR_6 - VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6; VAR_6VAR_7VAR_6++){

            VAR_6RateControlEntryVAR_6 *VAR_6rceVAR_6;

            VAR_6intVAR_6 VAR_6picture_numberVAR_6;

            VAR_6intVAR_6 VAR_6eVAR_6;

            VAR_6charVAR_6 *VAR_6nextVAR_6;



            VAR_6nextVAR_6= VAR_6strchrVAR_6(VAR_6pVAR_6, ';');

            VAR_6ifVAR_6(VAR_6nextVAR_6){

                (*VAR_6nextVAR_6)=VAR_60VAR_6; 

                VAR_6nextVAR_6++;

            }

            VAR_6eVAR_6= VAR_6sscanfVAR_6(VAR_6pVAR_6, " VAR_6inVAR_6:%VAR_6dVAR_6 ", &VAR_6picture_numberVAR_6);



            VAR_6assertVAR_6(VAR_6picture_numberVAR_6 >= VAR_60VAR_6);

            VAR_6assertVAR_6(VAR_6picture_numberVAR_6 < VAR_6rccVAR_6->VAR_6num_entriesVAR_6);

            VAR_6rceVAR_6= &VAR_6rccVAR_6->VAR_6entryVAR_6[VAR_6picture_numberVAR_6];



            VAR_6eVAR_6+=VAR_6sscanfVAR_6(VAR_6pVAR_6, " VAR_6inVAR_6:%*VAR_6dVAR_6 VAR_6outVAR_6:%*VAR_6dVAR_6 VAR_6typeVAR_6:%VAR_6dVAR_6 VAR_6qVAR_6:%VAR_6fVAR_6 VAR_6itexVAR_6:%VAR_6dVAR_6 VAR_6ptexVAR_6:%VAR_6dVAR_6 VAR_6mvVAR_6:%VAR_6dVAR_6 VAR_6miscVAR_6:%VAR_6dVAR_6 VAR_6fcodeVAR_6:%VAR_6dVAR_6 VAR_6bcodeVAR_6:%VAR_6dVAR_6 VAR_6mcVAR_6-VAR_6varVAR_6:%VAR_6dVAR_6 VAR_6varVAR_6:%VAR_6dVAR_6 VAR_6icountVAR_6:%VAR_6dVAR_6 VAR_6skipcountVAR_6:%VAR_6dVAR_6 VAR_6hbitsVAR_6:%VAR_6dVAR_6",

                   &VAR_6rceVAR_6->VAR_6pict_typeVAR_6, &VAR_6rceVAR_6->VAR_6qscaleVAR_6, &VAR_6rceVAR_6->VAR_6i_tex_bitsVAR_6, &VAR_6rceVAR_6->VAR_6p_tex_bitsVAR_6, &VAR_6rceVAR_6->VAR_6mv_bitsVAR_6, &VAR_6rceVAR_6->VAR_6misc_bitsVAR_6,

                   &VAR_6rceVAR_6->VAR_6f_codeVAR_6, &VAR_6rceVAR_6->VAR_6b_codeVAR_6, &VAR_6rceVAR_6->VAR_6mc_mb_var_sumVAR_6, &VAR_6rceVAR_6->VAR_6mb_var_sumVAR_6, &VAR_6rceVAR_6->VAR_6i_countVAR_6, &VAR_6rceVAR_6->VAR_6skip_countVAR_6, &VAR_6rceVAR_6->VAR_6header_bitsVAR_6);

            VAR_6ifVAR_6(VAR_6eVAR_6!=VAR_614VAR_6){

                VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6statisticsVAR_6 VAR_6areVAR_6 VAR_6damagedVAR_6 VAR_6atVAR_6 VAR_6lineVAR_6 %VAR_6dVAR_6, VAR_6parserVAR_6 VAR_6outVAR_6=%VAR_6dVAR_6\VAR_6nVAR_6", VAR_6VAR_7VAR_6, VAR_6eVAR_6);

                VAR_6returnVAR_6 -VAR_61VAR_6;

            }



            VAR_6pVAR_6= VAR_6nextVAR_6;

        }



        VAR_6ifVAR_6(VAR_6init_pass2VAR_6(VAR_6VAR_0VAR_6) < VAR_60VAR_6) VAR_6returnVAR_6 -VAR_61VAR_6;



        

        VAR_6ifVAR_6((VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6) && VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_strategyVAR_6 == VAR_6FF_RC_STRATEGY_XVIDVAR_6) {

#VAR_6ifdefVAR_6 VAR_6CONFIG_LIBXVIDVAR_6

            VAR_6returnVAR_6 VAR_6ff_xvid_rate_control_initVAR_6(VAR_6VAR_0VAR_6);

#VAR_6elseVAR_6

            VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6XvidVAR_6 VAR_6ratecontrolVAR_6 VAR_6requiresVAR_6 VAR_6libavcodecVAR_6 VAR_6compiledVAR_6 VAR_6withVAR_6 VAR_6XvidVAR_6 VAR_6supportVAR_6.\VAR_6nVAR_6");

            VAR_6returnVAR_6 -VAR_61VAR_6;

#VAR_6endifVAR_6

        }

    }



    VAR_6ifVAR_6(!(VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6)){



        VAR_6rccVAR_6->VAR_6short_term_qsumVAR_6=VAR_60VAR_6.VAR_6001VAR_6;

        VAR_6rccVAR_6->VAR_6short_term_qcountVAR_6=VAR_60VAR_6.VAR_6001VAR_6;



        VAR_6rccVAR_6->VAR_6pass1_rc_eq_output_sumVAR_6= VAR_60VAR_6.VAR_6001VAR_6;

        VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6=VAR_60VAR_6.VAR_6001VAR_6;



        VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6qblurVAR_6 > VAR_61VAR_6.VAR_60VAR_6){

            VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6qblurVAR_6 VAR_6tooVAR_6 VAR_6largeVAR_6\VAR_6nVAR_6");

            VAR_6returnVAR_6 -VAR_61VAR_6;

        }

        

        VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_cplxVAR_6){

            VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_660VAR_6*VAR_630VAR_6; VAR_6VAR_7VAR_6++){

                VAR_6doubleVAR_6 VAR_6bitsVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_cplxVAR_6 * (VAR_6VAR_7VAR_6/VAR_610000VAR_6.VAR_60VAR_6 + VAR_61VAR_6.VAR_60VAR_6)*VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6;

                VAR_6RateControlEntryVAR_6 VAR_6rceVAR_6;

                VAR_6doubleVAR_6 VAR_6qVAR_6;



                VAR_6ifVAR_6     (VAR_6VAR_7VAR_6%((VAR_6VAR_0VAR_6->VAR_6gop_sizeVAR_6+VAR_63VAR_6)/VAR_64VAR_6)==VAR_60VAR_6) VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_I_TYPEVAR_6;

                VAR_6elseVAR_6 VAR_6ifVAR_6(VAR_6VAR_7VAR_6%(VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6+VAR_61VAR_6))    VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_B_TYPEVAR_6;

                VAR_6elseVAR_6                              VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_P_TYPEVAR_6;



                VAR_6rceVAR_6.VAR_6new_pict_typeVAR_6= VAR_6rceVAR_6.VAR_6pict_typeVAR_6;

                VAR_6rceVAR_6.VAR_6mc_mb_var_sumVAR_6= VAR_6bitsVAR_6*VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6/VAR_6100000VAR_6;

                VAR_6rceVAR_6.VAR_6mb_var_sumVAR_6   = VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6;

                VAR_6rceVAR_6.VAR_6qscaleVAR_6   = VAR_6FF_QP2LAMBDAVAR_6 * VAR_62VAR_6;

                VAR_6rceVAR_6.VAR_6f_codeVAR_6   = VAR_62VAR_6;

                VAR_6rceVAR_6.VAR_6b_codeVAR_6   = VAR_61VAR_6;

                VAR_6rceVAR_6.VAR_6misc_bitsVAR_6= VAR_61VAR_6;



                VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6pict_typeVAR_6== VAR_6FF_I_TYPEVAR_6){

                    VAR_6rceVAR_6.VAR_6i_countVAR_6   = VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6;

                    VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6= VAR_6bitsVAR_6;

                    VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6= VAR_60VAR_6;

                    VAR_6rceVAR_6.VAR_6mv_bitsVAR_6= VAR_60VAR_6;

                }VAR_6elseVAR_6{

                    VAR_6rceVAR_6.VAR_6i_countVAR_6   = VAR_60VAR_6; 

                    VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6= VAR_60VAR_6;

                    VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6= VAR_6bitsVAR_6*VAR_60VAR_6.VAR_69VAR_6;

                    VAR_6rceVAR_6.VAR_6mv_bitsVAR_6= VAR_6bitsVAR_6*VAR_60VAR_6.VAR_61VAR_6;

                }

                VAR_6rccVAR_6->VAR_6i_cplx_sumVAR_6 [VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6*VAR_6rceVAR_6.VAR_6qscaleVAR_6;

                VAR_6rccVAR_6->VAR_6p_cplx_sumVAR_6 [VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6*VAR_6rceVAR_6.VAR_6qscaleVAR_6;

                VAR_6rccVAR_6->VAR_6mv_bits_sumVAR_6[VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6mv_bitsVAR_6;

                VAR_6rccVAR_6->VAR_6frame_countVAR_6[VAR_6rceVAR_6.VAR_6pict_typeVAR_6] ++;



                VAR_6bitsVAR_6= VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6 + VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6;



                VAR_6qVAR_6= VAR_6get_qscaleVAR_6(VAR_6VAR_0VAR_6, &VAR_6rceVAR_6, VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6/VAR_6rccVAR_6->VAR_6pass1_rc_eq_output_sumVAR_6, VAR_6VAR_7VAR_6);

                VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6+= VAR_6VAR_0VAR_6->VAR_6bit_rateVAR_6/(VAR_61VAR_6/VAR_6av_q2dVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6time_baseVAR_6)); 

            }

        }



    }



    VAR_6returnVAR_6 VAR_60VAR_6;

}

VAR_6intVAR_6 VAR_6ff_rate_control_initVAR_6(VAR_6MpegEncContextVAR_6 *VAR_6VAR_0VAR_6)
{ VAR_6RateControlContextVAR_6 *VAR_6rccVAR_6= &VAR_6VAR_0VAR_6->VAR_6rc_contextVAR_6; VAR_6intVAR_6 VAR_6VAR_7VAR_6; VAR_6constVAR_6 VAR_6charVAR_6 *VAR_6VAR_2VAR_6 = VAR_6NULLVAR_6; VAR_6staticVAR_6 VAR_6constVAR_6 VAR_6charVAR_6 * VAR_6constVAR_6 VAR_6VAR_3VAR_6[]={ "VAR_6PIVAR_6",
"VAR_6EVAR_6",
"VAR_6iTexVAR_6",
"VAR_6pTexVAR_6",
"VAR_6texVAR_6",
"VAR_6mvVAR_6",
"VAR_6fCodeVAR_6",
"VAR_6iCountVAR_6",
"VAR_6mcVarVAR_6",
"VAR_6varVAR_6",
"VAR_6isIVAR_6",
"VAR_6isPVAR_6",
"VAR_6isBVAR_6",
"VAR_6avgQPVAR_6",
"VAR_6qCompVAR_6",
"VAR_6avgIITexVAR_6",
"VAR_6avgPITexVAR_6",
"VAR_6avgPPTexVAR_6",
"VAR_6avgBPTexVAR_6",
"VAR_6avgTexVAR_6",
VAR_6NULLVAR_6
}; VAR_6staticVAR_6 VAR_6doubleVAR_6 (*VAR_6VAR_4VAR_6[])(VAR_6voidVAR_6 *, VAR_6doubleVAR_6)={ (VAR_6voidVAR_6 *)VAR_6bits2qpVAR_6,
(VAR_6voidVAR_6 *)VAR_6qp2bitsVAR_6,
VAR_6NULLVAR_6
}; VAR_6staticVAR_6 VAR_6constVAR_6 VAR_6charVAR_6 * VAR_6constVAR_6 VAR_6func1_namesVAR_6[]={ "VAR_6bits2qpVAR_6",
"VAR_6qp2bitsVAR_6",
VAR_6NULLVAR_6
}; VAR_6emms_cVAR_6(); VAR_6rccVAR_6->VAR_6rc_eq_evalVAR_6 = VAR_6ff_parseVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_eqVAR_6, VAR_6VAR_3VAR_6, VAR_6VAR_4VAR_6, VAR_6func1_namesVAR_6, VAR_6NULLVAR_6, VAR_6NULLVAR_6, &VAR_6VAR_2VAR_6); VAR_6ifVAR_6 (!VAR_6rccVAR_6->VAR_6rc_eq_evalVAR_6) { VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6ErrorVAR_6 VAR_6parsingVAR_6 VAR_6rc_eqVAR_6 \"%VAR_6VAR_0VAR_6\": %VAR_6VAR_0VAR_6\VAR_6nVAR_6", VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_eqVAR_6, VAR_6VAR_2VAR_6? VAR_6VAR_2VAR_6 : ""); VAR_6returnVAR_6 -VAR_61VAR_6; } VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_65VAR_6; VAR_6VAR_7VAR_6++){ VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6coeffVAR_6= VAR_6FF_QP2LAMBDAVAR_6 * VAR_67VAR_6.VAR_60VAR_6; VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6countVAR_6= VAR_61VAR_6.VAR_60VAR_6; VAR_6rccVAR_6->VAR_6predVAR_6[VAR_6VAR_7VAR_6].VAR_6decayVAR_6= VAR_60VAR_6.VAR_64VAR_6; VAR_6rccVAR_6->VAR_6i_cplx_sumVAR_6 [VAR_6VAR_7VAR_6]=
VAR_6rccVAR_6->VAR_6p_cplx_sumVAR_6 [VAR_6VAR_7VAR_6]=
VAR_6rccVAR_6->VAR_6mv_bits_sumVAR_6[VAR_6VAR_7VAR_6]=
VAR_6rccVAR_6->VAR_6qscale_sumVAR_6 [VAR_6VAR_7VAR_6]=
VAR_6rccVAR_6->VAR_6frame_countVAR_6[VAR_6VAR_7VAR_6]= VAR_61VAR_6; VAR_6rccVAR_6->VAR_6last_qscale_forVAR_6[VAR_6VAR_7VAR_6]=VAR_6FF_QP2LAMBDAVAR_6 * VAR_65VAR_6; } VAR_6rccVAR_6->VAR_6buffer_indexVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_buffer_occupancyVAR_6; VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6){ VAR_6intVAR_6 VAR_6VAR_7VAR_6; VAR_6charVAR_6 *VAR_6pVAR_6; VAR_6pVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6stats_inVAR_6; VAR_6forVAR_6(VAR_6VAR_7VAR_6=-VAR_61VAR_6; VAR_6pVAR_6; VAR_6VAR_7VAR_6++){ VAR_6pVAR_6= VAR_6strchrVAR_6(VAR_6pVAR_6+VAR_61VAR_6, ';'); } VAR_6VAR_7VAR_6+= VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6; VAR_6ifVAR_6(VAR_6VAR_7VAR_6<=VAR_60VAR_6 || VAR_6VAR_7VAR_6>=VAR_6INT_MAXVAR_6 / VAR_6sizeofVAR_6(VAR_6RateControlEntryVAR_6))
VAR_6returnVAR_6 -VAR_61VAR_6; VAR_6rccVAR_6->VAR_6entryVAR_6 = VAR_6av_malloczVAR_6(VAR_6VAR_7VAR_6*VAR_6sizeofVAR_6(VAR_6RateControlEntryVAR_6)); VAR_6rccVAR_6->VAR_6num_entriesVAR_6= VAR_6VAR_7VAR_6; VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_6rccVAR_6->VAR_6num_entriesVAR_6; VAR_6VAR_7VAR_6++){ VAR_6RateControlEntryVAR_6 *VAR_6rceVAR_6= &VAR_6rccVAR_6->VAR_6entryVAR_6[VAR_6VAR_7VAR_6]; VAR_6rceVAR_6->VAR_6pict_typeVAR_6= VAR_6rceVAR_6->VAR_6new_pict_typeVAR_6=VAR_6FF_P_TYPEVAR_6; VAR_6rceVAR_6->VAR_6qscaleVAR_6= VAR_6rceVAR_6->VAR_6new_qscaleVAR_6=VAR_6FF_QP2LAMBDAVAR_6 * VAR_62VAR_6; VAR_6rceVAR_6->VAR_6misc_bitsVAR_6= VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6 + VAR_610VAR_6; VAR_6rceVAR_6->VAR_6mb_var_sumVAR_6= VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6*VAR_6100VAR_6; } VAR_6pVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6stats_inVAR_6; VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_6rccVAR_6->VAR_6num_entriesVAR_6 - VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6; VAR_6VAR_7VAR_6++){ VAR_6RateControlEntryVAR_6 *VAR_6rceVAR_6; VAR_6intVAR_6 VAR_6picture_numberVAR_6; VAR_6intVAR_6 VAR_6eVAR_6; VAR_6charVAR_6 *VAR_6nextVAR_6; VAR_6nextVAR_6= VAR_6strchrVAR_6(VAR_6pVAR_6, ';'); VAR_6ifVAR_6(VAR_6nextVAR_6){ (*VAR_6nextVAR_6)=VAR_60VAR_6; VAR_6nextVAR_6++; } VAR_6eVAR_6= VAR_6sscanfVAR_6(VAR_6pVAR_6, " VAR_6inVAR_6:%VAR_6dVAR_6 ", &VAR_6picture_numberVAR_6); VAR_6assertVAR_6(VAR_6picture_numberVAR_6 >= VAR_60VAR_6); VAR_6assertVAR_6(VAR_6picture_numberVAR_6 < VAR_6rccVAR_6->VAR_6num_entriesVAR_6); VAR_6rceVAR_6= &VAR_6rccVAR_6->VAR_6entryVAR_6[VAR_6picture_numberVAR_6]; VAR_6eVAR_6+=VAR_6sscanfVAR_6(VAR_6pVAR_6, " VAR_6inVAR_6:%*VAR_6dVAR_6 VAR_6outVAR_6:%*VAR_6dVAR_6 VAR_6typeVAR_6:%VAR_6dVAR_6 VAR_6qVAR_6:%VAR_6fVAR_6 VAR_6itexVAR_6:%VAR_6dVAR_6 VAR_6ptexVAR_6:%VAR_6dVAR_6 VAR_6mvVAR_6:%VAR_6dVAR_6 VAR_6miscVAR_6:%VAR_6dVAR_6 VAR_6fcodeVAR_6:%VAR_6dVAR_6 VAR_6bcodeVAR_6:%VAR_6dVAR_6 VAR_6mcVAR_6-VAR_6varVAR_6:%VAR_6dVAR_6 VAR_6varVAR_6:%VAR_6dVAR_6 VAR_6icountVAR_6:%VAR_6dVAR_6 VAR_6skipcountVAR_6:%VAR_6dVAR_6 VAR_6hbitsVAR_6:%VAR_6dVAR_6",
&VAR_6rceVAR_6->VAR_6pict_typeVAR_6, &VAR_6rceVAR_6->VAR_6qscaleVAR_6, &VAR_6rceVAR_6->VAR_6i_tex_bitsVAR_6, &VAR_6rceVAR_6->VAR_6p_tex_bitsVAR_6, &VAR_6rceVAR_6->VAR_6mv_bitsVAR_6, &VAR_6rceVAR_6->VAR_6misc_bitsVAR_6,
&VAR_6rceVAR_6->VAR_6f_codeVAR_6, &VAR_6rceVAR_6->VAR_6b_codeVAR_6, &VAR_6rceVAR_6->VAR_6mc_mb_var_sumVAR_6, &VAR_6rceVAR_6->VAR_6mb_var_sumVAR_6, &VAR_6rceVAR_6->VAR_6i_countVAR_6, &VAR_6rceVAR_6->VAR_6skip_countVAR_6, &VAR_6rceVAR_6->VAR_6header_bitsVAR_6); VAR_6ifVAR_6(VAR_6eVAR_6!=VAR_614VAR_6){ VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6statisticsVAR_6 VAR_6areVAR_6 VAR_6damagedVAR_6 VAR_6atVAR_6 VAR_6lineVAR_6 %VAR_6dVAR_6, VAR_6parserVAR_6 VAR_6outVAR_6=%VAR_6dVAR_6\VAR_6nVAR_6", VAR_6VAR_7VAR_6, VAR_6eVAR_6); VAR_6returnVAR_6 -VAR_61VAR_6; } VAR_6pVAR_6= VAR_6nextVAR_6; } VAR_6ifVAR_6(VAR_6init_pass2VAR_6(VAR_6VAR_0VAR_6) < VAR_60VAR_6) VAR_6returnVAR_6 -VAR_61VAR_6; VAR_6ifVAR_6((VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6) && VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_strategyVAR_6 == VAR_6FF_RC_STRATEGY_XVIDVAR_6) { #VAR_6ifdefVAR_6 VAR_6CONFIG_LIBXVIDVAR_6
VAR_6returnVAR_6 VAR_6ff_xvid_rate_control_initVAR_6(VAR_6VAR_0VAR_6); #VAR_6elseVAR_6
VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6XvidVAR_6 VAR_6ratecontrolVAR_6 VAR_6requiresVAR_6 VAR_6libavcodecVAR_6 VAR_6compiledVAR_6 VAR_6withVAR_6 VAR_6XvidVAR_6 VAR_6supportVAR_6.\VAR_6nVAR_6"); VAR_6returnVAR_6 -VAR_61VAR_6; #VAR_6endifVAR_6
} } VAR_6ifVAR_6(!(VAR_6VAR_0VAR_6->VAR_6flagsVAR_6&VAR_6CODEC_FLAG_PASS2VAR_6)){ VAR_6rccVAR_6->VAR_6short_term_qsumVAR_6=VAR_60VAR_6.VAR_6001VAR_6; VAR_6rccVAR_6->VAR_6short_term_qcountVAR_6=VAR_60VAR_6.VAR_6001VAR_6; VAR_6rccVAR_6->VAR_6pass1_rc_eq_output_sumVAR_6= VAR_60VAR_6.VAR_6001VAR_6; VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6=VAR_60VAR_6.VAR_6001VAR_6; VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6qblurVAR_6 > VAR_61VAR_6.VAR_60VAR_6){ VAR_6av_logVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6, VAR_6AV_LOG_ERRORVAR_6, "VAR_6qblurVAR_6 VAR_6tooVAR_6 VAR_6largeVAR_6\VAR_6nVAR_6"); VAR_6returnVAR_6 -VAR_61VAR_6; } VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_cplxVAR_6){ VAR_6forVAR_6(VAR_6VAR_7VAR_6=VAR_60VAR_6; VAR_6VAR_7VAR_6<VAR_660VAR_6*VAR_630VAR_6; VAR_6VAR_7VAR_6++){ VAR_6doubleVAR_6 VAR_6bitsVAR_6= VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6rc_initial_cplxVAR_6 * (VAR_6VAR_7VAR_6/VAR_610000VAR_6.VAR_60VAR_6 + VAR_61VAR_6.VAR_60VAR_6)*VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6; VAR_6RateControlEntryVAR_6 VAR_6rceVAR_6; VAR_6doubleVAR_6 VAR_6qVAR_6; VAR_6ifVAR_6     (VAR_6VAR_7VAR_6%((VAR_6VAR_0VAR_6->VAR_6gop_sizeVAR_6+VAR_63VAR_6)/VAR_64VAR_6)==VAR_60VAR_6) VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_I_TYPEVAR_6; VAR_6elseVAR_6 VAR_6ifVAR_6(VAR_6VAR_7VAR_6%(VAR_6VAR_0VAR_6->VAR_6max_b_framesVAR_6+VAR_61VAR_6))    VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_B_TYPEVAR_6; VAR_6elseVAR_6                              VAR_6rceVAR_6.VAR_6pict_typeVAR_6= VAR_6FF_P_TYPEVAR_6; VAR_6rceVAR_6.VAR_6new_pict_typeVAR_6= VAR_6rceVAR_6.VAR_6pict_typeVAR_6; VAR_6rceVAR_6.VAR_6mc_mb_var_sumVAR_6= VAR_6bitsVAR_6*VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6/VAR_6100000VAR_6; VAR_6rceVAR_6.VAR_6mb_var_sumVAR_6   = VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6; VAR_6rceVAR_6.VAR_6qscaleVAR_6   = VAR_6FF_QP2LAMBDAVAR_6 * VAR_62VAR_6; VAR_6rceVAR_6.VAR_6f_codeVAR_6   = VAR_62VAR_6; VAR_6rceVAR_6.VAR_6b_codeVAR_6   = VAR_61VAR_6; VAR_6rceVAR_6.VAR_6misc_bitsVAR_6= VAR_61VAR_6; VAR_6ifVAR_6(VAR_6VAR_0VAR_6->VAR_6pict_typeVAR_6== VAR_6FF_I_TYPEVAR_6){ VAR_6rceVAR_6.VAR_6i_countVAR_6   = VAR_6VAR_0VAR_6->VAR_6mb_numVAR_6; VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6= VAR_6bitsVAR_6; VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6= VAR_60VAR_6; VAR_6rceVAR_6.VAR_6mv_bitsVAR_6= VAR_60VAR_6; }VAR_6elseVAR_6{ VAR_6rceVAR_6.VAR_6i_countVAR_6   = VAR_60VAR_6; VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6= VAR_60VAR_6; VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6= VAR_6bitsVAR_6*VAR_60VAR_6.VAR_69VAR_6; VAR_6rceVAR_6.VAR_6mv_bitsVAR_6= VAR_6bitsVAR_6*VAR_60VAR_6.VAR_61VAR_6; } VAR_6rccVAR_6->VAR_6i_cplx_sumVAR_6 [VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6*VAR_6rceVAR_6.VAR_6qscaleVAR_6; VAR_6rccVAR_6->VAR_6p_cplx_sumVAR_6 [VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6*VAR_6rceVAR_6.VAR_6qscaleVAR_6; VAR_6rccVAR_6->VAR_6mv_bits_sumVAR_6[VAR_6rceVAR_6.VAR_6pict_typeVAR_6] += VAR_6rceVAR_6.VAR_6mv_bitsVAR_6; VAR_6rccVAR_6->VAR_6frame_countVAR_6[VAR_6rceVAR_6.VAR_6pict_typeVAR_6] ++; VAR_6bitsVAR_6= VAR_6rceVAR_6.VAR_6i_tex_bitsVAR_6 + VAR_6rceVAR_6.VAR_6p_tex_bitsVAR_6; VAR_6qVAR_6= VAR_6get_qscaleVAR_6(VAR_6VAR_0VAR_6, &VAR_6rceVAR_6, VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6/VAR_6rccVAR_6->VAR_6pass1_rc_eq_output_sumVAR_6, VAR_6VAR_7VAR_6); VAR_6rccVAR_6->VAR_6pass1_wanted_bitsVAR_6+= VAR_6VAR_0VAR_6->VAR_6bit_rateVAR_6/(VAR_61VAR_6/VAR_6av_q2dVAR_6(VAR_6VAR_0VAR_6->VAR_6avctxVAR_6->VAR_6time_baseVAR_6)); } } } VAR_6returnVAR_6 VAR_60VAR_6; }