int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,

                              const int *ref_count, int slice_type_nos,

                              H264PredWeightTable *pwt, void *logctx)

{

    int list, i, j;

    int luma_def, chroma_def;



    pwt->use_weight             = 0;

    pwt->use_weight_chroma      = 0;

    pwt->luma_log2_weight_denom = get_ue_golomb(gb);

    if (sps->chroma_format_idc)

        pwt->chroma_log2_weight_denom = get_ue_golomb(gb);



    if (pwt->luma_log2_weight_denom > 7U) {

        av_log(logctx, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", pwt->luma_log2_weight_denom);

        pwt->luma_log2_weight_denom = 0;

    }

    if (pwt->chroma_log2_weight_denom > 7U) {

        av_log(logctx, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", pwt->chroma_log2_weight_denom);

        pwt->chroma_log2_weight_denom = 0;

    }



    luma_def   = 1 << pwt->luma_log2_weight_denom;

    chroma_def = 1 << pwt->chroma_log2_weight_denom;



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

        pwt->luma_weight_flag[list]   = 0;

        pwt->chroma_weight_flag[list] = 0;

        for (i = 0; i < ref_count[list]; i++) {

            int luma_weight_flag, chroma_weight_flag;



            luma_weight_flag = get_bits1(gb);

            if (luma_weight_flag) {

                pwt->luma_weight[i][list][0] = get_se_golomb(gb);

                pwt->luma_weight[i][list][1] = get_se_golomb(gb);




                if (pwt->luma_weight[i][list][0] != luma_def ||

                    pwt->luma_weight[i][list][1] != 0) {

                    pwt->use_weight             = 1;

                    pwt->luma_weight_flag[list] = 1;

                }

            } else {

                pwt->luma_weight[i][list][0] = luma_def;

                pwt->luma_weight[i][list][1] = 0;

            }



            if (sps->chroma_format_idc) {

                chroma_weight_flag = get_bits1(gb);

                if (chroma_weight_flag) {

                    int j;

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

                        pwt->chroma_weight[i][list][j][0] = get_se_golomb(gb);

                        pwt->chroma_weight[i][list][j][1] = get_se_golomb(gb);

                        if ((int8_t)pwt->chroma_weight[i][list][j][0] != pwt->chroma_weight[i][list][j][0] ||

                            (int8_t)pwt->chroma_weight[i][list][j][1] != pwt->chroma_weight[i][list][j][1])


                        if (pwt->chroma_weight[i][list][j][0] != chroma_def ||

                            pwt->chroma_weight[i][list][j][1] != 0) {

                            pwt->use_weight_chroma        = 1;

                            pwt->chroma_weight_flag[list] = 1;

                        }

                    }

                } else {

                    int j;

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

                        pwt->chroma_weight[i][list][j][0] = chroma_def;

                        pwt->chroma_weight[i][list][j][1] = 0;

                    }

                }

            }



            // for MBAFF

            pwt->luma_weight[16 + 2 * i][list][0] = pwt->luma_weight[16 + 2 * i + 1][list][0] = pwt->luma_weight[i][list][0];

            pwt->luma_weight[16 + 2 * i][list][1] = pwt->luma_weight[16 + 2 * i + 1][list][1] = pwt->luma_weight[i][list][1];

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

                pwt->chroma_weight[16 + 2 * i][list][j][0] = pwt->chroma_weight[16 + 2 * i + 1][list][j][0] = pwt->chroma_weight[i][list][j][0];

                pwt->chroma_weight[16 + 2 * i][list][j][1] = pwt->chroma_weight[16 + 2 * i + 1][list][j][1] = pwt->chroma_weight[i][list][j][1];

            }

        }

        if (slice_type_nos != AV_PICTURE_TYPE_B)

            break;

    }

    pwt->use_weight = pwt->use_weight || pwt->use_weight_chroma;

    return 0;

out_range_weight:

    avpriv_request_sample(logctx, "Out of range weight\n");

    return AVERROR_INVALIDDATA;

}
int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,

                              const int *ref_count, int slice_type_nos,

                              H264PredWeightTable *pwt, void *logctx)

