static void implicit_weight_table(const H264Context *h, H264SliceContext *sl, int field)

{

    int ref0, ref1, i, cur_poc, ref_start, ref_count0, ref_count1;



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

        sl->luma_weight_flag[i]   = 0;

        sl->chroma_weight_flag[i] = 0;

    }



    if (field < 0) {

        if (h->picture_structure == PICT_FRAME) {

            cur_poc = h->cur_pic_ptr->poc;

        } else {

            cur_poc = h->cur_pic_ptr->field_poc[h->picture_structure - 1];

        }

        if (sl->ref_count[0] == 1 && sl->ref_count[1] == 1 && !FRAME_MBAFF(h) &&

            sl->ref_list[0][0].poc + sl->ref_list[1][0].poc == 2 * cur_poc) {

            sl->use_weight        = 0;

            sl->use_weight_chroma = 0;

            return;

        }

        ref_start  = 0;

        ref_count0 = sl->ref_count[0];

        ref_count1 = sl->ref_count[1];

    } else {

        cur_poc    = h->cur_pic_ptr->field_poc[field];

        ref_start  = 16;

        ref_count0 = 16 + 2 * sl->ref_count[0];

        ref_count1 = 16 + 2 * sl->ref_count[1];

    }



    sl->use_weight               = 2;

    sl->use_weight_chroma        = 2;

    sl->luma_log2_weight_denom   = 5;

    sl->chroma_log2_weight_denom = 5;



    for (ref0 = ref_start; ref0 < ref_count0; ref0++) {

        int poc0 = sl->ref_list[0][ref0].poc;

        for (ref1 = ref_start; ref1 < ref_count1; ref1++) {

            int w = 32;

            if (!sl->ref_list[0][ref0].parent->long_ref && !sl->ref_list[1][ref1].parent->long_ref) {

                int poc1 = sl->ref_list[1][ref1].poc;

                int td   = av_clip_int8(poc1 - poc0);

                if (td) {

                    int tb = av_clip_int8(cur_poc - poc0);

                    int tx = (16384 + (FFABS(td) >> 1)) / td;

                    int dist_scale_factor = (tb * tx + 32) >> 8;

                    if (dist_scale_factor >= -64 && dist_scale_factor <= 128)

                        w = 64 - dist_scale_factor;

                }

            }

            if (field < 0) {

                sl->implicit_weight[ref0][ref1][0] =

                sl->implicit_weight[ref0][ref1][1] = w;

            } else {

                sl->implicit_weight[ref0][ref1][field] = w;

            }

        }

    }

}

static void implicit_weight_table(const H264Context *h, H264SliceContext *sl, int field)

