av_cold int ff_rate_control_init(MpegEncContext *s)

{

    RateControlContext *rcc = &s->rc_context;

    int i, res;

    static const char * const const_names[] = {

        "PI",

        "E",

        "iTex",

        "pTex",

        "tex",

        "mv",

        "fCode",

        "iCount",

        "mcVar",

        "var",

        "isI",

        "isP",

        "isB",

        "avgQP",

        "qComp",

#if 0

        "lastIQP",

        "lastPQP",

        "lastBQP",

        "nextNonBQP",

#endif

        "avgIITex",

        "avgPITex",

        "avgPPTex",

        "avgBPTex",

        "avgTex",

        NULL

    };

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

        (void *)bits2qp,

        (void *)qp2bits,

        NULL

    };

    static const char * const func1_names[] = {

        "bits2qp",

        "qp2bits",

        NULL

    };

    emms_c();



    res = av_expr_parse(&rcc->rc_eq_eval,

                        s->rc_eq ? s->rc_eq : "tex^qComp",

                        const_names, func1_names, func1,

                        NULL, NULL, 0, s->avctx);

    if (res < 0) {

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

        return res;

    }



    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->avctx->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 = AV_PICTURE_TYPE_P;

            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->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) {

#if 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->avctx->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->rc_initial_cplx) {

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

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

                RateControlEntry rce;



                if (i % ((s->gop_size + 3) / 4) == 0)

                    rce.pict_type = AV_PICTURE_TYPE_I;

                else if (i % (s->max_b_frames + 1))

                    rce.pict_type = AV_PICTURE_TYPE_B;

                else

                    rce.pict_type = AV_PICTURE_TYPE_P;



                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 == AV_PICTURE_TYPE_I) {

                    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]++;



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



                // FIXME misbehaves a little for variable fps

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

            }

        }

    }



    return 0;

}

av_cold int ff_rate_control_init(MpegEncContext *s)

{

    RateControlContext *rcc = &s->rc_context;

    int i, res;

    static const char * const const_names[] = {

        "PI",

        "E",

        "iTex",

        "pTex",

        "tex",

        "mv",

        "fCode",

        "iCount",

        "mcVar",

        "var",

        "isI",

        "isP",

        "isB",

        "avgQP",

        "qComp",

#if 0

        "lastIQP",

        "lastPQP",

        "lastBQP",

        "nextNonBQP",

#endif

        "avgIITex",

        "avgPITex",

        "avgPPTex",

        "avgBPTex",

        "avgTex",

        NULL

    };

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

        (void *)bits2qp,

        (void *)qp2bits,

        NULL

    };

    static const char * const func1_names[] = {

        "bits2qp",

        "qp2bits",

        NULL

    };

    emms_c();



    res = av_expr_parse(&rcc->rc_eq_eval,

                        s->rc_eq ? s->rc_eq : "tex^qComp",

                        const_names, func1_names, func1,

                        NULL, NULL, 0, s->avctx);

    if (res < 0) {

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

        return res;

    }



    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->avctx->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 = AV_PICTURE_TYPE_P;

            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->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) {

#if 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->avctx->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->rc_initial_cplx) {

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

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

                RateControlEntry rce;



                if (i % ((s->gop_size + 3) / 4) == 0)

                    rce.pict_type = AV_PICTURE_TYPE_I;

                else if (i % (s->max_b_frames + 1))

                    rce.pict_type = AV_PICTURE_TYPE_B;

                else

                    rce.pict_type = AV_PICTURE_TYPE_P;



                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 == AV_PICTURE_TYPE_I) {

                    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]++;



                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;

}

VAR_5av_coldVAR_5 VAR_5intVAR_5 VAR_5ff_rate_control_initVAR_5(VAR_5MpegEncContextVAR_5 *VAR_5sVAR_5)

