public static bool OpenSource(SpectrumVideoFileConfig cfg, out SpectrumVideoSource source) { //Set default source = null; //Make sure file exists if (!File.Exists(cfg.pathname)) { return(false); } //Open stream FileStream fs = new FileStream(cfg.pathname, FileMode.Open, FileAccess.Read); //Attempt to load as a WAV file ISampleReader reader; try { reader = new WavFileReader(fs); } catch { //Fall back to loading RAW files fs.Position = 0; if (cfg.raw_rate == 0) { return(false); } reader = new StreamSampleReader(fs, cfg.raw_format, cfg.raw_rate, 0, 2, 32768); } //Get source source = new SpectrumVideoSource(fs, reader); return(true); }
public WavFileReader(Stream underlyingStream, int bufferSize = 16384) : base(underlyingStream) { //Read WAV header byte[] header = new byte[WavHeaderUtil.HEADER_LENGTH]; underlyingStream.Read(header, 0, WavHeaderUtil.HEADER_LENGTH); if (!WavHeaderUtil.ParseWavHeader(header, out info)) { throw new Exception("This is not a valid WAV header."); } //Create wrapper reader = new StreamSampleReader(underlyingStream, Format, SampleRate, WavHeaderUtil.HEADER_LENGTH, Channels, bufferSize); }