//fmtChunk ReadFormatHeader() - 2004 July 28 //Again, not much to say. public fmtChunk ReadFormatHeader() { format = new fmtChunk(); format.sChunkID = "fmt "; format.dwChunkSize = reader.ReadUInt32(); format.wFormatTag = reader.ReadUInt16(); format.wChannels = reader.ReadUInt16(); format.dwSamplesPerSec = reader.ReadUInt32(); format.dwAvgBytesPerSec = reader.ReadUInt32(); format.wBlockAlign = reader.ReadUInt16(); format.dwBitsPerSample = reader.ReadUInt32(); return(format); }
//fmtChunk ReadFormatHeader() - 2004 July 28 //Again, not much to say. public fmtChunk ReadFormatHeader() { format = new fmtChunk(); format.sChunkID = "fmt "; int pos = 0; format.dwChunkSize = reader.ReadUInt32(); format.wFormatTag = reader.ReadUInt16(); pos += 2; format.wChannels = reader.ReadUInt16(); pos += 2; format.dwSamplesPerSec = reader.ReadUInt32(); pos += 4; format.dwAvgBytesPerSec = reader.ReadUInt32(); pos += 4; format.wBlockAlign = reader.ReadUInt16(); pos += 2; if (pos + 4 <= format.dwChunkSize) { format.dwBitsPerSample = reader.ReadUInt32(); pos += 4; } else { format.dwBitsPerSample = 8 * format.dwAvgBytesPerSec / format.dwSamplesPerSec; } while (pos < format.dwChunkSize) { reader.ReadByte(); pos++; } return(format); }
public WaveFile(string filename) { reader = new WaveFileReader(filename); maindata = reader.ReadMainFileHeader(); maindata.FileName = filename; long chunkSize = 0; string chunkName = null; while (chunkName != "data" && reader.GetPosition() < (long)maindata.dwFileLength && reader.GetPosition() + chunkSize < maindata.dwFileLength) { chunkName = reader.GetChunkName(); switch (chunkName) { case "fmt ": format = reader.ReadFormatHeader(); chunkSize = format.dwChunkSize; break; case "fact": fact = reader.ReadFactHeader(); chunkSize = fact.dwChunkSize; break; case "data": data = reader.ReadDataHeader(); chunkSize = data.dwChunkSize; break; default: //This provides the required skipping of unsupported chunks. // reader.AdvanceToNext(); chunkSize = 0; break; } } }