コード例 #1
0
ファイル: SubbandLayer1.cs プロジェクト: samuliy/MP3Sharp
 /// <summary>
 /// *
 /// </summary>
 internal override bool PutNextSample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
 {
     if (Allocation != 0 && channels != OutputChannels.RIGHT_CHANNEL)
     {
         float scaledSample = (Sample * Factor + Offset) * Scalefactor;
         filter1.AddSample(scaledSample, Subbandnumber);
     }
     return(true);
 }
コード例 #2
0
 /// <summary>
 /// *
 /// </summary>
 internal override bool PutNextSample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
 {
     if (Allocation != 0)
     {
         Sample = Sample * Factor + Offset; // requantization
         if (channels == OutputChannels.BOTH_CHANNELS)
         {
             float sample1 = Sample * Scalefactor, sample2 = Sample * Channel2Scalefactor;
             filter1.AddSample(sample1, Subbandnumber);
             filter2.AddSample(sample2, Subbandnumber);
         }
         else if (channels == OutputChannels.LEFT_CHANNEL)
         {
             float sample1 = Sample * Scalefactor;
             filter1.AddSample(sample1, Subbandnumber);
         }
         else
         {
             float sample2 = Sample * Channel2Scalefactor;
             filter1.AddSample(sample2, Subbandnumber);
         }
     }
     return(true);
 }
コード例 #3
0
 /// <summary>
 /// *
 /// </summary>
 internal override bool PutNextSample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
 {
     base.PutNextSample(channels, filter1, filter2);
     if (Channel2Allocation != 0 && channels != OutputChannels.LEFT_CHANNEL)
     {
         float sample2 = (Channel2Sample * Channel2Factor + Channel2Offset) * Channel2Scalefactor;
         if (channels == OutputChannels.BOTH_CHANNELS)
         {
             filter2.AddSample(sample2, Subbandnumber);
         }
         else
         {
             filter1.AddSample(sample2, Subbandnumber);
         }
     }
     return(true);
 }
コード例 #4
0
        /// <summary>
        /// *
        /// </summary>
        internal override bool PutNextSample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
        {
            bool returnvalue = base.PutNextSample(channels, filter1, filter2);

            if (Channel2Allocation != 0 && channels != OutputChannels.LEFT_CHANNEL)
            {
                float sample = Channel2Samples[Samplenumber - 1];

                if (Groupingtable[1] == null)
                {
                    sample = (sample + Channel2D[0]) * Channel2C[0];
                }

                if (Groupnumber <= 4)
                {
                    sample *= Channel2Scalefactor1;
                }
                else if (Groupnumber <= 8)
                {
                    sample *= Channel2Scalefactor2;
                }
                else
                {
                    sample *= Channel2Scalefactor3;
                }
                if (channels == OutputChannels.BOTH_CHANNELS)
                {
                    filter2.AddSample(sample, Subbandnumber);
                }
                else
                {
                    filter1.AddSample(sample, Subbandnumber);
                }
            }
            return(returnvalue);
        }
コード例 #5
0
        /// <summary>
        /// *
        /// </summary>
        internal override bool PutNextSample(int channels, SynthesisFilter filter1, SynthesisFilter filter2)
        {
            if (Allocation != 0)
            {
                float sample = Samples[Samplenumber];

                if (Groupingtable[0] == null)
                {
                    sample = (sample + D[0]) * CFactor[0];
                }
                if (channels == OutputChannels.BOTH_CHANNELS)
                {
                    float sample2 = sample;
                    if (Groupnumber <= 4)
                    {
                        sample  *= Scalefactor1;
                        sample2 *= Channel2Scalefactor1;
                    }
                    else if (Groupnumber <= 8)
                    {
                        sample  *= Scalefactor2;
                        sample2 *= Channel2Scalefactor2;
                    }
                    else
                    {
                        sample  *= Scalefactor3;
                        sample2 *= Channel2Scalefactor3;
                    }
                    filter1.AddSample(sample, Subbandnumber);
                    filter2.AddSample(sample2, Subbandnumber);
                }
                else if (channels == OutputChannels.LEFT_CHANNEL)
                {
                    if (Groupnumber <= 4)
                    {
                        sample *= Scalefactor1;
                    }
                    else if (Groupnumber <= 8)
                    {
                        sample *= Scalefactor2;
                    }
                    else
                    {
                        sample *= Scalefactor3;
                    }
                    filter1.AddSample(sample, Subbandnumber);
                }
                else
                {
                    if (Groupnumber <= 4)
                    {
                        sample *= Channel2Scalefactor1;
                    }
                    else if (Groupnumber <= 8)
                    {
                        sample *= Channel2Scalefactor2;
                    }
                    else
                    {
                        sample *= Channel2Scalefactor3;
                    }
                    filter1.AddSample(sample, Subbandnumber);
                }
            }

            if (++Samplenumber == 3)
            {
                return(true);
            }
            return(false);
        }