{

    int list, i, j;

    int luma_def, chroma_def;



    pwt->use_weight             = 0;

    pwt->use_weight_chroma      = 0;

    pwt->luma_log2_weight_denom = get_ue_golomb(gb);

    if (sps->chroma_format_idc)

        pwt->chroma_log2_weight_denom = get_ue_golomb(gb);



    if (pwt->luma_log2_weight_denom > 7U) {

        av_log(logctx, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", pwt->luma_log2_weight_denom);

        pwt->luma_log2_weight_denom = 0;

    }

    if (pwt->chroma_log2_weight_denom > 7U) {

        av_log(logctx, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", pwt->chroma_log2_weight_denom);

        pwt->chroma_log2_weight_denom = 0;

    }



    luma_def   = 1 << pwt->luma_log2_weight_denom;

    chroma_def = 1 << pwt->chroma_log2_weight_denom;



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

        pwt->luma_weight_flag[list]   = 0;

        pwt->chroma_weight_flag[list] = 0;

        for (i = 0; i < ref_count[list]; i++) {

            int luma_weight_flag, chroma_weight_flag;



            luma_weight_flag = get_bits1(gb);

            if (luma_weight_flag) {

                pwt->luma_weight[i][list][0] = get_se_golomb(gb);

                pwt->luma_weight[i][list][1] = get_se_golomb(gb);




                if (pwt->luma_weight[i][list][0] != luma_def ||

                    pwt->luma_weight[i][list][1] != 0) {

                    pwt->use_weight             = 1;

                    pwt->luma_weight_flag[list] = 1;

                }

            } else {

                pwt->luma_weight[i][list][0] = luma_def;

                pwt->luma_weight[i][list][1] = 0;

            }



            if (sps->chroma_format_idc) {

                chroma_weight_flag = get_bits1(gb);

                if (chroma_weight_flag) {

                    int j;

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

                        pwt->chroma_weight[i][list][j][0] = get_se_golomb(gb);

                        pwt->chroma_weight[i][list][j][1] = get_se_golomb(gb);

                        if ((int8_t)pwt->chroma_weight[i][list][j][0] != pwt->chroma_weight[i][list][j][0] ||

                            (int8_t)pwt->chroma_weight[i][list][j][1] != pwt->chroma_weight[i][list][j][1])


                        if (pwt->chroma_weight[i][list][j][0] != chroma_def ||

                            pwt->chroma_weight[i][list][j][1] != 0) {

                            pwt->use_weight_chroma        = 1;

                            pwt->chroma_weight_flag[list] = 1;

                        }

                    }

                } else {

                    int j;

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

                        pwt->chroma_weight[i][list][j][0] = chroma_def;

                        pwt->chroma_weight[i][list][j][1] = 0;

                    }

                }

            }



            

            pwt->luma_weight[16 + 2 * i][list][0] = pwt->luma_weight[16 + 2 * i + 1][list][0] = pwt->luma_weight[i][list][0];

            pwt->luma_weight[16 + 2 * i][list][1] = pwt->luma_weight[16 + 2 * i + 1][list][1] = pwt->luma_weight[i][list][1];

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

                pwt->chroma_weight[16 + 2 * i][list][j][0] = pwt->chroma_weight[16 + 2 * i + 1][list][j][0] = pwt->chroma_weight[i][list][j][0];

                pwt->chroma_weight[16 + 2 * i][list][j][1] = pwt->chroma_weight[16 + 2 * i + 1][list][j][1] = pwt->chroma_weight[i][list][j][1];

            }

        }

        if (slice_type_nos != AV_PICTURE_TYPE_B)

            break;

    }

    pwt->use_weight = pwt->use_weight || pwt->use_weight_chroma;

    return 0;

out_range_weight:

    avpriv_request_sample(logctx, "Out of range weight\n");

    return AVERROR_INVALIDDATA;

}
int FUNC_0(GetBitContext *VAR_0, const SPS *VAR_1,

                              const int *VAR_2, int VAR_3,

                              H264PredWeightTable *VAR_4, void *VAR_5)

