private static WaveStream CreateInputStream(string fileName) { WaveChannel32 inputStream; WaveStream readerStream = null; if (fileName.EndsWith(".wav")) { readerStream = new WaveFileReader(fileName); } else if (fileName.EndsWith(".wma")) { // readerStream = new WMAFileReader2(fileName); MemoryStream memoryStream = new MemoryStream(); using (FileStream infile = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { while (infile.Position < infile.Length) { byte data = (byte)infile.ReadByte(); memoryStream.WriteByte(data); } } memoryStream.Position = 0; readerStream = new WMAFileReader2(memoryStream); } else { throw new InvalidOperationException("Unsupported extension"); } // Provide PCM conversion if needed if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm) { readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream); readerStream = new BlockAlignReductionStream(readerStream); } // Provide conversion to 16 bits if needed if (readerStream.WaveFormat.BitsPerSample != 16) { var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels); readerStream = new WaveFormatConversionStream(format, readerStream); } inputStream = new WaveChannel32(readerStream); return(inputStream); }
private static WaveStream CreateInputStream(string fileName) { WaveChannel32 inputStream; WaveStream readerStream = null; if (fileName.EndsWith(".wav")) { readerStream = new WaveFileReader(fileName); } else if (fileName.EndsWith(".wma")) { // readerStream = new WMAFileReader2(fileName); MemoryStream memoryStream = new MemoryStream(); using ( FileStream infile = new FileStream(fileName, FileMode.Open, FileAccess.Read) ) { while (infile.Position < infile.Length) { byte data = (byte) infile.ReadByte(); memoryStream.WriteByte( data ); } } memoryStream.Position = 0; readerStream = new WMAFileReader2(memoryStream); } else { throw new InvalidOperationException("Unsupported extension"); } // Provide PCM conversion if needed if (readerStream.WaveFormat.Encoding != WaveFormatEncoding.Pcm) { readerStream = WaveFormatConversionStream.CreatePcmStream(readerStream); readerStream = new BlockAlignReductionStream(readerStream); } // Provide conversion to 16 bits if needed if (readerStream.WaveFormat.BitsPerSample != 16) { var format = new WaveFormat(readerStream.WaveFormat.SampleRate, 16, readerStream.WaveFormat.Channels); readerStream = new WaveFormatConversionStream(format, readerStream); } inputStream = new WaveChannel32(readerStream); return inputStream; }