Я понял, что для меня это плохо, потому что я ничего не читал о number of channels
и bits per sample
на этом свете. Моя причина в том, что я не уверен, как будут выглядеть образцы 2-канальных 8-битных PCM-файлов.Может 8 бит (бит на выборку) Файлы PCM WAV содержат более одного канала?
Это 1 sample = 1 channel
? или 1 sample = 4 bits (left) + 4 bits (right)
Контекст: Я пишу программу, которая читает WAV файлы, и мне пришло в голову, что если я приду через 8-битных файлов WAV PCM, и мой код читает этот путь (см ниже), то моя программа не может правильно прочитать многоканальные 8-битные файлы WMA с PCM.
// 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);
}
}
Ваша программа также не сможет правильно прочитать одноканальные файлы WAV, потому что вы читаете данные с 1 октетом в 'uint32_t' и сохраняете некоторые неинициализированные биты. Используйте 'uint8_t' для чтения данных с типом' uint8_t'. – MikeCAT
2-канальный 8-битный WAV содержит 16-битные блоки, потому что он 8-битный * 2-канальный. – MikeCAT
@MikeCAT Просто подтверждая это означает, что 1-канальный 8-битный WAV содержит 8-битные блоки? – Nogurenn