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

MAPCDSF_decodeTable3Sub0() static private method

static private MAPCDSF_decodeTable3Sub0 ( MaiBitReader mbr0, ManagedPointer buf_to_read, uint num_to_read, MaiAT3PlusCoreDecoderSearchTableDes huff_table_now ) : int
mbr0 MaiBitReader
buf_to_read ManagedPointer
num_to_read uint
huff_table_now MaiAT3PlusCoreDecoderSearchTableDes
return int
        static int MAPCDSF_decodeTable3Sub0(MaiBitReader mbr0, ManagedPointer<short> buf_to_read, uint num_to_read, MaiAT3PlusCoreDecoderSearchTableDes huff_table_now)
        {
            int rs = 0;

            if (huff_table_now.uk3 == 1)
            {
                uint tcounter0 = 0;
                for (uint b0 = 0; b0 < (num_to_read >> (huff_table_now.uk4)); b0++)
                {
                    uint group_value = MAPCDSF_getHuffValue(huff_table_now, mbr0);

                    for (uint b1 = 0; b1 < huff_table_now.uk2; b1++)
                    {
                        uint value_now = (uint)(group_value >> (int)((huff_table_now.uk2 - b1 - 1) * huff_table_now.uk6));
                        value_now &= huff_table_now.mask;

                        if (0 == huff_table_now.uk5)
                        {
                            if ((value_now & ( 1 << (huff_table_now.uk6 - 1) )) != 0 )
                                buf_to_read[tcounter0++] = (short)(value_now | ( ~( ( 1 << (huff_table_now.uk6) ) - 1 ) ));
                            else
                                buf_to_read[tcounter0++] = (short)(value_now);
                        }
                        else
                        {
                            if ( ((value_now != 0) && (mbr0.getWithI32Buffer(1) != 0)) )
                                buf_to_read[tcounter0++] = (short)(((short)(value_now)) * (-1));
                            else
                                buf_to_read[tcounter0++] = (short)(value_now);
                        }
                    }
                }
            }
            else if (huff_table_now.uk3 > 1)
            {
                uint tcounter0 = 0;
                for (uint b0 = 0; b0 < (num_to_read >> (huff_table_now.uk4)); b0 += huff_table_now.uk3)
                {
                    uint l320 = (uint)mbr0.getWithI32Buffer(1);
                    if (0 == l320)
                    {
                        for (uint b1 = 0; b1 < huff_table_now.uk3 * huff_table_now.uk2; b1++)
                        {
                            buf_to_read[tcounter0++] = 0;
                        }
                    }
                    else for (uint b2 = 0; b2 < huff_table_now.uk3; b2++)
                    {
                        uint group_value = MAPCDSF_getHuffValue(huff_table_now, mbr0);

                        for (uint b1 = 0; b1 < huff_table_now.uk2; b1++)
                        {
                            uint value_now = (uint)(group_value >> (int)((huff_table_now.uk2 - b1 - 1) * huff_table_now.uk6));
                            value_now &= huff_table_now.mask;

                            if (0 == huff_table_now.uk5)
                            {
                                if ((value_now & ( 1 << (huff_table_now.uk6 - 1) )) != 0 )
                                    buf_to_read[tcounter0++] = (short)(value_now | ( ~( ( 1 << (huff_table_now.uk6) ) - 1 ) ));
                                else
                                    buf_to_read[tcounter0++] = (short)(value_now);
                            }
                            else
                            {
                                if ( ((value_now!= 0) && (mbr0.getWithI32Buffer(1)!= 0))  )
                                    buf_to_read[tcounter0++] = (short)(((short)(value_now)) * (-1));
                                else
                                    buf_to_read[tcounter0++] = (short)(value_now);
                            }
                        }
                    }
                }
            }
            else
            {
                rs = -20;
            }

            return rs;
        }
MaiAT3PlusCoreDecoder