javazoom.jl.decoder.Header.calculate_framesize C# (CSharp) Method

calculate_framesize() public method

Calculate Frame size. Calculates framesize in bytes excluding header size.
public calculate_framesize ( ) : int
return int
        public int calculate_framesize()
        {
            if (h_layer == 1)
            {
                framesize = (12 * bitrates[h_version][0][h_bitrate_index]) / frequencies[h_version][h_sample_frequency];
                if (h_padding_bit != 0)
                    framesize++;
                framesize <<= 2; // one slot is 4 bytes long
                nSlots = 0;
            }
            else
            {
                framesize = (144 * bitrates[h_version][h_layer - 1][h_bitrate_index]) / frequencies[h_version][h_sample_frequency];
                if (h_version == MPEG2_LSF || h_version == MPEG25_LSF)
                    framesize >>= 1;
                // SZD
                if (h_padding_bit != 0)
                    framesize++;
                // Layer III slots
                if (h_layer == 3)
                {
                    if (h_version == MPEG1)
                    {
                        nSlots = framesize - ((h_mode == SINGLE_CHANNEL)?17:32) - ((h_protection_bit != 0)?0:2) - 4; // header size
                    }
                    else
                    {
                        // MPEG-2 LSF, SZD: MPEG-2.5 LSF
                        nSlots = framesize - ((h_mode == SINGLE_CHANNEL)?9:17) - ((h_protection_bit != 0)?0:2) - 4; // header size
                    }
                }
                else
                {
                    nSlots = 0;
                }
            }
            framesize -= 4; // subtract header size
            return framesize;
        }