예제 #1
0
        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);
        }
예제 #2
0
        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);
        }