WAVE(編解碼器)

WAV檔案格式是一種由微軟和IBM聯合開發的用於音頻數字存儲的標準,它採用RIFF檔案格式結構,非常接近於AIFF和IFF格式

多媒體套用中使用了多種數據,包括點陣圖、音頻數據、視頻數據以及外圍設備控制信息等。RIFF為存儲這些類型的數據提供了一種方法,RIFF檔案所包含的數據類型由該檔案的擴展名來標識,能以RIFF檔案存儲的數據包括:
# 波形格式數據(.WAV)
# 點陣圖格式數據(.RDI)
# MIDI格式數據(.RMI)
# 調色板格式(.PAL)
# 多媒體電影(.RMN)
# 動畫游標(.ANI)
# 其它RIFF檔案(.BND)
RIFF是一種含有嵌套數據結構的二進制檔案格式,每個數據結構都稱為因一個chunk(塊)。Chunk在RIFF檔案中沒有固定的位置,因而偏移量不能用於定位域值。一個塊中的數據包括數據結構、數據流或其它組塊(稱為子塊)等,每個RIFF塊都具有如下結構:
typedef struct _Chunk
{
DWORD ChunkId; /*塊標誌*/
DWORD ChunkSize; /*塊大小*/
BYTE ChunkData[ChunkSize]; /*塊內容*/
} CHUNK;
ChunkId由4個ASCII字元組成,用以識別塊中所包含的數據。字元RIFF用於標識RIFF數據塊,間隔空格在右面是不超過4個字元的ID。由於這種檔案結構最初是由Microsoft和IBM為PC機所定義,RIFF檔案是按照little-endian位元組順序寫入的,而採用big-endian位元組順序的檔案則用‘RIFX’作為標誌。
ChunkSize(塊大小)是存儲在ChunkData域中數據長度,ChunkId與ChunkSize域的大小則不包括在該值內。
ChunkData(塊內容)中所包含的數據是以字(WORD)為單位排列的,如果數據長度是奇數,則在最後添加一個空(NULL)位元組
子塊(Subchunk)與塊具有相同的結構。一個子塊就是包含在其它塊內部的一個塊,只有RIFF檔案塊‘RIFF’和列表塊‘List’才能含有子塊,所有其它塊僅能含有數據。一個RIFF檔案就是一個RIFF塊,檔案中所有其它塊和子塊均包含在這個塊中。
WAV檔案可以存儲大量格式的數據,通常採用的音頻編碼方式脈衝編碼調製(PCM)。由於WAV格式源自Windows/Intel環境,因而採用Little-Endian位元組順序進行存儲。
脈衝編碼調製
Claude E. Shannon於1948年發表的“通信的數學理論”奠定了現代通信的基礎。同年貝爾實驗室的工程人員開發了PCM技術,雖然在當時是革命性的,但今天脈衝編碼調製被視為是一種非常單純的無損耗編碼格式音頻在固定間隔內進行採集並量化為頻帶值,其它採用這種編碼方法的套用包括電話和CD。PCM主要有三種方式:標準PCM、差分脈衝編碼調製(DPCM)和自適應DPCM。在標準PCM中,頻帶被量化為線性步長的頻帶,用於存儲絕對量值。在DPCM中存儲的是前後電流值之差,因而存儲量減少了約25%。自適應DPCM改變了DPCM的量化步長,在給定的信造比(SNR)下可壓縮更多的信息。
共同的執行過程
在對WAV音頻檔案進行編解碼過程中,最一致的地方包括採樣點和採樣幀的處理和轉換。一個採樣點的值代表了給定時間內的音頻信號,一個採樣幀由適當數量的採樣點組成並能構成音頻信號的多個通道。對於立體聲信號一個採樣幀有兩個採樣點,一個採樣點對應一個聲道。一個採樣幀作為單一的單元傳送到數/模轉換器(DAC),以確保正確的信號能同時傳送到各自的通道中。

相關詞條

熱門詞條

聯絡我們