Ejemplo n.º 1
0
 /// <summary>
 /// Creates a new WaveChannel32
 /// </summary>
 /// <param name="sourceStream">the source stream</param>
 /// <param name="volume">stream volume (1 is 0dB)</param>
 /// <param name="pan">pan control (-1 to 1)</param>
 // Token: 0x06000B7B RID: 2939 RVA: 0x000223D4 File Offset: 0x000205D4
 public WaveChannel32(WaveStream sourceStream, float volume, float pan)
 {
     this.PadWithZeroes = true;
     ISampleChunkConverter[] array = new ISampleChunkConverter[]
     {
         new Mono8SampleChunkConverter(),
         new Stereo8SampleChunkConverter(),
         new Mono16SampleChunkConverter(),
         new Stereo16SampleChunkConverter(),
         new Mono24SampleChunkConverter(),
         new Stereo24SampleChunkConverter(),
         new MonoFloatSampleChunkConverter(),
         new StereoFloatSampleChunkConverter()
     };
     foreach (ISampleChunkConverter sampleChunkConverter in array)
     {
         if (sampleChunkConverter.Supports(sourceStream.WaveFormat))
         {
             this.sampleProvider = sampleChunkConverter;
             break;
         }
     }
     if (this.sampleProvider == null)
     {
         throw new ArgumentException("Unsupported sourceStream format");
     }
     this.waveFormat         = WaveFormat.CreateIeeeFloatWaveFormat(sourceStream.WaveFormat.SampleRate, 2);
     this.destBytesPerSample = 8;
     this.sourceStream       = sourceStream;
     this.volume             = volume;
     this.pan = pan;
     this.sourceBytesPerSample = sourceStream.WaveFormat.Channels * sourceStream.WaveFormat.BitsPerSample / 8;
     this.length   = this.SourceToDest(sourceStream.Length);
     this.position = 0L;
 }
        /// <summary>
        /// Creates a new WaveChannel32
        /// </summary>
        /// <param name="sourceStream">the source stream</param>
        /// <param name="volume">stream volume (1 is 0dB)</param>
        /// <param name="pan">pan control (-1 to 1)</param>
        public WaveChannel32(WaveStream sourceStream, float volume, float pan)
        {
            PadWithZeroes = true;

            var providers = new ISampleChunkConverter[]
            {
                new Mono8SampleChunkConverter(),
                new Stereo8SampleChunkConverter(),
                new Mono16SampleChunkConverter(),
                new Stereo16SampleChunkConverter(),
                new Mono24SampleChunkConverter(),
                new Stereo24SampleChunkConverter(),
                new MonoFloatSampleChunkConverter(),
                new StereoFloatSampleChunkConverter(),
                new FourChannel8SampleChunkConverter(),
            };

            foreach (var provider in providers)
            {
                if (provider.Supports(sourceStream.WaveFormat))
                {
                    this.sampleProvider = provider;
                    break;
                }
            }

            if (this.sampleProvider == null)
            {
                throw new ArgumentException("Unsupported sourceStream format");
            }

            // always outputs stereo 32 bit
            waveFormat         = WaveFormat.CreateIeeeFloatWaveFormat(sourceStream.WaveFormat.SampleRate, 2);
            destBytesPerSample = 8; // includes stereo factoring

            this.sourceStream    = sourceStream;
            this.volume          = volume;
            this.pan             = pan;
            sourceBytesPerSample = sourceStream.WaveFormat.Channels * sourceStream.WaveFormat.BitsPerSample / 8;

            length   = SourceToDest(sourceStream.Length);
            position = 0;
        }
        /// <summary>
        /// Creates a new WaveChannel32
        /// </summary>
        /// <param name="sourceStream">the source stream</param>
        /// <param name="volume">stream volume (1 is 0dB)</param>
        /// <param name="pan">pan control (-1 to 1)</param>
        public WaveChannel32(WaveStream sourceStream, float volume, float pan)
        {
            PadWithZeroes = true;

            var providers = new ISampleChunkConverter[]
            {
                new Mono8SampleChunkConverter(),
                new Stereo8SampleChunkConverter(),
                new Mono16SampleChunkConverter(),
                new Stereo16SampleChunkConverter(),
                new Mono24SampleChunkConverter(),
                new Stereo24SampleChunkConverter(),
                new MonoFloatSampleChunkConverter(),
                new StereoFloatSampleChunkConverter(),
                new FourChannel8SampleChunkConverter(),
            };
            foreach (var provider in providers)
            {
                if (provider.Supports(sourceStream.WaveFormat))
                {
                    this.sampleProvider = provider;
                    break;
                }
            }

            if (this.sampleProvider == null)
            {
                throw new ArgumentException("Unsupported sourceStream format");
            }

            // always outputs stereo 32 bit
            waveFormat = WaveFormat.CreateIeeeFloatWaveFormat(sourceStream.WaveFormat.SampleRate, 2);
            destBytesPerSample = 8; // includes stereo factoring

            this.sourceStream = sourceStream;
            this.volume = volume;
            this.pan = pan;
            sourceBytesPerSample = sourceStream.WaveFormat.Channels * sourceStream.WaveFormat.BitsPerSample / 8;

            length = SourceToDest(sourceStream.Length);
            position = 0;
        }