int ff_xvid_rate_control_init(MpegEncContext *s){

    char *tmp_name;

    int fd, i;

    xvid_plg_create_t xvid_plg_create = { 0 };

    xvid_plugin_2pass2_t xvid_2pass2  = { 0 };



    fd=av_tempfile("xvidrc.", &tmp_name, 0, s->avctx);

    if (fd == -1) {

        av_log(NULL, AV_LOG_ERROR, "Can't create temporary pass2 file.\n");

        return -1;

    }



    for(i=0; i<s->rc_context.num_entries; i++){

        static const char frame_types[] = " ipbs";

        char tmp[256];

        RateControlEntry *rce;



        rce= &s->rc_context.entry[i];



        snprintf(tmp, sizeof(tmp), "%c %d %d %d %d %d %d\n",

            frame_types[rce->pict_type], (int)lrintf(rce->qscale / FF_QP2LAMBDA), rce->i_count, s->mb_num - rce->i_count - rce->skip_count,

            rce->skip_count, (rce->i_tex_bits + rce->p_tex_bits + rce->misc_bits+7)/8, (rce->header_bits+rce->mv_bits+7)/8);



        if (write(fd, tmp, strlen(tmp)) < 0) {

            av_log(NULL, AV_LOG_ERROR, "Error %s writing 2pass logfile\n", strerror(errno));



            return AVERROR(errno);

        }

    }






    xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0);

    xvid_2pass2.filename= tmp_name;

    xvid_2pass2.bitrate= s->avctx->bit_rate;

    xvid_2pass2.vbv_size= s->avctx->rc_buffer_size;

    xvid_2pass2.vbv_maxrate= s->avctx->rc_max_rate;

    xvid_2pass2.vbv_initial= s->avctx->rc_initial_buffer_occupancy;



    xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0);

    xvid_plg_create.fbase= s->avctx->time_base.den;

    xvid_plg_create.fincr= s->avctx->time_base.num;

    xvid_plg_create.param= &xvid_2pass2;



    if(xvid_plugin_2pass2(NULL, XVID_PLG_CREATE, &xvid_plg_create, &s->rc_context.non_lavc_opaque)<0){

        av_log(NULL, AV_LOG_ERROR, "xvid_plugin_2pass2 failed\n");

        return -1;

    }

    return 0;

}
int ff_xvid_rate_control_init(MpegEncContext *s){

    char *tmp_name;

    int fd, i;

    xvid_plg_create_t xvid_plg_create = { 0 };

    xvid_plugin_2pass2_t xvid_2pass2  = { 0 };



    fd=av_tempfile("xvidrc.", &tmp_name, 0, s->avctx);

    if (fd == -1) {

        av_log(NULL, AV_LOG_ERROR, "Can't create temporary pass2 file.\n");

        return -1;

    }



    for(i=0; i<s->rc_context.num_entries; i++){

        static const char frame_types[] = " ipbs";

        char tmp[256];

        RateControlEntry *rce;



        rce= &s->rc_context.entry[i];



        snprintf(tmp, sizeof(tmp), "%c %d %d %d %d %d %d\n",

            frame_types[rce->pict_type], (int)lrintf(rce->qscale / FF_QP2LAMBDA), rce->i_count, s->mb_num - rce->i_count - rce->skip_count,

            rce->skip_count, (rce->i_tex_bits + rce->p_tex_bits + rce->misc_bits+7)/8, (rce->header_bits+rce->mv_bits+7)/8);



        if (write(fd, tmp, strlen(tmp)) < 0) {

            av_log(NULL, AV_LOG_ERROR, "Error %s writing 2pass logfile\n", strerror(errno));



            return AVERROR(errno);

        }

    }






    xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0);

    xvid_2pass2.filename= tmp_name;

    xvid_2pass2.bitrate= s->avctx->bit_rate;

    xvid_2pass2.vbv_size= s->avctx->rc_buffer_size;

    xvid_2pass2.vbv_maxrate= s->avctx->rc_max_rate;

    xvid_2pass2.vbv_initial= s->avctx->rc_initial_buffer_occupancy;



    xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0);

    xvid_plg_create.fbase= s->avctx->time_base.den;

    xvid_plg_create.fincr= s->avctx->time_base.num;

    xvid_plg_create.param= &xvid_2pass2;



    if(xvid_plugin_2pass2(NULL, XVID_PLG_CREATE, &xvid_plg_create, &s->rc_context.non_lavc_opaque)<0){

        av_log(NULL, AV_LOG_ERROR, "xvid_plugin_2pass2 failed\n");

        return -1;

    }

    return 0;

}
int FUNC_0(MpegEncContext *VAR_0){

    char *VAR_1;

    int VAR_2, VAR_3;

    xvid_plg_create_t xvid_plg_create = { 0 };

    xvid_plugin_2pass2_t xvid_2pass2  = { 0 };



    VAR_2=av_tempfile("xvidrc.", &VAR_1, 0, VAR_0->avctx);

    if (VAR_2 == -1) {

        av_log(NULL, AV_LOG_ERROR, "Can't create temporary pass2 file.\n");

        return -1;

    }



    for(VAR_3=0; VAR_3<VAR_0->rc_context.num_entries; VAR_3++){

        static const char frame_types[] = " ipbs";

        char tmp[256];

        RateControlEntry *rce;



        rce= &VAR_0->rc_context.entry[VAR_3];



        snprintf(tmp, sizeof(tmp), "%c %d %d %d %d %d %d\n",

            frame_types[rce->pict_type], (int)lrintf(rce->qscale / FF_QP2LAMBDA), rce->i_count, VAR_0->mb_num - rce->i_count - rce->skip_count,

            rce->skip_count, (rce->i_tex_bits + rce->p_tex_bits + rce->misc_bits+7)/8, (rce->header_bits+rce->mv_bits+7)/8);



        if (write(VAR_2, tmp, strlen(tmp)) < 0) {

            av_log(NULL, AV_LOG_ERROR, "Error %VAR_0 writing 2pass logfile\n", strerror(errno));



            return AVERROR(errno);

        }

    }






    xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0);

    xvid_2pass2.filename= VAR_1;

    xvid_2pass2.bitrate= VAR_0->avctx->bit_rate;

    xvid_2pass2.vbv_size= VAR_0->avctx->rc_buffer_size;

    xvid_2pass2.vbv_maxrate= VAR_0->avctx->rc_max_rate;

    xvid_2pass2.vbv_initial= VAR_0->avctx->rc_initial_buffer_occupancy;



    xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0);

    xvid_plg_create.fbase= VAR_0->avctx->time_base.den;

    xvid_plg_create.fincr= VAR_0->avctx->time_base.num;

    xvid_plg_create.param= &xvid_2pass2;



    if(xvid_plugin_2pass2(NULL, XVID_PLG_CREATE, &xvid_plg_create, &VAR_0->rc_context.non_lavc_opaque)<0){

        av_log(NULL, AV_LOG_ERROR, "xvid_plugin_2pass2 failed\n");

        return -1;

    }

    return 0;

}
int FUNC_0(MpegEncContext *VAR_0){ char *VAR_1; int VAR_2, VAR_3; xvid_plg_create_t xvid_plg_create = { 0 }; xvid_plugin_2pass2_t xvid_2pass2  = { 0 }; VAR_2=av_tempfile("xvidrc.", &VAR_1, 0, VAR_0->avctx); if (VAR_2 == -1) { av_log(NULL, AV_LOG_ERROR, "Can't create temporary pass2 file.\n"); return -1; } for(VAR_3=0; VAR_3<VAR_0->rc_context.num_entries; VAR_3++){ static const char frame_types[] = " ipbs"; char tmp[256]; RateControlEntry *rce; rce= &VAR_0->rc_context.entry[VAR_3]; snprintf(tmp, sizeof(tmp), "%c %d %d %d %d %d %d\n",
frame_types[rce->pict_type], (int)lrintf(rce->qscale / FF_QP2LAMBDA), rce->i_count, VAR_0->mb_num - rce->i_count - rce->skip_count,
rce->skip_count, (rce->i_tex_bits + rce->p_tex_bits + rce->misc_bits+7)/8, (rce->header_bits+rce->mv_bits+7)/8); if (write(VAR_2, tmp, strlen(tmp)) < 0) { av_log(NULL, AV_LOG_ERROR, "Error %VAR_0 writing 2pass logfile\n", strerror(errno)); return AVERROR(errno); } } xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0); xvid_2pass2.filename= VAR_1; xvid_2pass2.bitrate= VAR_0->avctx->bit_rate; xvid_2pass2.vbv_size= VAR_0->avctx->rc_buffer_size; xvid_2pass2.vbv_maxrate= VAR_0->avctx->rc_max_rate; xvid_2pass2.vbv_initial= VAR_0->avctx->rc_initial_buffer_occupancy; xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0); xvid_plg_create.fbase= VAR_0->avctx->time_base.den; xvid_plg_create.fincr= VAR_0->avctx->time_base.num; xvid_plg_create.param= &xvid_2pass2; if(xvid_plugin_2pass2(NULL, XVID_PLG_CREATE, &xvid_plg_create, &VAR_0->rc_context.non_lavc_opaque)<0){ av_log(NULL, AV_LOG_ERROR, "xvid_plugin_2pass2 failed\n"); return -1; } return 0; }