/// <summary> /// This provides an NAudio WaveProvider that can be used to play this file /// </summary> /// <returns>null on error, otherwise a wave provider</returns> /// <example> /// <code> /// var waveOut = new WaveOut(); /// var waveProvider = WEM.WaveProvider(); /// waveOut.Init(waveProvider); /// waveOut.Play(); /// Thread.Sleep(30000); /// waveOut.Stop(); /// waveProvider.Dispose(); /// waveOut.Dispose(); /// </code> /// </example> public IWaveProvider WaveProvider() { if (Data_start < 0) { return(null); } // Sanity check that the file header was scanned. // The caller should do this, but may not have. if (0 == AudioFormat) { Open(); } binaryReader.BaseStream.Position = Data_start; // Get the WaveProvider that matches the format if (2 == AudioFormat) { return(new IMAWaveProvider(binaryReader, (int)Data_size, (int)SampleRate, (int)NumChannels)); } var st = binaryReader.BaseStream; st.Position = Data_start; var vorbisPackets = transcoder.Transcode(binaryReader, setup_ofs, audio_ofs); return(new SampleToWaveProvider(new VorbisSampleProvider(vorbisPackets))); }
/// <summary> /// This provides an NAudio WaveProvider that can be used to play this file /// </summary> /// <returns>null on error, otherwise a wave provider</returns> /// <example> /// <code> /// var waveOut = new WaveOut(); /// var waveProvider = WEM.WaveProvider(); /// waveOut.Init(waveProvider); /// waveOut.Play(); /// Thread.Sleep(30000); /// waveOut.Stop(); /// waveProvider.Dispose(); /// waveOut.Dispose(); /// </code> /// </example> public IWaveProvider WaveProvider() { binaryReader.BaseStream.Position = Data_start; // Get the WaveProvider that matches the format if (2 == AudioFormat) { return(new IMAWaveProvider(binaryReader, (int)Data_size, (int)SampleRate, (int)NumChannels)); } var st = binaryReader.BaseStream; st.Position = Data_start; var vorbisPackets = transcoder.Transcode(binaryReader, setup_ofs, audio_ofs); return(new SampleToWaveProvider(new VorbisSampleProvider(vorbisPackets))); }