{

    VAR_5RateControlContextVAR_5 *VAR_5rccVAR_5 = &VAR_5sVAR_5->VAR_5rc_contextVAR_5;

    VAR_5intVAR_5 VAR_5VAR_6VAR_5, VAR_5VAR_1VAR_5;

    VAR_5staticVAR_5 VAR_5constVAR_5 VAR_5charVAR_5 * VAR_5constVAR_5 VAR_5VAR_2VAR_5[] = {

        "VAR_5PIVAR_5",

        "VAR_5EVAR_5",

        "VAR_5iTexVAR_5",

        "VAR_5pTexVAR_5",

        "VAR_5texVAR_5",

        "VAR_5mvVAR_5",

        "VAR_5fCodeVAR_5",

        "VAR_5iCountVAR_5",

        "VAR_5mcVarVAR_5",

        "VAR_5varVAR_5",

        "VAR_5isIVAR_5",

        "VAR_5isPVAR_5",

        "VAR_5isBVAR_5",

        "VAR_5avgQPVAR_5",

        "VAR_5qCompVAR_5",

#VAR_5ifVAR_5 VAR_50VAR_5

        "VAR_5lastIQPVAR_5",

        "VAR_5lastPQPVAR_5",

        "VAR_5lastBQPVAR_5",

        "VAR_5nextNonBQPVAR_5",

#VAR_5endifVAR_5

        "VAR_5avgIITexVAR_5",

        "VAR_5avgPITexVAR_5",

        "VAR_5avgPPTexVAR_5",

        "VAR_5avgBPTexVAR_5",

        "VAR_5avgTexVAR_5",

        VAR_5NULLVAR_5

    };

    VAR_5staticVAR_5 VAR_5doubleVAR_5 (* VAR_5constVAR_5 VAR_5VAR_3VAR_5[])(VAR_5voidVAR_5 *, VAR_5doubleVAR_5) = {

        (VAR_5voidVAR_5 *)VAR_5bits2qpVAR_5,

        (VAR_5voidVAR_5 *)VAR_5qp2bitsVAR_5,

        VAR_5NULLVAR_5

    };

    VAR_5staticVAR_5 VAR_5constVAR_5 VAR_5charVAR_5 * VAR_5constVAR_5 VAR_5func1_namesVAR_5[] = {

        "VAR_5bits2qpVAR_5",

        "VAR_5qp2bitsVAR_5",

        VAR_5NULLVAR_5

    };

    VAR_5emms_cVAR_5();



    VAR_5VAR_1VAR_5 = VAR_5av_expr_parseVAR_5(&VAR_5rccVAR_5->VAR_5rc_eq_evalVAR_5,

                        VAR_5sVAR_5->VAR_5rc_eqVAR_5 ? VAR_5sVAR_5->VAR_5rc_eqVAR_5 : "VAR_5texVAR_5^VAR_5qCompVAR_5",

                        VAR_5VAR_2VAR_5, VAR_5func1_namesVAR_5, VAR_5VAR_3VAR_5,

                        VAR_5NULLVAR_5, VAR_5NULLVAR_5, VAR_50VAR_5, VAR_5sVAR_5->VAR_5avctxVAR_5);

    VAR_5ifVAR_5 (VAR_5VAR_1VAR_5 < VAR_50VAR_5) {

        VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5, "VAR_5ErrorVAR_5 VAR_5parsingVAR_5 VAR_5rc_eqVAR_5 \"%VAR_5sVAR_5\"\VAR_5nVAR_5", VAR_5sVAR_5->VAR_5rc_eqVAR_5);

        VAR_5returnVAR_5 VAR_5VAR_1VAR_5;

    }



    VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_55VAR_5; VAR_5VAR_6VAR_5++) {

        VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5coeffVAR_5 = VAR_5FF_QP2LAMBDAVAR_5 * VAR_57VAR_5.VAR_50VAR_5;

        VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5countVAR_5 = VAR_51VAR_5.VAR_50VAR_5;

        VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5decayVAR_5 = VAR_50VAR_5.VAR_54VAR_5;



        VAR_5rccVAR_5->VAR_5i_cplx_sumVAR_5 [VAR_5VAR_6VAR_5] =

        VAR_5rccVAR_5->VAR_5p_cplx_sumVAR_5 [VAR_5VAR_6VAR_5] =

        VAR_5rccVAR_5->VAR_5mv_bits_sumVAR_5[VAR_5VAR_6VAR_5] =

        VAR_5rccVAR_5->VAR_5qscale_sumVAR_5 [VAR_5VAR_6VAR_5] =

        VAR_5rccVAR_5->VAR_5frame_countVAR_5[VAR_5VAR_6VAR_5] = VAR_51VAR_5; 



        VAR_5rccVAR_5->VAR_5last_qscale_forVAR_5[VAR_5VAR_6VAR_5] = VAR_5FF_QP2LAMBDAVAR_5 * VAR_55VAR_5;

    }

    VAR_5rccVAR_5->VAR_5buffer_indexVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5rc_initial_buffer_occupancyVAR_5;



    VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5) {

        VAR_5intVAR_5 VAR_5VAR_6VAR_5;

        VAR_5charVAR_5 *VAR_5pVAR_5;



        

        VAR_5pVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5stats_inVAR_5;

        VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = -VAR_51VAR_5; VAR_5pVAR_5; VAR_5VAR_6VAR_5++)

            VAR_5pVAR_5 = VAR_5strchrVAR_5(VAR_5pVAR_5 + VAR_51VAR_5, ';');

        VAR_5VAR_6VAR_5 += VAR_5sVAR_5->VAR_5max_b_framesVAR_5;

        VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 <= VAR_50VAR_5 || VAR_5VAR_6VAR_5 >= VAR_5INT_MAXVAR_5 / VAR_5sizeofVAR_5(VAR_5RateControlEntryVAR_5))

            VAR_5returnVAR_5 -VAR_51VAR_5;

        VAR_5rccVAR_5->VAR_5entryVAR_5       = VAR_5av_malloczVAR_5(VAR_5VAR_6VAR_5 * VAR_5sizeofVAR_5(VAR_5RateControlEntryVAR_5));

        VAR_5rccVAR_5->VAR_5num_entriesVAR_5 = VAR_5VAR_6VAR_5;



        



        VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5; VAR_5VAR_6VAR_5++) {

            VAR_5RateControlEntryVAR_5 *VAR_5rceVAR_5 = &VAR_5rccVAR_5->VAR_5entryVAR_5[VAR_5VAR_6VAR_5];



            VAR_5rceVAR_5->VAR_5pict_typeVAR_5  = VAR_5rceVAR_5->VAR_5new_pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_PVAR_5;

            VAR_5rceVAR_5->VAR_5qscaleVAR_5     = VAR_5rceVAR_5->VAR_5new_qscaleVAR_5    = VAR_5FF_QP2LAMBDAVAR_5 * VAR_52VAR_5;

            VAR_5rceVAR_5->VAR_5misc_bitsVAR_5  = VAR_5sVAR_5->VAR_5mb_numVAR_5 + VAR_510VAR_5;

            VAR_5rceVAR_5->VAR_5mb_var_sumVAR_5 = VAR_5sVAR_5->VAR_5mb_numVAR_5 * VAR_5100VAR_5;

        }



        

        VAR_5pVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5stats_inVAR_5;

        VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5 - VAR_5sVAR_5->VAR_5max_b_framesVAR_5; VAR_5VAR_6VAR_5++) {

            VAR_5RateControlEntryVAR_5 *VAR_5rceVAR_5;

            VAR_5intVAR_5 VAR_5picture_numberVAR_5;

            VAR_5intVAR_5 VAR_5eVAR_5;

            VAR_5charVAR_5 *VAR_5nextVAR_5;



            VAR_5nextVAR_5 = VAR_5strchrVAR_5(VAR_5pVAR_5, ';');

            VAR_5ifVAR_5 (VAR_5nextVAR_5) {

                (*VAR_5nextVAR_5) = VAR_50VAR_5; 

                VAR_5nextVAR_5++;

            }

            VAR_5eVAR_5 = VAR_5sscanfVAR_5(VAR_5pVAR_5, " VAR_5inVAR_5:%VAR_5dVAR_5 ", &VAR_5picture_numberVAR_5);



            VAR_5assertVAR_5(VAR_5picture_numberVAR_5 >= VAR_50VAR_5);

            VAR_5assertVAR_5(VAR_5picture_numberVAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5);

            VAR_5rceVAR_5 = &VAR_5rccVAR_5->VAR_5entryVAR_5[VAR_5picture_numberVAR_5];



            VAR_5eVAR_5 += VAR_5sscanfVAR_5(VAR_5pVAR_5, " VAR_5inVAR_5:%*VAR_5dVAR_5 VAR_5outVAR_5:%*VAR_5dVAR_5 VAR_5typeVAR_5:%VAR_5dVAR_5 VAR_5qVAR_5:%VAR_5fVAR_5 VAR_5itexVAR_5:%VAR_5dVAR_5 VAR_5ptexVAR_5:%VAR_5dVAR_5 VAR_5mvVAR_5:%VAR_5dVAR_5 VAR_5miscVAR_5:%VAR_5dVAR_5 VAR_5fcodeVAR_5:%VAR_5dVAR_5 VAR_5bcodeVAR_5:%VAR_5dVAR_5 VAR_5mcVAR_5-VAR_5varVAR_5:%VAR_5dVAR_5 VAR_5varVAR_5:%VAR_5dVAR_5 VAR_5icountVAR_5:%VAR_5dVAR_5 VAR_5skipcountVAR_5:%VAR_5dVAR_5 VAR_5hbitsVAR_5:%VAR_5dVAR_5",

                        &VAR_5rceVAR_5->VAR_5pict_typeVAR_5, &VAR_5rceVAR_5->VAR_5qscaleVAR_5, &VAR_5rceVAR_5->VAR_5i_tex_bitsVAR_5, &VAR_5rceVAR_5->VAR_5p_tex_bitsVAR_5,

                        &VAR_5rceVAR_5->VAR_5mv_bitsVAR_5, &VAR_5rceVAR_5->VAR_5misc_bitsVAR_5,

                        &VAR_5rceVAR_5->VAR_5f_codeVAR_5, &VAR_5rceVAR_5->VAR_5b_codeVAR_5,

                        &VAR_5rceVAR_5->VAR_5mc_mb_var_sumVAR_5, &VAR_5rceVAR_5->VAR_5mb_var_sumVAR_5,

                        &VAR_5rceVAR_5->VAR_5i_countVAR_5, &VAR_5rceVAR_5->VAR_5skip_countVAR_5, &VAR_5rceVAR_5->VAR_5header_bitsVAR_5);

            VAR_5ifVAR_5 (VAR_5eVAR_5 != VAR_514VAR_5) {

                VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5,

                       "VAR_5statisticsVAR_5 VAR_5areVAR_5 VAR_5damagedVAR_5 VAR_5atVAR_5 VAR_5lineVAR_5 %VAR_5dVAR_5, VAR_5parserVAR_5 VAR_5outVAR_5=%VAR_5dVAR_5\VAR_5nVAR_5",

                       VAR_5VAR_6VAR_5, VAR_5eVAR_5);

                VAR_5returnVAR_5 -VAR_51VAR_5;

            }



            VAR_5pVAR_5 = VAR_5nextVAR_5;

        }



        VAR_5ifVAR_5 (VAR_5init_pass2VAR_5(VAR_5sVAR_5) < VAR_50VAR_5)

            VAR_5returnVAR_5 -VAR_51VAR_5;



        

        VAR_5ifVAR_5 ((VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5) && VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5rc_strategyVAR_5 == VAR_5FF_RC_STRATEGY_XVIDVAR_5) {

#VAR_5ifVAR_5 VAR_5CONFIG_LIBXVIDVAR_5

            VAR_5returnVAR_5 VAR_5ff_xvid_rate_control_initVAR_5(VAR_5sVAR_5);

#VAR_5elseVAR_5

            VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5,

                   "VAR_5XvidVAR_5 VAR_5ratecontrolVAR_5 VAR_5requiresVAR_5 VAR_5libavcodecVAR_5 VAR_5compiledVAR_5 VAR_5withVAR_5 VAR_5XvidVAR_5 VAR_5supportVAR_5.\VAR_5nVAR_5");

            VAR_5returnVAR_5 -VAR_51VAR_5;