{

    int VAR_6, VAR_7, VAR_13;

    int VAR_9, VAR_10;



    VAR_4->use_weight             = 0;

    VAR_4->use_weight_chroma      = 0;

    VAR_4->luma_log2_weight_denom = get_ue_golomb(VAR_0);

    if (VAR_1->chroma_format_idc)

        VAR_4->chroma_log2_weight_denom = get_ue_golomb(VAR_0);



    if (VAR_4->luma_log2_weight_denom > 7U) {

        av_log(VAR_5, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", VAR_4->luma_log2_weight_denom);

        VAR_4->luma_log2_weight_denom = 0;

    }

    if (VAR_4->chroma_log2_weight_denom > 7U) {

        av_log(VAR_5, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", VAR_4->chroma_log2_weight_denom);

        VAR_4->chroma_log2_weight_denom = 0;

    }



    VAR_9   = 1 << VAR_4->luma_log2_weight_denom;

    VAR_10 = 1 << VAR_4->chroma_log2_weight_denom;



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

        VAR_4->VAR_11[VAR_6]   = 0;

        VAR_4->VAR_12[VAR_6] = 0;

        for (VAR_7 = 0; VAR_7 < VAR_2[VAR_6]; VAR_7++) {

            int VAR_11, VAR_12;



            VAR_11 = get_bits1(VAR_0);

            if (VAR_11) {

                VAR_4->luma_weight[VAR_7][VAR_6][0] = get_se_golomb(VAR_0);

                VAR_4->luma_weight[VAR_7][VAR_6][1] = get_se_golomb(VAR_0);




                if (VAR_4->luma_weight[VAR_7][VAR_6][0] != VAR_9 ||

                    VAR_4->luma_weight[VAR_7][VAR_6][1] != 0) {

                    VAR_4->use_weight             = 1;

                    VAR_4->VAR_11[VAR_6] = 1;

                }

            } else {

                VAR_4->luma_weight[VAR_7][VAR_6][0] = VAR_9;

                VAR_4->luma_weight[VAR_7][VAR_6][1] = 0;

            }



            if (VAR_1->chroma_format_idc) {

                VAR_12 = get_bits1(VAR_0);

                if (VAR_12) {

                    int VAR_13;

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

                        VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] = get_se_golomb(VAR_0);

                        VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] = get_se_golomb(VAR_0);

                        if ((int8_t)VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] != VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] ||

                            (int8_t)VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] != VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1])


                        if (VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] != VAR_10 ||

                            VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] != 0) {

                            VAR_4->use_weight_chroma        = 1;

                            VAR_4->VAR_12[VAR_6] = 1;

                        }

                    }

                } else {

                    int VAR_13;

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

                        VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] = VAR_10;

                        VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] = 0;

                    }

                }

            }



            

            VAR_4->luma_weight[16 + 2 * VAR_7][VAR_6][0] = VAR_4->luma_weight[16 + 2 * VAR_7 + 1][VAR_6][0] = VAR_4->luma_weight[VAR_7][VAR_6][0];

            VAR_4->luma_weight[16 + 2 * VAR_7][VAR_6][1] = VAR_4->luma_weight[16 + 2 * VAR_7 + 1][VAR_6][1] = VAR_4->luma_weight[VAR_7][VAR_6][1];

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

                VAR_4->chroma_weight[16 + 2 * VAR_7][VAR_6][VAR_13][0] = VAR_4->chroma_weight[16 + 2 * VAR_7 + 1][VAR_6][VAR_13][0] = VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0];

                VAR_4->chroma_weight[16 + 2 * VAR_7][VAR_6][VAR_13][1] = VAR_4->chroma_weight[16 + 2 * VAR_7 + 1][VAR_6][VAR_13][1] = VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1];

            }

        }

        if (VAR_3 != AV_PICTURE_TYPE_B)

            break;

    }

    VAR_4->use_weight = VAR_4->use_weight || VAR_4->use_weight_chroma;

    return 0;

