static void decode_scaling_matrices(H264Context *h, SPS *sps,

                                    PPS *pps, int is_sps,

                                    uint8_t(*scaling_matrix4)[16],

                                    uint8_t(*scaling_matrix8)[64])

{

    int fallback_sps = !is_sps && sps->scaling_matrix_present;

    const uint8_t *fallback[4] = {

        fallback_sps ? sps->scaling_matrix4[0] : default_scaling4[0],

        fallback_sps ? sps->scaling_matrix4[3] : default_scaling4[1],

        fallback_sps ? sps->scaling_matrix8[0] : default_scaling8[0],

        fallback_sps ? sps->scaling_matrix8[3] : default_scaling8[1]

    };

    if (get_bits1(&h->gb)) {

        sps->scaling_matrix_present |= is_sps;

        decode_scaling_list(h, scaling_matrix4[0], 16, default_scaling4[0], fallback[0]);        // Intra, Y

        decode_scaling_list(h, scaling_matrix4[1], 16, default_scaling4[0], scaling_matrix4[0]); // Intra, Cr

        decode_scaling_list(h, scaling_matrix4[2], 16, default_scaling4[0], scaling_matrix4[1]); // Intra, Cb

        decode_scaling_list(h, scaling_matrix4[3], 16, default_scaling4[1], fallback[1]);        // Inter, Y

        decode_scaling_list(h, scaling_matrix4[4], 16, default_scaling4[1], scaling_matrix4[3]); // Inter, Cr

        decode_scaling_list(h, scaling_matrix4[5], 16, default_scaling4[1], scaling_matrix4[4]); // Inter, Cb

        if (is_sps || pps->transform_8x8_mode) {

            decode_scaling_list(h, scaling_matrix8[0], 64, default_scaling8[0], fallback[2]); // Intra, Y

            if (sps->chroma_format_idc == 3) {

                decode_scaling_list(h, scaling_matrix8[1], 64, default_scaling8[0], scaling_matrix8[0]); // Intra, Cr

                decode_scaling_list(h, scaling_matrix8[2], 64, default_scaling8[0], scaling_matrix8[1]); // Intra, Cb

            }

            decode_scaling_list(h, scaling_matrix8[3], 64, default_scaling8[1], fallback[3]); // Inter, Y

            if (sps->chroma_format_idc == 3) {

                decode_scaling_list(h, scaling_matrix8[4], 64, default_scaling8[1], scaling_matrix8[3]); // Inter, Cr

                decode_scaling_list(h, scaling_matrix8[5], 64, default_scaling8[1], scaling_matrix8[4]); // Inter, Cb

            }

        }

    }

}

static void decode_scaling_matrices(H264Context *h, SPS *sps,

                                    PPS *pps, int is_sps,

                                    uint8_t(*scaling_matrix4)[16],

                                    uint8_t(*scaling_matrix8)[64])

{

    int fallback_sps = !is_sps && sps->scaling_matrix_present;

    const uint8_t *fallback[4] = {

        fallback_sps ? sps->scaling_matrix4[0] : default_scaling4[0],

        fallback_sps ? sps->scaling_matrix4[3] : default_scaling4[1],

        fallback_sps ? sps->scaling_matrix8[0] : default_scaling8[0],

        fallback_sps ? sps->scaling_matrix8[3] : default_scaling8[1]

    };

    if (get_bits1(&h->gb)) {

        sps->scaling_matrix_present |= is_sps;

        decode_scaling_list(h, scaling_matrix4[0], 16, default_scaling4[0], fallback[0]);        

        decode_scaling_list(h, scaling_matrix4[1], 16, default_scaling4[0], scaling_matrix4[0]); 

        decode_scaling_list(h, scaling_matrix4[2], 16, default_scaling4[0], scaling_matrix4[1]); 

        decode_scaling_list(h, scaling_matrix4[3], 16, default_scaling4[1], fallback[1]);        

        decode_scaling_list(h, scaling_matrix4[4], 16, default_scaling4[1], scaling_matrix4[3]); 

        decode_scaling_list(h, scaling_matrix4[5], 16, default_scaling4[1], scaling_matrix4[4]); 

        if (is_sps || pps->transform_8x8_mode) {

            decode_scaling_list(h, scaling_matrix8[0], 64, default_scaling8[0], fallback[2]); 

            if (sps->chroma_format_idc == 3) {

                decode_scaling_list(h, scaling_matrix8[1], 64, default_scaling8[0], scaling_matrix8[0]); 

                decode_scaling_list(h, scaling_matrix8[2], 64, default_scaling8[0], scaling_matrix8[1]); 

            }

            decode_scaling_list(h, scaling_matrix8[3], 64, default_scaling8[1], fallback[3]); 

            if (sps->chroma_format_idc == 3) {

                decode_scaling_list(h, scaling_matrix8[4], 64, default_scaling8[1], scaling_matrix8[3]); 

                decode_scaling_list(h, scaling_matrix8[5], 64, default_scaling8[1], scaling_matrix8[4]); 

            }

        }

    }

}

