public void ReadData(byte[] data, FmtBlock fmt) { int id = BitConverter.ToInt32(data, 36); id = Tricks.SwapEndianness(id); if (id != 0x64617461) { Console.WriteLine("Something happened"); } DataSize = BitConverter.ToUInt32(data, 40); NumSamples = (int)(DataSize / 2); }
public void ReadData(FileStream inFS, FmtBlock fmt) { object locker = new object(); byte[] buffer = new byte[inFS.Length]; lock (locker) { inFS.Seek(0, System.IO.SeekOrigin.Begin); inFS.Read(buffer, 0, (int)(inFS.Length - 1)); } ReadData(buffer, fmt); Read(buffer, fmt); }
public void Read(byte[] data, FmtBlock fmt) { _data = new List <Channel>(fmt.NumChannels); for (int c = 1; c <= fmt.NumChannels; c++) { _data.Add(new Channel((byte)c)); } Task[] list = new Task[fmt.NumChannels]; var number = 0; foreach (var item in _data) { var task = new Task(() => { var channelNumber = item.channelNumber - 1; var i = (fmt.BitsPerSample / 8) * (channelNumber) + 44; var skip = fmt.BlockAlign; for (; i < data.Length; i += skip) { byte[] sample = new byte[fmt.BitsPerSample / 8]; try { Array.Copy(data, i, sample, 0, sample.Length); } catch (Exception e) { Console.WriteLine(e); Console.ReadLine(); Environment.Exit(-1); } item.AddSample(Sample.CreateSample(sample)); } Console.WriteLine("Channel " + item.channelNumber + " finished"); }); list[number] = task; number++; task.Start(TaskScheduler.Current); } //Wait until all channels are done getting samples Task.WaitAll(list); }
public DataBlock(FileStream inFS, FmtBlock fmt) { ReadData(inFS, fmt); }
public DataBlock(byte[] data, FmtBlock fmt) { ReadData(data, fmt); }