Reputation: 878
I realized it is bad for me to neglect this thought, because I haven't read anything about number of channels
and bits per sample
in this light. My reason is that I'm not sure how the samples of 2-channel 8-bit PCM files will look like.
Is it 1 sample = 1 channel
? or 1 sample = 4 bits (left) + 4 bits (right)
Context: I am writing a program that reads WAV files, and it occurred to me that if I come across 8-bit PCM WAV files, and my code reads this way (see below), then my program is unable to properly read multi-channel 8-bit PCM WAV files.
// read actual audio data after obtaining
// the headers
// audioData is a vector of vectors (1 vector per channel)
uint32_t temp;
while( !feof(wavFile) ) {
for(uint16_t i = 0; i < numChannels; i++) {
temp = 0;
fread(&temp,sizeof(uint8_t),1,wavFile);
audioData.at(i).push_back(temp);
}
}
Upvotes: 0
Views: 1093
Reputation: 69706
The structure, which typically describes format of WAV audio data, is described in MSDN here: WAVEFORMATEX structure:
nBlockAlign
value is size, in bytes, of such block corresponding to samplenSamplesPerSec
valuenChannels
values, each one of wBitsPerSample
That is, two channel file with 8 bits per sample has nSamplesPerSec
pairs for each second of audio data, each pair includes two 8-bit values for every channel of the two.
(here is an example of where this structure exists in the WAV file - though this is a more complicated case with 24-bits/sample, but you should get the idea).
Upvotes: 1