public static WaveData Read(WavFile file) { var stream = new FileStream(file.FileName, FileMode.Open); var result = Read(file, stream); stream.Close(); return result; }
public static Task<WaveData> ReadAsync(WavFile file, Stream stream, int samplesPerPixel) { return Task.Factory.StartNew<WaveData>(() => { return Read(file,stream); }); }
/// <summary> /// Read wavfile infomation. /// </summary> /// <param name="stream">The stream of the file</param> /// <returns></returns> public static WavFile Read(Stream stream, int pixelPerSecond = 200, string cacheFile = "") { var file = new WavFile(); using (var reader = new BinaryReader(stream)) { stream.Position = 0; file.FileTag = string.Concat(reader.ReadChars(4)); if (file.FileTag != "RIFF") { throw new Exception("not RIFF file!"); } file.FileLength = reader.ReadInt32(); stream.Position += 12; file.WaveFormat = reader.ReadInt16(); if (file.WaveFormat != 1) { throw new Exception("not PCM format!"); } file.Channels = reader.ReadInt16(); file.SampleRate = reader.ReadInt32(); file.BytesPerSecond = reader.ReadInt32(); stream.Position += 2; file.SampleBit = reader.ReadInt16(); stream.Position = 36; var data = string.Concat(reader.ReadChars(4)); while (data != "data") //find the start of data chunk { stream.Position -= 3; data = string.Concat(reader.ReadChars(4)); } file.DataSize = reader.ReadInt32(); file.DataOffset = stream.Position; file.PixelPerSecond = pixelPerSecond; file.ComputeFileInfo(); file.ReadCacheData(stream); } return(file); }
public static WaveData Read(WavFile file, Stream stream) { stream.Position = file.DataOffset; if(file.Channels == 1) { switch (file.SampleBit) { case 8:return Read1Channel(stream, file.SampleNumber, file.MaxWidth,Read8Bit); case 16:return Read1Channel(stream, file.SampleNumber, file.MaxWidth,Read16Bit); default: return null; } } else { switch(file.SampleBit) { case 8: return Read2Channels(stream, file.SampleNumber/2, file.MaxWidth,Read8Bit); case 16: return Read2Channels(stream, file.SampleNumber/2, file.MaxWidth,Read16Bit); default: return null; } } }
public static WaveData FromCacheFile(WavFile file, string filename) { return null; }
/// <summary> /// Read wavfile infomation. /// </summary> /// <param name="stream">The stream of the file</param> /// <returns></returns> public static WavFile Read(Stream stream, int pixelPerSecond = 200,string cacheFile = "") { var file = new WavFile(); using (var reader = new BinaryReader(stream)) { stream.Position = 0; file.FileTag = string.Concat(reader.ReadChars(4)); if (file.FileTag != "RIFF") throw new Exception("not RIFF file!"); file.FileLength = reader.ReadInt32(); stream.Position += 12; file.WaveFormat = reader.ReadInt16(); if (file.WaveFormat != 1) throw new Exception("not PCM format!"); file.Channels = reader.ReadInt16(); file.SampleRate = reader.ReadInt32(); file.BytesPerSecond = reader.ReadInt32(); stream.Position += 2; file.SampleBit = reader.ReadInt16(); stream.Position = 36; var data = string.Concat(reader.ReadChars(4)); while(data != "data") //find the start of data chunk { stream.Position -= 3; data = string.Concat(reader.ReadChars(4)); } file.DataSize = reader.ReadInt32(); file.DataOffset = stream.Position; file.PixelPerSecond = pixelPerSecond; file.ComputeFileInfo(); file.ReadCacheData(stream); } return file; }
public static ImageSource Draw1Channel(WavFile wavFile, WaveStyle style, double startPer,double scale, double width, double height) { using (var stream = File.Open(wavFile.FileName, FileMode.Open)) { using (var reader = new BinaryReader(stream)) { } } return null; }