private void CreateReaderStream(Stream sourceStream, WaveStreamType waveStreamType) { switch (waveStreamType) { case WaveStreamType.Wav: { _readerStream = new WaveFileReader(sourceStream); if (_readerStream.WaveFormat.Encoding == WaveFormatEncoding.Pcm || _readerStream.WaveFormat.Encoding == WaveFormatEncoding.IeeeFloat) { return; } _readerStream = WaveFormatConversionStream.CreatePcmStream(_readerStream); _readerStream = new BlockAlignReductionStream(_readerStream); break; } case WaveStreamType.Mp3: _readerStream = new Mp3FileReader(sourceStream); break; case WaveStreamType.Ogg: _readerStream = new VorbisWaveReader(sourceStream); break; case WaveStreamType.Aiff: _readerStream = new AiffFileReader(sourceStream); break; default: throw new NotSupportedException("Not support the specific stream type"); } }
public MyAudioFileReader(Stream stream, WaveStreamType waveStreamType) { _lockObject = new object(); CreateReaderStream(stream, waveStreamType); _sourceBytesPerSample = _readerStream.WaveFormat.BitsPerSample / 8 * _readerStream.WaveFormat.Channels; _sampleChannel = new NAudio.Wave.SampleProviders.SampleChannel(_readerStream, false); _destBytesPerSample = 4 * _sampleChannel.WaveFormat.Channels; _length = SourceToDest(_readerStream.Length); }
/// <summary> /// 构造一个波形图绘制类的实例 /// </summary> public WavePainter() { mPngWidth = Defines.PNG_WIDTH; mPngHeight = Defines.PNG_HEIGHT; mSrcPath = string.Empty; mBitmapPath = string.Empty; mBitmapPath1 = string.Empty; mVolumnNum = 1; mDrawBrush = Brushes.Green; mSourceType = WaveStreamType.LocalFile; mIsSaveFile = true; }
/// <summary> /// Initializes a new instance of AudioFileReader /// </summary> /// <param name="buffer">The stream to open</param> /// <param name="waveStreamType">The type of source stream</param> public MyAudioFileReader(byte[] buffer, WaveStreamType waveStreamType) : this(new MemoryStream(buffer), waveStreamType) { }