CSPspEmu.Hle.Formats.audio.At3.MaiAT3PlusCoreDecoder.MAPCDSF_parseACCDataMemberUsingHuffTable2 C# (CSharp) Method

MAPCDSF_parseACCDataMemberUsingHuffTable2() static private method

static private MAPCDSF_parseACCDataMemberUsingHuffTable2 ( uint a0, MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info ) : int
a0 uint
mbr0 MaiBitReader
chn_info MaiAT3PlusCoreDecoderChnInfo
return int
        static int MAPCDSF_parseACCDataMemberUsingHuffTable2(uint a0, MaiBitReader mbr0, MaiAT3PlusCoreDecoderChnInfo chn_info)
        {
            int rs = 0;

            if (chn_info.acc_data_now.table[a0].num_acc != 0)
            {
                if (chn_info.chn_ref.acc_data_now.table[a0].num_acc != 0)
                {
                    chn_info.acc_data_now.table[a0].data0[0] = (int)(
                        chn_info.chn_ref.acc_data_now.table[a0].data0[0]
                        + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_10[0], mbr0)
                    );

                    chn_info.acc_data_now.table[a0].data0[0] &= 0x1F;
                }
                else
                {
                    chn_info.acc_data_now.table[a0].data0[0] = (int)(
                        MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_10[0], mbr0)
                    );
                }

                for (uint a1 = 1; a1 < (uint)chn_info.acc_data_now.table[a0].num_acc; a1++)
                {
                    uint check_value0 = 0;
                    if (a1 >= (uint)chn_info.chn_ref.acc_data_now.table[a0].num_acc)
                        check_value0 = 1;

                    if ( ((int)chn_info.acc_data_now.table[a0].data1[a1])
                        - ((int)chn_info.acc_data_now.table[a0].data1[a1 - 1])
                        <= 0)
                    {
                        MaiAT3PlusCoreDecoderSearchTableDes huff_table_now = null;

                        if (check_value0 != 0)
                        {
                            huff_table_now = MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_6[0];
                        }
                        else
                        {
                            huff_table_now = MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_10[0];
                        }

                        if (0 == check_value0)
                        {
                            chn_info.acc_data_now.table[a0].data0[a1] = (int)(
                                chn_info.chn_ref.acc_data_now.table[a0].data0[a1]
                                + MAPCDSF_getHuffValue(huff_table_now, mbr0)
                            );

                            chn_info.acc_data_now.table[a0].data0[a1] &= 0x1F;
                        }
                        else
                        {
                            chn_info.acc_data_now.table[a0].data0[a1] = (int)(
                                chn_info.acc_data_now.table[a0].data0[a1 - 1]
                                + MAPCDSF_getHuffValue(huff_table_now, mbr0)
                            );
                        }
                    }
                    else
                    {
                        if (0 == check_value0)
                        {
                            if (mbr0.getWithI32Buffer(1) != 0)
                            {
                                MAPCDSF_parseACCDataMemberUsingBitRead(a0, a1, mbr0, chn_info);
                            }
                            else
                            {
                                chn_info.acc_data_now.table[a0].data0[a1] =
                                    chn_info.chn_ref.acc_data_now.table[a0].data0[a1];
                            }
                        }
                        else
                        {
                            chn_info.acc_data_now.table[a0].data0[a1] = (int)(
                                chn_info.acc_data_now.table[a0].data0[a1 - 1]
                                + MAPCDSF_getHuffValue(MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_huff_table_global_7[0], mbr0)
                            );
                        }
                    }
                }
            }

            return rs;
        }
MaiAT3PlusCoreDecoder