/// <summary>*
/// </summary>
protected internal virtual void prepare_sample_reading(Header header, int allocation, int channel, float[] factor, int[] codelength, float[] c, float[] d)
{
int channel_bitrate = header.bitrate_index();
// calculate bitrate per channel:
if (header.mode() != Header.SINGLE_CHANNEL)
if (channel_bitrate == 4)
channel_bitrate = 1;
else
channel_bitrate -= 4;
if (channel_bitrate == 1 || channel_bitrate == 2)
{
// table 3-B.2c or 3-B.2d
groupingtable[channel] = table_cd_groupingtables[allocation];
factor[0] = table_cd_factor[allocation];
codelength[0] = table_cd_codelength[allocation];
c[0] = table_cd_c[allocation];
d[0] = table_cd_d[allocation];
}
else
{
// tables 3-B.2a or 3-B.2b
if (subbandnumber <= 2)
{
groupingtable[channel] = table_ab1_groupingtables[allocation];
factor[0] = table_ab1_factor[allocation];
codelength[0] = table_ab1_codelength[allocation];
c[0] = table_ab1_c[allocation];
d[0] = table_ab1_d[allocation];
}
else
{
groupingtable[channel] = table_ab234_groupingtables[allocation];
if (subbandnumber <= 10)
{
factor[0] = table_ab2_factor[allocation];
codelength[0] = table_ab2_codelength[allocation];
c[0] = table_ab2_c[allocation];
d[0] = table_ab2_d[allocation];
}
else if (subbandnumber <= 22)
{
factor[0] = table_ab3_factor[allocation];
codelength[0] = table_ab3_codelength[allocation];
c[0] = table_ab3_c[allocation];
d[0] = table_ab3_d[allocation];
}
else
{
factor[0] = table_ab4_factor[allocation];
codelength[0] = table_ab4_codelength[allocation];
c[0] = table_ab4_c[allocation];
d[0] = table_ab4_d[allocation];
}
}
}
}