out_range_weight:

    avpriv_request_sample(VAR_5, "Out of range weight\n");

    return AVERROR_INVALIDDATA;

}
int FUNC_0(GetBitContext *VAR_0, const SPS *VAR_1,
const int *VAR_2, int VAR_3,
H264PredWeightTable *VAR_4, void *VAR_5)
{ int VAR_6, VAR_7, VAR_13; int VAR_9, VAR_10; VAR_4->use_weight             = 0; VAR_4->use_weight_chroma      = 0; VAR_4->luma_log2_weight_denom = get_ue_golomb(VAR_0); if (VAR_1->chroma_format_idc)
VAR_4->chroma_log2_weight_denom = get_ue_golomb(VAR_0); if (VAR_4->luma_log2_weight_denom > 7U) { av_log(VAR_5, AV_LOG_ERROR, "luma_log2_weight_denom %d is out of range\n", VAR_4->luma_log2_weight_denom); VAR_4->luma_log2_weight_denom = 0; } if (VAR_4->chroma_log2_weight_denom > 7U) { av_log(VAR_5, AV_LOG_ERROR, "chroma_log2_weight_denom %d is out of range\n", VAR_4->chroma_log2_weight_denom); VAR_4->chroma_log2_weight_denom = 0; } VAR_9   = 1 << VAR_4->luma_log2_weight_denom; VAR_10 = 1 << VAR_4->chroma_log2_weight_denom; for (VAR_6 = 0; VAR_6 < 2; VAR_6++) { VAR_4->VAR_11[VAR_6]   = 0; VAR_4->VAR_12[VAR_6] = 0; for (VAR_7 = 0; VAR_7 < VAR_2[VAR_6]; VAR_7++) { int VAR_11, VAR_12; VAR_11 = get_bits1(VAR_0); if (VAR_11) { VAR_4->luma_weight[VAR_7][VAR_6][0] = get_se_golomb(VAR_0); VAR_4->luma_weight[VAR_7][VAR_6][1] = get_se_golomb(VAR_0); if (VAR_4->luma_weight[VAR_7][VAR_6][0] != VAR_9 ||
VAR_4->luma_weight[VAR_7][VAR_6][1] != 0) { VAR_4->use_weight             = 1; VAR_4->VAR_11[VAR_6] = 1; } } else { VAR_4->luma_weight[VAR_7][VAR_6][0] = VAR_9; VAR_4->luma_weight[VAR_7][VAR_6][1] = 0; } if (VAR_1->chroma_format_idc) { VAR_12 = get_bits1(VAR_0); if (VAR_12) { int VAR_13; for (VAR_13 = 0; VAR_13 < 2; VAR_13++) { VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] = get_se_golomb(VAR_0); VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] = get_se_golomb(VAR_0); if ((int8_t)VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] != VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] ||
(int8_t)VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] != VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1])
if (VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] != VAR_10 ||
VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] != 0) { VAR_4->use_weight_chroma        = 1; VAR_4->VAR_12[VAR_6] = 1; } } } else { int VAR_13; for (VAR_13 = 0; VAR_13 < 2; VAR_13++) { VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0] = VAR_10; VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1] = 0; } } } VAR_4->luma_weight[16 + 2 * VAR_7][VAR_6][0] = VAR_4->luma_weight[16 + 2 * VAR_7 + 1][VAR_6][0] = VAR_4->luma_weight[VAR_7][VAR_6][0]; VAR_4->luma_weight[16 + 2 * VAR_7][VAR_6][1] = VAR_4->luma_weight[16 + 2 * VAR_7 + 1][VAR_6][1] = VAR_4->luma_weight[VAR_7][VAR_6][1]; for (VAR_13 = 0; VAR_13 < 2; VAR_13++) { VAR_4->chroma_weight[16 + 2 * VAR_7][VAR_6][VAR_13][0] = VAR_4->chroma_weight[16 + 2 * VAR_7 + 1][VAR_6][VAR_13][0] = VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][0]; VAR_4->chroma_weight[16 + 2 * VAR_7][VAR_6][VAR_13][1] = VAR_4->chroma_weight[16 + 2 * VAR_7 + 1][VAR_6][VAR_13][1] = VAR_4->chroma_weight[VAR_7][VAR_6][VAR_13][1]; } } if (VAR_3 != AV_PICTURE_TYPE_B)
break; } VAR_4->use_weight = VAR_4->use_weight || VAR_4->use_weight_chroma; return 0; out_range_weight:
avpriv_request_sample(VAR_5, "Out of range weight\n"); return AVERROR_INVALIDDATA; }