public override bool put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
{
if (allocation != 0)
{
float sample = samples[samplenumber];
if (groupingtable[0] == null)
sample = (sample + d[0]) * c[0];
if (channels == OutputChannels.BOTH_CHANNELS)
{
float sample2 = sample;
if (groupnumber <= 4)
{
sample *= scalefactor1;
sample2 *= channel2_scalefactor1;
}
else if (groupnumber <= 8)
{
sample *= scalefactor2;
sample2 *= channel2_scalefactor2;
}
else
{
sample *= scalefactor3;
sample2 *= channel2_scalefactor3;
}
filter1.input_sample(sample, subbandnumber);
filter2.input_sample(sample2, subbandnumber);
}
else if (channels == OutputChannels.LEFT_CHANNEL)
{
if (groupnumber <= 4)
sample *= scalefactor1;
else if (groupnumber <= 8)
sample *= scalefactor2;
else
sample *= scalefactor3;
filter1.input_sample(sample, subbandnumber);
}
else
{
if (groupnumber <= 4)
sample *= channel2_scalefactor1;
else if (groupnumber <= 8)
sample *= channel2_scalefactor2;
else
sample *= channel2_scalefactor3;
filter1.input_sample(sample, subbandnumber);
}
}
if (++samplenumber == 3)
return true;
else
return false;
}