#VAR_5endifVAR_5

        }

    }



    VAR_5ifVAR_5 (!(VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5)) {

        VAR_5rccVAR_5->VAR_5short_term_qsumVAR_5   = VAR_50VAR_5.VAR_5001VAR_5;

        VAR_5rccVAR_5->VAR_5short_term_qcountVAR_5 = VAR_50VAR_5.VAR_5001VAR_5;



        VAR_5rccVAR_5->VAR_5pass1_rc_eq_output_sumVAR_5 = VAR_50VAR_5.VAR_5001VAR_5;

        VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5      = VAR_50VAR_5.VAR_5001VAR_5;



        VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5qblurVAR_5 > VAR_51VAR_5.VAR_50VAR_5) {

            VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5, "VAR_5qblurVAR_5 VAR_5tooVAR_5 VAR_5largeVAR_5\VAR_5nVAR_5");

            VAR_5returnVAR_5 -VAR_51VAR_5;

        }

        

        VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5rc_initial_cplxVAR_5) {

            VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_560VAR_5 * VAR_530VAR_5; VAR_5VAR_6VAR_5++) {

                VAR_5doubleVAR_5 VAR_5bitsVAR_5 = VAR_5sVAR_5->VAR_5rc_initial_cplxVAR_5 * (VAR_5VAR_6VAR_5 / VAR_510000VAR_5.VAR_50VAR_5 + VAR_51VAR_5.VAR_50VAR_5) * VAR_5sVAR_5->VAR_5mb_numVAR_5;

                VAR_5RateControlEntryVAR_5 VAR_5rceVAR_5;



                VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 % ((VAR_5sVAR_5->VAR_5gop_sizeVAR_5 + VAR_53VAR_5) / VAR_54VAR_5) == VAR_50VAR_5)

                    VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_IVAR_5;

                VAR_5elseVAR_5 VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 % (VAR_5sVAR_5->VAR_5max_b_framesVAR_5 + VAR_51VAR_5))

                    VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_BVAR_5;

                VAR_5elseVAR_5

                    VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_PVAR_5;



                VAR_5rceVAR_5.VAR_5new_pict_typeVAR_5 = VAR_5rceVAR_5.VAR_5pict_typeVAR_5;

                VAR_5rceVAR_5.VAR_5mc_mb_var_sumVAR_5 = VAR_5bitsVAR_5 * VAR_5sVAR_5->VAR_5mb_numVAR_5 / VAR_5100000VAR_5;

                VAR_5rceVAR_5.VAR_5mb_var_sumVAR_5    = VAR_5sVAR_5->VAR_5mb_numVAR_5;



                VAR_5rceVAR_5.VAR_5qscaleVAR_5    = VAR_5FF_QP2LAMBDAVAR_5 * VAR_52VAR_5;

                VAR_5rceVAR_5.VAR_5f_codeVAR_5    = VAR_52VAR_5;

                VAR_5rceVAR_5.VAR_5b_codeVAR_5    = VAR_51VAR_5;

                VAR_5rceVAR_5.VAR_5misc_bitsVAR_5 = VAR_51VAR_5;



                VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5pict_typeVAR_5 == VAR_5AV_PICTURE_TYPE_IVAR_5) {

                    VAR_5rceVAR_5.VAR_5i_countVAR_5    = VAR_5sVAR_5->VAR_5mb_numVAR_5;

                    VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 = VAR_5bitsVAR_5;

                    VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 = VAR_50VAR_5;

                    VAR_5rceVAR_5.VAR_5mv_bitsVAR_5    = VAR_50VAR_5;

                } VAR_5elseVAR_5 {

                    VAR_5rceVAR_5.VAR_5i_countVAR_5    = VAR_50VAR_5; 

                    VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 = VAR_50VAR_5;

                    VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 = VAR_5bitsVAR_5 * VAR_50VAR_5.VAR_59VAR_5;

                    VAR_5rceVAR_5.VAR_5mv_bitsVAR_5    = VAR_5bitsVAR_5 * VAR_50VAR_5.VAR_51VAR_5;

                }

                VAR_5rccVAR_5->VAR_5i_cplx_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]  += VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 * VAR_5rceVAR_5.VAR_5qscaleVAR_5;

                VAR_5rccVAR_5->VAR_5p_cplx_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]  += VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 * VAR_5rceVAR_5.VAR_5qscaleVAR_5;

                VAR_5rccVAR_5->VAR_5mv_bits_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5] += VAR_5rceVAR_5.VAR_5mv_bitsVAR_5;

                VAR_5rccVAR_5->VAR_5frame_countVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]++;



                VAR_5get_qscaleVAR_5(VAR_5sVAR_5, &VAR_5rceVAR_5, VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5 / VAR_5rccVAR_5->VAR_5pass1_rc_eq_output_sumVAR_5, VAR_5VAR_6VAR_5);



                

                VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5 += VAR_5sVAR_5->VAR_5bit_rateVAR_5 / (VAR_51VAR_5 / VAR_5av_q2dVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5time_baseVAR_5));

            }

        }

    }



    VAR_5returnVAR_5 VAR_50VAR_5;

}

