int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type)

{

    int f_code;



    if(s->me_method>=ME_EPZS){

        int mv_num[8];

        int i, y;

        int loose=0;

        UINT8 * fcode_tab= s->fcode_tab;



        for(i=0; i<8; i++) mv_num[i]=0;



        for(y=0; y<s->mb_height; y++){

            int x;

            int xy= (y+1)* (s->mb_width+2) + 1;

            i= y*s->mb_width;

            for(x=0; x<s->mb_width; x++){

                if(s->mb_type[i] & type){

                    mv_num[ fcode_tab[mv_table[xy][0] + MAX_MV] ]++;

                    mv_num[ fcode_tab[mv_table[xy][1] + MAX_MV] ]++;

//printf("%d %d %d\n", s->mv_table[0][i], fcode_tab[s->mv_table[0][i] + MAX_MV], i);

                }

                i++;

                xy++;

            }

        }



        for(i=MAX_FCODE; i>1; i--){

            int threshold;

            loose+= mv_num[i];



            if(s->pict_type==B_TYPE) threshold= 0;

            else                     threshold= s->mb_num/20; //FIXME 

            if(loose > threshold) break;

        }

//    printf("fcode: %d type: %d\n", i, s->pict_type);

        return i;

/*        for(i=0; i<=MAX_FCODE; i++){

            printf("%d ", mv_num[i]);

        }

        printf("\n");*/

    }else{

        return 1;

    }

}

int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type)

{

    int f_code;



    if(s->me_method>=ME_EPZS){

        int mv_num[8];

        int i, y;

        int loose=0;

        UINT8 * fcode_tab= s->fcode_tab;



        for(i=0; i<8; i++) mv_num[i]=0;



        for(y=0; y<s->mb_height; y++){

            int x;

            int xy= (y+1)* (s->mb_width+2) + 1;

            i= y*s->mb_width;

            for(x=0; x<s->mb_width; x++){

                if(s->mb_type[i] & type){

                    mv_num[ fcode_tab[mv_table[xy][0] + MAX_MV] ]++;

                    mv_num[ fcode_tab[mv_table[xy][1] + MAX_MV] ]++;



                }

                i++;

                xy++;

            }

        }



        for(i=MAX_FCODE; i>1; i--){

            int threshold;

            loose+= mv_num[i];



            if(s->pict_type==B_TYPE) threshold= 0;

            else                     threshold= s->mb_num/20; 

            if(loose > threshold) break;

        }



        return i;









    }else{

        return 1;

    }

}

int FUNC_0(MpegEncContext * VAR_0, VAR_1 (*mv_table)[2], int VAR_2)

{

    int VAR_3;



    if(VAR_0->me_method>=ME_EPZS){

        int VAR_4[8];

        int VAR_5, VAR_6;

        int VAR_7=0;

        UINT8 * fcode_tab= VAR_0->fcode_tab;



        for(VAR_5=0; VAR_5<8; VAR_5++) VAR_4[VAR_5]=0;



        for(VAR_6=0; VAR_6<VAR_0->mb_height; VAR_6++){

            int x;

            int xy= (VAR_6+1)* (VAR_0->mb_width+2) + 1;

            VAR_5= VAR_6*VAR_0->mb_width;

            for(x=0; x<VAR_0->mb_width; x++){

                if(VAR_0->mb_type[VAR_5] & VAR_2){

                    VAR_4[ fcode_tab[mv_table[xy][0] + MAX_MV] ]++;

                    VAR_4[ fcode_tab[mv_table[xy][1] + MAX_MV] ]++;



                }

                VAR_5++;

                xy++;

            }

        }



        for(VAR_5=MAX_FCODE; VAR_5>1; VAR_5--){

            int VAR_8;

            VAR_7+= VAR_4[VAR_5];



            if(VAR_0->pict_type==B_TYPE) VAR_8= 0;

            else                     VAR_8= VAR_0->mb_num/20; 

            if(VAR_7 > VAR_8) break;

        }



        return VAR_5;









    }else{

        return 1;

    }

}

int FUNC_0(MpegEncContext * VAR_0, VAR_1 (*mv_table)[2], int VAR_2)
{ int VAR_3; if(VAR_0->me_method>=ME_EPZS){ int VAR_4[8]; int VAR_5, VAR_6; int VAR_7=0; UINT8 * fcode_tab= VAR_0->fcode_tab; for(VAR_5=0; VAR_5<8; VAR_5++) VAR_4[VAR_5]=0; for(VAR_6=0; VAR_6<VAR_0->mb_height; VAR_6++){ int x; int xy= (VAR_6+1)* (VAR_0->mb_width+2) + 1; VAR_5= VAR_6*VAR_0->mb_width; for(x=0; x<VAR_0->mb_width; x++){ if(VAR_0->mb_type[VAR_5] & VAR_2){ VAR_4[ fcode_tab[mv_table[xy][0] + MAX_MV] ]++; VAR_4[ fcode_tab[mv_table[xy][1] + MAX_MV] ]++; } VAR_5++; xy++; } } for(VAR_5=MAX_FCODE; VAR_5>1; VAR_5--){ int VAR_8; VAR_7+= VAR_4[VAR_5]; if(VAR_0->pict_type==B_TYPE) VAR_8= 0; else                     VAR_8= VAR_0->mb_num/20; if(VAR_7 > VAR_8) break; } return VAR_5; }else{ return 1; } }