VAR_5staticVAR_5 VAR_5voidVAR_5 VAR_5decode_scaling_matricesVAR_5(VAR_5H264ContextVAR_5 *VAR_5VAR_0VAR_5, VAR_5SPSVAR_5 *VAR_5VAR_1VAR_5,

                                    VAR_5PPSVAR_5 *VAR_5VAR_2VAR_5, VAR_5intVAR_5 VAR_5VAR_3VAR_5,

                                    VAR_5VAR_4VAR_5(*VAR_5scaling_matrix4VAR_5)[VAR_516VAR_5],

                                    VAR_5VAR_4VAR_5(*VAR_5scaling_matrix8VAR_5)[VAR_564VAR_5])

{

    VAR_5intVAR_5 VAR_5fallback_spsVAR_5 = !VAR_5VAR_3VAR_5 && VAR_5VAR_1VAR_5->VAR_5scaling_matrix_presentVAR_5;

    VAR_5constVAR_5 VAR_5VAR_4VAR_5 *VAR_5fallbackVAR_5[VAR_54VAR_5] = {

        VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix4VAR_5[VAR_50VAR_5] : VAR_5default_scaling4VAR_5[VAR_50VAR_5],

        VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix4VAR_5[VAR_53VAR_5] : VAR_5default_scaling4VAR_5[VAR_51VAR_5],

        VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix8VAR_5[VAR_50VAR_5] : VAR_5default_scaling8VAR_5[VAR_50VAR_5],

        VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix8VAR_5[VAR_53VAR_5] : VAR_5default_scaling8VAR_5[VAR_51VAR_5]

    };

    VAR_5ifVAR_5 (VAR_5get_bits1VAR_5(&VAR_5VAR_0VAR_5->VAR_5gbVAR_5)) {

        VAR_5VAR_1VAR_5->VAR_5scaling_matrix_presentVAR_5 |= VAR_5VAR_3VAR_5;

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_50VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5fallbackVAR_5[VAR_50VAR_5]);        

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_51VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5scaling_matrix4VAR_5[VAR_50VAR_5]); 

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_52VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5scaling_matrix4VAR_5[VAR_51VAR_5]); 

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_53VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5fallbackVAR_5[VAR_51VAR_5]);        

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_54VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5scaling_matrix4VAR_5[VAR_53VAR_5]); 

        VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_55VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5scaling_matrix4VAR_5[VAR_54VAR_5]); 

        VAR_5ifVAR_5 (VAR_5VAR_3VAR_5 || VAR_5VAR_2VAR_5->VAR_5transform_8x8_modeVAR_5) {

            VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_50VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5fallbackVAR_5[VAR_52VAR_5]); 

            VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5chroma_format_idcVAR_5 == VAR_53VAR_5) {

                VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_51VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5scaling_matrix8VAR_5[VAR_50VAR_5]); 

                VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_52VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5scaling_matrix8VAR_5[VAR_51VAR_5]); 

            }

            VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_53VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5fallbackVAR_5[VAR_53VAR_5]); 

            VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5chroma_format_idcVAR_5 == VAR_53VAR_5) {

                VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_54VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5scaling_matrix8VAR_5[VAR_53VAR_5]); 

                VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_55VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5scaling_matrix8VAR_5[VAR_54VAR_5]); 

            }

        }

    }

}

