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 void SetNewSource(SpectrumVideoFileConfig sourceCfg) { if (!SpectrumVideoSource.OpenSource(sourceCfg, out source)) { throw new Exception("Source file is incorrectly configured."); } }
protected override SpectrumVideoCanvasConfig CreateNewItem() { //Show file dialog OpenFileDialog fd = new OpenFileDialog(); fd.Title = "Open IQ Files"; fd.Filter = "IQ Files (*.wav, *.*)|*.wav;*.*"; if (fd.ShowDialog() != DialogResult.OK) { return(null); } //Get the file config SpectrumVideoFileConfig file; if (WavFileReader.IdentifyWavFile(fd.FileName, out WavFileInfo info)) { file = new SpectrumVideoFileConfig { pathname = fd.FileName }; } else { SampleFormatPromptForm prompt = new SampleFormatPromptForm(); if (prompt.ShowDialog() != DialogResult.OK) { return(null); } file = new SpectrumVideoFileConfig { pathname = fd.FileName, raw_format = prompt.SampleFormat, raw_rate = prompt.SampleRate }; } //Create new return(new SpectrumVideoCanvasConfig { source = file }); }