VAR_5av_coldVAR_5 VAR_5intVAR_5 VAR_5ff_rate_control_initVAR_5(VAR_5MpegEncContextVAR_5 *VAR_5sVAR_5)
{ VAR_5RateControlContextVAR_5 *VAR_5rccVAR_5 = &VAR_5sVAR_5->VAR_5rc_contextVAR_5; VAR_5intVAR_5 VAR_5VAR_6VAR_5, VAR_5VAR_1VAR_5; VAR_5staticVAR_5 VAR_5constVAR_5 VAR_5charVAR_5 * VAR_5constVAR_5 VAR_5VAR_2VAR_5[] = { "VAR_5PIVAR_5",
"VAR_5EVAR_5",
"VAR_5iTexVAR_5",
"VAR_5pTexVAR_5",
"VAR_5texVAR_5",
"VAR_5mvVAR_5",
"VAR_5fCodeVAR_5",
"VAR_5iCountVAR_5",
"VAR_5mcVarVAR_5",
"VAR_5varVAR_5",
"VAR_5isIVAR_5",
"VAR_5isPVAR_5",
"VAR_5isBVAR_5",
"VAR_5avgQPVAR_5",
"VAR_5qCompVAR_5",
#VAR_5ifVAR_5 VAR_50VAR_5
"VAR_5lastIQPVAR_5",
"VAR_5lastPQPVAR_5",
"VAR_5lastBQPVAR_5",
"VAR_5nextNonBQPVAR_5",
#VAR_5endifVAR_5
"VAR_5avgIITexVAR_5",
"VAR_5avgPITexVAR_5",
"VAR_5avgPPTexVAR_5",
"VAR_5avgBPTexVAR_5",
"VAR_5avgTexVAR_5",
VAR_5NULLVAR_5
}; VAR_5staticVAR_5 VAR_5doubleVAR_5 (* VAR_5constVAR_5 VAR_5VAR_3VAR_5[])(VAR_5voidVAR_5 *, VAR_5doubleVAR_5) = { (VAR_5voidVAR_5 *)VAR_5bits2qpVAR_5,
(VAR_5voidVAR_5 *)VAR_5qp2bitsVAR_5,
VAR_5NULLVAR_5
}; VAR_5staticVAR_5 VAR_5constVAR_5 VAR_5charVAR_5 * VAR_5constVAR_5 VAR_5func1_namesVAR_5[] = { "VAR_5bits2qpVAR_5",
"VAR_5qp2bitsVAR_5",
VAR_5NULLVAR_5
}; VAR_5emms_cVAR_5(); VAR_5VAR_1VAR_5 = VAR_5av_expr_parseVAR_5(&VAR_5rccVAR_5->VAR_5rc_eq_evalVAR_5,
VAR_5sVAR_5->VAR_5rc_eqVAR_5 ? VAR_5sVAR_5->VAR_5rc_eqVAR_5 : "VAR_5texVAR_5^VAR_5qCompVAR_5",
VAR_5VAR_2VAR_5, VAR_5func1_namesVAR_5, VAR_5VAR_3VAR_5,
VAR_5NULLVAR_5, VAR_5NULLVAR_5, VAR_50VAR_5, VAR_5sVAR_5->VAR_5avctxVAR_5); VAR_5ifVAR_5 (VAR_5VAR_1VAR_5 < VAR_50VAR_5) { VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5, "VAR_5ErrorVAR_5 VAR_5parsingVAR_5 VAR_5rc_eqVAR_5 \"%VAR_5sVAR_5\"\VAR_5nVAR_5", VAR_5sVAR_5->VAR_5rc_eqVAR_5); VAR_5returnVAR_5 VAR_5VAR_1VAR_5; } VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_55VAR_5; VAR_5VAR_6VAR_5++) { VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5coeffVAR_5 = VAR_5FF_QP2LAMBDAVAR_5 * VAR_57VAR_5.VAR_50VAR_5; VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5countVAR_5 = VAR_51VAR_5.VAR_50VAR_5; VAR_5rccVAR_5->VAR_5predVAR_5[VAR_5VAR_6VAR_5].VAR_5decayVAR_5 = VAR_50VAR_5.VAR_54VAR_5; VAR_5rccVAR_5->VAR_5i_cplx_sumVAR_5 [VAR_5VAR_6VAR_5] =
VAR_5rccVAR_5->VAR_5p_cplx_sumVAR_5 [VAR_5VAR_6VAR_5] =
VAR_5rccVAR_5->VAR_5mv_bits_sumVAR_5[VAR_5VAR_6VAR_5] =
VAR_5rccVAR_5->VAR_5qscale_sumVAR_5 [VAR_5VAR_6VAR_5] =
VAR_5rccVAR_5->VAR_5frame_countVAR_5[VAR_5VAR_6VAR_5] = VAR_51VAR_5; VAR_5rccVAR_5->VAR_5last_qscale_forVAR_5[VAR_5VAR_6VAR_5] = VAR_5FF_QP2LAMBDAVAR_5 * VAR_55VAR_5; } VAR_5rccVAR_5->VAR_5buffer_indexVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5rc_initial_buffer_occupancyVAR_5; VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5) { VAR_5intVAR_5 VAR_5VAR_6VAR_5; VAR_5charVAR_5 *VAR_5pVAR_5; VAR_5pVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5stats_inVAR_5; VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = -VAR_51VAR_5; VAR_5pVAR_5; VAR_5VAR_6VAR_5++) VAR_5pVAR_5 = VAR_5strchrVAR_5(VAR_5pVAR_5 + VAR_51VAR_5, ';'); VAR_5VAR_6VAR_5 += VAR_5sVAR_5->VAR_5max_b_framesVAR_5; VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 <= VAR_50VAR_5 || VAR_5VAR_6VAR_5 >= VAR_5INT_MAXVAR_5 / VAR_5sizeofVAR_5(VAR_5RateControlEntryVAR_5))
VAR_5returnVAR_5 -VAR_51VAR_5; VAR_5rccVAR_5->VAR_5entryVAR_5       = VAR_5av_malloczVAR_5(VAR_5VAR_6VAR_5 * VAR_5sizeofVAR_5(VAR_5RateControlEntryVAR_5)); VAR_5rccVAR_5->VAR_5num_entriesVAR_5 = VAR_5VAR_6VAR_5; VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5; VAR_5VAR_6VAR_5++) { VAR_5RateControlEntryVAR_5 *VAR_5rceVAR_5 = &VAR_5rccVAR_5->VAR_5entryVAR_5[VAR_5VAR_6VAR_5]; VAR_5rceVAR_5->VAR_5pict_typeVAR_5  = VAR_5rceVAR_5->VAR_5new_pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_PVAR_5; VAR_5rceVAR_5->VAR_5qscaleVAR_5     = VAR_5rceVAR_5->VAR_5new_qscaleVAR_5    = VAR_5FF_QP2LAMBDAVAR_5 * VAR_52VAR_5; VAR_5rceVAR_5->VAR_5misc_bitsVAR_5  = VAR_5sVAR_5->VAR_5mb_numVAR_5 + VAR_510VAR_5; VAR_5rceVAR_5->VAR_5mb_var_sumVAR_5 = VAR_5sVAR_5->VAR_5mb_numVAR_5 * VAR_5100VAR_5; } VAR_5pVAR_5 = VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5stats_inVAR_5; VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5 - VAR_5sVAR_5->VAR_5max_b_framesVAR_5; VAR_5VAR_6VAR_5++) { VAR_5RateControlEntryVAR_5 *VAR_5rceVAR_5; VAR_5intVAR_5 VAR_5picture_numberVAR_5; VAR_5intVAR_5 VAR_5eVAR_5; VAR_5charVAR_5 *VAR_5nextVAR_5; VAR_5nextVAR_5 = VAR_5strchrVAR_5(VAR_5pVAR_5, ';'); VAR_5ifVAR_5 (VAR_5nextVAR_5) { (*VAR_5nextVAR_5) = VAR_50VAR_5; VAR_5nextVAR_5++; } VAR_5eVAR_5 = VAR_5sscanfVAR_5(VAR_5pVAR_5, " VAR_5inVAR_5:%VAR_5dVAR_5 ", &VAR_5picture_numberVAR_5); VAR_5assertVAR_5(VAR_5picture_numberVAR_5 >= VAR_50VAR_5); VAR_5assertVAR_5(VAR_5picture_numberVAR_5 < VAR_5rccVAR_5->VAR_5num_entriesVAR_5); VAR_5rceVAR_5 = &VAR_5rccVAR_5->VAR_5entryVAR_5[VAR_5picture_numberVAR_5]; VAR_5eVAR_5 += VAR_5sscanfVAR_5(VAR_5pVAR_5, " VAR_5inVAR_5:%*VAR_5dVAR_5 VAR_5outVAR_5:%*VAR_5dVAR_5 VAR_5typeVAR_5:%VAR_5dVAR_5 VAR_5qVAR_5:%VAR_5fVAR_5 VAR_5itexVAR_5:%VAR_5dVAR_5 VAR_5ptexVAR_5:%VAR_5dVAR_5 VAR_5mvVAR_5:%VAR_5dVAR_5 VAR_5miscVAR_5:%VAR_5dVAR_5 VAR_5fcodeVAR_5:%VAR_5dVAR_5 VAR_5bcodeVAR_5:%VAR_5dVAR_5 VAR_5mcVAR_5-VAR_5varVAR_5:%VAR_5dVAR_5 VAR_5varVAR_5:%VAR_5dVAR_5 VAR_5icountVAR_5:%VAR_5dVAR_5 VAR_5skipcountVAR_5:%VAR_5dVAR_5 VAR_5hbitsVAR_5:%VAR_5dVAR_5",
&VAR_5rceVAR_5->VAR_5pict_typeVAR_5, &VAR_5rceVAR_5->VAR_5qscaleVAR_5, &VAR_5rceVAR_5->VAR_5i_tex_bitsVAR_5, &VAR_5rceVAR_5->VAR_5p_tex_bitsVAR_5,
&VAR_5rceVAR_5->VAR_5mv_bitsVAR_5, &VAR_5rceVAR_5->VAR_5misc_bitsVAR_5,
&VAR_5rceVAR_5->VAR_5f_codeVAR_5, &VAR_5rceVAR_5->VAR_5b_codeVAR_5,
&VAR_5rceVAR_5->VAR_5mc_mb_var_sumVAR_5, &VAR_5rceVAR_5->VAR_5mb_var_sumVAR_5,
&VAR_5rceVAR_5->VAR_5i_countVAR_5, &VAR_5rceVAR_5->VAR_5skip_countVAR_5, &VAR_5rceVAR_5->VAR_5header_bitsVAR_5); VAR_5ifVAR_5 (VAR_5eVAR_5 != VAR_514VAR_5) { VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5,
"VAR_5statisticsVAR_5 VAR_5areVAR_5 VAR_5damagedVAR_5 VAR_5atVAR_5 VAR_5lineVAR_5 %VAR_5dVAR_5, VAR_5parserVAR_5 VAR_5outVAR_5=%VAR_5dVAR_5\VAR_5nVAR_5",
VAR_5VAR_6VAR_5, VAR_5eVAR_5); VAR_5returnVAR_5 -VAR_51VAR_5; } VAR_5pVAR_5 = VAR_5nextVAR_5; } VAR_5ifVAR_5 (VAR_5init_pass2VAR_5(VAR_5sVAR_5) < VAR_50VAR_5)
VAR_5returnVAR_5 -VAR_51VAR_5; VAR_5ifVAR_5 ((VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5) && VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5rc_strategyVAR_5 == VAR_5FF_RC_STRATEGY_XVIDVAR_5) { #VAR_5ifVAR_5 VAR_5CONFIG_LIBXVIDVAR_5
VAR_5returnVAR_5 VAR_5ff_xvid_rate_control_initVAR_5(VAR_5sVAR_5); #VAR_5elseVAR_5
VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5,
"VAR_5XvidVAR_5 VAR_5ratecontrolVAR_5 VAR_5requiresVAR_5 VAR_5libavcodecVAR_5 VAR_5compiledVAR_5 VAR_5withVAR_5 VAR_5XvidVAR_5 VAR_5supportVAR_5.\VAR_5nVAR_5"); VAR_5returnVAR_5 -VAR_51VAR_5; #VAR_5endifVAR_5
} } VAR_5ifVAR_5 (!(VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5flagsVAR_5 & VAR_5CODEC_FLAG_PASS2VAR_5)) { VAR_5rccVAR_5->VAR_5short_term_qsumVAR_5   = VAR_50VAR_5.VAR_5001VAR_5; VAR_5rccVAR_5->VAR_5short_term_qcountVAR_5 = VAR_50VAR_5.VAR_5001VAR_5; VAR_5rccVAR_5->VAR_5pass1_rc_eq_output_sumVAR_5 = VAR_50VAR_5.VAR_5001VAR_5; VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5      = VAR_50VAR_5.VAR_5001VAR_5; VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5qblurVAR_5 > VAR_51VAR_5.VAR_50VAR_5) { VAR_5av_logVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5, VAR_5AV_LOG_ERRORVAR_5, "VAR_5qblurVAR_5 VAR_5tooVAR_5 VAR_5largeVAR_5\VAR_5nVAR_5"); VAR_5returnVAR_5 -VAR_51VAR_5; } VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5rc_initial_cplxVAR_5) { VAR_5forVAR_5 (VAR_5VAR_6VAR_5 = VAR_50VAR_5; VAR_5VAR_6VAR_5 < VAR_560VAR_5 * VAR_530VAR_5; VAR_5VAR_6VAR_5++) { VAR_5doubleVAR_5 VAR_5bitsVAR_5 = VAR_5sVAR_5->VAR_5rc_initial_cplxVAR_5 * (VAR_5VAR_6VAR_5 / VAR_510000VAR_5.VAR_50VAR_5 + VAR_51VAR_5.VAR_50VAR_5) * VAR_5sVAR_5->VAR_5mb_numVAR_5; VAR_5RateControlEntryVAR_5 VAR_5rceVAR_5; VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 % ((VAR_5sVAR_5->VAR_5gop_sizeVAR_5 + VAR_53VAR_5) / VAR_54VAR_5) == VAR_50VAR_5)
VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_IVAR_5; VAR_5elseVAR_5 VAR_5ifVAR_5 (VAR_5VAR_6VAR_5 % (VAR_5sVAR_5->VAR_5max_b_framesVAR_5 + VAR_51VAR_5))
VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_BVAR_5; VAR_5elseVAR_5
VAR_5rceVAR_5.VAR_5pict_typeVAR_5 = VAR_5AV_PICTURE_TYPE_PVAR_5; VAR_5rceVAR_5.VAR_5new_pict_typeVAR_5 = VAR_5rceVAR_5.VAR_5pict_typeVAR_5; VAR_5rceVAR_5.VAR_5mc_mb_var_sumVAR_5 = VAR_5bitsVAR_5 * VAR_5sVAR_5->VAR_5mb_numVAR_5 / VAR_5100000VAR_5; VAR_5rceVAR_5.VAR_5mb_var_sumVAR_5    = VAR_5sVAR_5->VAR_5mb_numVAR_5; VAR_5rceVAR_5.VAR_5qscaleVAR_5    = VAR_5FF_QP2LAMBDAVAR_5 * VAR_52VAR_5; VAR_5rceVAR_5.VAR_5f_codeVAR_5    = VAR_52VAR_5; VAR_5rceVAR_5.VAR_5b_codeVAR_5    = VAR_51VAR_5; VAR_5rceVAR_5.VAR_5misc_bitsVAR_5 = VAR_51VAR_5; VAR_5ifVAR_5 (VAR_5sVAR_5->VAR_5pict_typeVAR_5 == VAR_5AV_PICTURE_TYPE_IVAR_5) { VAR_5rceVAR_5.VAR_5i_countVAR_5    = VAR_5sVAR_5->VAR_5mb_numVAR_5; VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 = VAR_5bitsVAR_5; VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 = VAR_50VAR_5; VAR_5rceVAR_5.VAR_5mv_bitsVAR_5    = VAR_50VAR_5; } VAR_5elseVAR_5 { VAR_5rceVAR_5.VAR_5i_countVAR_5    = VAR_50VAR_5; VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 = VAR_50VAR_5; VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 = VAR_5bitsVAR_5 * VAR_50VAR_5.VAR_59VAR_5; VAR_5rceVAR_5.VAR_5mv_bitsVAR_5    = VAR_5bitsVAR_5 * VAR_50VAR_5.VAR_51VAR_5; } VAR_5rccVAR_5->VAR_5i_cplx_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]  += VAR_5rceVAR_5.VAR_5i_tex_bitsVAR_5 * VAR_5rceVAR_5.VAR_5qscaleVAR_5; VAR_5rccVAR_5->VAR_5p_cplx_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]  += VAR_5rceVAR_5.VAR_5p_tex_bitsVAR_5 * VAR_5rceVAR_5.VAR_5qscaleVAR_5; VAR_5rccVAR_5->VAR_5mv_bits_sumVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5] += VAR_5rceVAR_5.VAR_5mv_bitsVAR_5; VAR_5rccVAR_5->VAR_5frame_countVAR_5[VAR_5rceVAR_5.VAR_5pict_typeVAR_5]++; VAR_5get_qscaleVAR_5(VAR_5sVAR_5, &VAR_5rceVAR_5, VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5 / VAR_5rccVAR_5->VAR_5pass1_rc_eq_output_sumVAR_5, VAR_5VAR_6VAR_5); VAR_5rccVAR_5->VAR_5pass1_wanted_bitsVAR_5 += VAR_5sVAR_5->VAR_5bit_rateVAR_5 / (VAR_51VAR_5 / VAR_5av_q2dVAR_5(VAR_5sVAR_5->VAR_5avctxVAR_5->VAR_5time_baseVAR_5)); } } } VAR_5returnVAR_5 VAR_50VAR_5; }