VAR_5staticVAR_5 VAR_5voidVAR_5 VAR_5decode_scaling_matricesVAR_5(VAR_5H264ContextVAR_5 *VAR_5VAR_0VAR_5, VAR_5SPSVAR_5 *VAR_5VAR_1VAR_5,
VAR_5PPSVAR_5 *VAR_5VAR_2VAR_5, VAR_5intVAR_5 VAR_5VAR_3VAR_5,
VAR_5VAR_4VAR_5(*VAR_5scaling_matrix4VAR_5)[VAR_516VAR_5],
VAR_5VAR_4VAR_5(*VAR_5scaling_matrix8VAR_5)[VAR_564VAR_5])
{ VAR_5intVAR_5 VAR_5fallback_spsVAR_5 = !VAR_5VAR_3VAR_5 && VAR_5VAR_1VAR_5->VAR_5scaling_matrix_presentVAR_5; VAR_5constVAR_5 VAR_5VAR_4VAR_5 *VAR_5fallbackVAR_5[VAR_54VAR_5] = { VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix4VAR_5[VAR_50VAR_5] : VAR_5default_scaling4VAR_5[VAR_50VAR_5],
VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix4VAR_5[VAR_53VAR_5] : VAR_5default_scaling4VAR_5[VAR_51VAR_5],
VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix8VAR_5[VAR_50VAR_5] : VAR_5default_scaling8VAR_5[VAR_50VAR_5],
VAR_5fallback_spsVAR_5 ? VAR_5VAR_1VAR_5->VAR_5scaling_matrix8VAR_5[VAR_53VAR_5] : VAR_5default_scaling8VAR_5[VAR_51VAR_5]
}; VAR_5ifVAR_5 (VAR_5get_bits1VAR_5(&VAR_5VAR_0VAR_5->VAR_5gbVAR_5)) { VAR_5VAR_1VAR_5->VAR_5scaling_matrix_presentVAR_5 |= VAR_5VAR_3VAR_5; VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_50VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5fallbackVAR_5[VAR_50VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_51VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5scaling_matrix4VAR_5[VAR_50VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_52VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_50VAR_5], VAR_5scaling_matrix4VAR_5[VAR_51VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_53VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5fallbackVAR_5[VAR_51VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_54VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5scaling_matrix4VAR_5[VAR_53VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix4VAR_5[VAR_55VAR_5], VAR_516VAR_5, VAR_5default_scaling4VAR_5[VAR_51VAR_5], VAR_5scaling_matrix4VAR_5[VAR_54VAR_5]); VAR_5ifVAR_5 (VAR_5VAR_3VAR_5 || VAR_5VAR_2VAR_5->VAR_5transform_8x8_modeVAR_5) { VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_50VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5fallbackVAR_5[VAR_52VAR_5]); VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5chroma_format_idcVAR_5 == VAR_53VAR_5) { VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_51VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5scaling_matrix8VAR_5[VAR_50VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_52VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_50VAR_5], VAR_5scaling_matrix8VAR_5[VAR_51VAR_5]); } VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_53VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5fallbackVAR_5[VAR_53VAR_5]); VAR_5ifVAR_5 (VAR_5VAR_1VAR_5->VAR_5chroma_format_idcVAR_5 == VAR_53VAR_5) { VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_54VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5scaling_matrix8VAR_5[VAR_53VAR_5]); VAR_5decode_scaling_listVAR_5(VAR_5VAR_0VAR_5, VAR_5scaling_matrix8VAR_5[VAR_55VAR_5], VAR_564VAR_5, VAR_5default_scaling8VAR_5[VAR_51VAR_5], VAR_5scaling_matrix8VAR_5[VAR_54VAR_5]); } } } }