Я знаю структуру Wave-файла. Но я не знаю точной структуры данных PCM.[C++] Я хочу получить данные PCM из wav-файла
#include<iostream>
#include<fstream>
using namespace std;
struct WAVE_HEADER{
char Chunk[4];
int ChunkSize;
char format[4];
char Sub_chunk1ID[4];
int Sub_chunk1Size;
short int AudioFormat;
short int NumChannels;
int SampleRate;
int ByteRate;
short int BlockAlign;
short int BitsPerSample;
char Sub_chunk2ID[4];
int Sub_chunk2Size;
};
struct WAVE_HEADER waveheader;
int main(){
FILE *sound;
sound = fopen("music.wav","rb");
short D;
fread(&waveheader,sizeof(waveheader),1,sound);
cout << "BitsPerSample : " << waveheader.BitsPerSample << endl;
while(!feof(sound)){
fread(&D,sizeof(waveheader.BitsPerSample),1,sound);
cout << int(D) << endl;
}
}
Вышеупомянутый код - это то, что я сделал до сих пор. Кроме того, этот код может точно прочитать заголовок. Но я не знаю, может ли это точно прочитать часть данных PCM. Есть ли какая-либо ссылка на структуру данных PCM? Я не мог найти его.
«music.wav» имеет 16 бит на выборку, 16 байт, стереоканал и два блока. Как следует изменить вышеизложенное?
PCM есть ** no ** структура. Необработанные образцы следуют друг за другом как 8, 16, 24 или 32 бит или без знака целых чисел (или, реже, как 'float' или 'double's.) –