不知道有何原因,無聊就想知道wav格式到底是長怎樣,一時興起就用C++寫了以下代碼來解析它,
先來看一下它的Header長什麼樣子,圖片來自維基百科。
經過整理之後,我們可以用C++定義出如下的structure。
//Wav.h
#ifndef _WAVHPP
#define _WAVHPP
#include "StdInclude.h"
typedef struct _sWavFormat //begin offset
{
uint32_t dwSectionLabel; //0
uint32_t dwSize; //4
uint32_t dwFormat; //8
uint32_t dwSubSectionOneLable; //12
uint32_t dwSubSectionOneSize; //16
uint16_t wAudioFormat; //20
uint16_t wNumOfChannels; //22
uint32_t dwSamplingFrequency; //24
uint16_t wBytesFrequency; //28
uint16_t wAlign; //32
uint16_t wBytesDepth; //34
uint32_t dwSubSectionTwoLable; //36
uint32_t dwSubSectionTwoSize; //40
//remain data begin on 4