{

    int ref0, ref1, i, cur_poc, ref_start, ref_count0, ref_count1;



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

        sl->luma_weight_flag[i]   = 0;

        sl->chroma_weight_flag[i] = 0;

    }



    if (field < 0) {

        if (h->picture_structure == PICT_FRAME) {

            cur_poc = h->cur_pic_ptr->poc;

        } else {

            cur_poc = h->cur_pic_ptr->field_poc[h->picture_structure - 1];

        }

        if (sl->ref_count[0] == 1 && sl->ref_count[1] == 1 && !FRAME_MBAFF(h) &&

            sl->ref_list[0][0].poc + sl->ref_list[1][0].poc == 2 * cur_poc) {

            sl->use_weight        = 0;

            sl->use_weight_chroma = 0;

            return;

        }

        ref_start  = 0;

        ref_count0 = sl->ref_count[0];

        ref_count1 = sl->ref_count[1];

    } else {

        cur_poc    = h->cur_pic_ptr->field_poc[field];

        ref_start  = 16;

        ref_count0 = 16 + 2 * sl->ref_count[0];

        ref_count1 = 16 + 2 * sl->ref_count[1];

    }



    sl->use_weight               = 2;

    sl->use_weight_chroma        = 2;

    sl->luma_log2_weight_denom   = 5;

    sl->chroma_log2_weight_denom = 5;



    for (ref0 = ref_start; ref0 < ref_count0; ref0++) {

        int poc0 = sl->ref_list[0][ref0].poc;

        for (ref1 = ref_start; ref1 < ref_count1; ref1++) {

            int w = 32;

            if (!sl->ref_list[0][ref0].parent->long_ref && !sl->ref_list[1][ref1].parent->long_ref) {

                int poc1 = sl->ref_list[1][ref1].poc;

                int td   = av_clip_int8(poc1 - poc0);

                if (td) {

                    int tb = av_clip_int8(cur_poc - poc0);

                    int tx = (16384 + (FFABS(td) >> 1)) / td;

                    int dist_scale_factor = (tb * tx + 32) >> 8;

                    if (dist_scale_factor >= -64 && dist_scale_factor <= 128)

                        w = 64 - dist_scale_factor;

                }

            }

            if (field < 0) {

                sl->implicit_weight[ref0][ref1][0] =

                sl->implicit_weight[ref0][ref1][1] = w;

            } else {

                sl->implicit_weight[ref0][ref1][field] = w;

            }

        }

    }

}

            sl->ref_list[0][0].poc + sl->ref_list[1][0].poc == 2 * cur_poc) {         int poc0 = sl->ref_list[0][ref0].poc;
static void FUNC_0(const H264Context *VAR_0, H264SliceContext *VAR_1, int VAR_2)

{

    int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7, VAR_8, VAR_9;



    for (VAR_5 = 0; VAR_5 < 2; VAR_5++) {

        VAR_1->luma_weight_flag[VAR_5]   = 0;

        VAR_1->chroma_weight_flag[VAR_5] = 0;

    }



    if (VAR_2 < 0) {

        if (VAR_0->picture_structure == PICT_FRAME) {

            VAR_6 = VAR_0->cur_pic_ptr->poc;

        } else {

            VAR_6 = VAR_0->cur_pic_ptr->field_poc[VAR_0->picture_structure - 1];

        }

        if (VAR_1->ref_count[0] == 1 && VAR_1->ref_count[1] == 1 && !FRAME_MBAFF(VAR_0) &&

            VAR_1->ref_list[0][0].poc + VAR_1->ref_list[1][0].poc == 2 * VAR_6) {

            VAR_1->use_weight        = 0;

            VAR_1->use_weight_chroma = 0;

            return;

        }

        VAR_7  = 0;

        VAR_8 = VAR_1->ref_count[0];

        VAR_9 = VAR_1->ref_count[1];

    } else {

        VAR_6    = VAR_0->cur_pic_ptr->field_poc[VAR_2];

        VAR_7  = 16;

        VAR_8 = 16 + 2 * VAR_1->ref_count[0];

        VAR_9 = 16 + 2 * VAR_1->ref_count[1];

    }



    VAR_1->use_weight               = 2;

    VAR_1->use_weight_chroma        = 2;

    VAR_1->luma_log2_weight_denom   = 5;

    VAR_1->chroma_log2_weight_denom = 5;



    for (VAR_3 = VAR_7; VAR_3 < VAR_8; VAR_3++) {

        int VAR_10 = VAR_1->ref_list[0][VAR_3].poc;

        for (VAR_4 = VAR_7; VAR_4 < VAR_9; VAR_4++) {

            int VAR_11 = 32;

            if (!VAR_1->ref_list[0][VAR_3].parent->long_ref && !VAR_1->ref_list[1][VAR_4].parent->long_ref) {

                int VAR_12 = VAR_1->ref_list[1][VAR_4].poc;

                int VAR_13   = av_clip_int8(VAR_12 - VAR_10);

                if (VAR_13) {

                    int VAR_14 = av_clip_int8(VAR_6 - VAR_10);

                    int VAR_15 = (16384 + (FFABS(VAR_13) >> 1)) / VAR_13;

                    int VAR_16 = (VAR_14 * VAR_15 + 32) >> 8;

                    if (VAR_16 >= -64 && VAR_16 <= 128)

                        VAR_11 = 64 - VAR_16;

                }

            }

            if (VAR_2 < 0) {

                VAR_1->implicit_weight[VAR_3][VAR_4][0] =

                VAR_1->implicit_weight[VAR_3][VAR_4][1] = VAR_11;

            } else {

                VAR_1->implicit_weight[VAR_3][VAR_4][VAR_2] = VAR_11;

            }

        }

    }

}

static void FUNC_0(const H264Context *VAR_0, H264SliceContext *VAR_1, int VAR_2)
{ int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7, VAR_8, VAR_9; for (VAR_5 = 0; VAR_5 < 2; VAR_5++) { VAR_1->luma_weight_flag[VAR_5]   = 0; VAR_1->chroma_weight_flag[VAR_5] = 0; } if (VAR_2 < 0) { if (VAR_0->picture_structure == PICT_FRAME) { VAR_6 = VAR_0->cur_pic_ptr->poc; } else { VAR_6 = VAR_0->cur_pic_ptr->field_poc[VAR_0->picture_structure - 1]; } if (VAR_1->ref_count[0] == 1 && VAR_1->ref_count[1] == 1 && !FRAME_MBAFF(VAR_0) &&
VAR_1->ref_list[0][0].poc + VAR_1->ref_list[1][0].poc == 2 * VAR_6) { VAR_1->use_weight        = 0; VAR_1->use_weight_chroma = 0; return; } VAR_7  = 0; VAR_8 = VAR_1->ref_count[0]; VAR_9 = VAR_1->ref_count[1]; } else { VAR_6    = VAR_0->cur_pic_ptr->field_poc[VAR_2]; VAR_7  = 16; VAR_8 = 16 + 2 * VAR_1->ref_count[0]; VAR_9 = 16 + 2 * VAR_1->ref_count[1]; } VAR_1->use_weight               = 2; VAR_1->use_weight_chroma        = 2; VAR_1->luma_log2_weight_denom   = 5; VAR_1->chroma_log2_weight_denom = 5; for (VAR_3 = VAR_7; VAR_3 < VAR_8; VAR_3++) { int VAR_10 = VAR_1->ref_list[0][VAR_3].poc; for (VAR_4 = VAR_7; VAR_4 < VAR_9; VAR_4++) { int VAR_11 = 32; if (!VAR_1->ref_list[0][VAR_3].parent->long_ref && !VAR_1->ref_list[1][VAR_4].parent->long_ref) { int VAR_12 = VAR_1->ref_list[1][VAR_4].poc; int VAR_13   = av_clip_int8(VAR_12 - VAR_10); if (VAR_13) { int VAR_14 = av_clip_int8(VAR_6 - VAR_10); int VAR_15 = (16384 + (FFABS(VAR_13) >> 1)) / VAR_13; int VAR_16 = (VAR_14 * VAR_15 + 32) >> 8; if (VAR_16 >= -64 && VAR_16 <= 128)
VAR_11 = 64 - VAR_16; } } if (VAR_2 < 0) { VAR_1->implicit_weight[VAR_3][VAR_4][0] =
VAR_1->implicit_weight[VAR_3][VAR_4][1] = VAR_11; } else { VAR_1->implicit_weight[VAR_3][VAR_4][VAR_2] = VAR_11; } } } }