AIFF格式容器規範

2021-09-24 03:55:34 字數 2408 閱讀 8570

1、    aiff container概念:

2)aiff應用於個人電腦及其它電輔音響裝置以儲存**資料;

3)aiff支援ace2、ace8、mac3和mac6壓縮,支援16位44.1khz立體聲;

2、aiff container規範:

3)local chunk types(本地塊型別):

有兩種型別的塊,一種是必需的,另一種是可選的。公共塊是必需的。如果取樣的聲音長度大於零,則需要聲音資料塊。所有其他塊都是可選的。所有使用表單aiff的應用程式都必須能夠讀取所需的塊,並且可以選擇選擇性地忽略可選塊。複製form aiff的程式應該複製foem aiff中的所有塊。

4)common chunk(公共塊):

公共塊描述取樣聲音的基本引數,定義如下:

#define commonid 'comm' /* ckid for common chunk */

typedef struct commonchunk;

ckid總是「comm」。cksize是塊的資料部分的大小,以位元組為單位。

它不包括ckid和cksize使用的8個位元組。對於普通塊,cksize總是18。 

numchannels包含聲音的音訊通道的數量。值1表示單聲道聲音,值2表示立體聲,值4表示四聲道聲音,等等。可以表示任何數量的音訊通道。

實際的聲音樣本儲存在另乙個塊中,即聲音資料塊。對於多通道聲音,每個通道的單取樣點是交錯的。 一組交錯的樣本點稱為樣本幀。

對於單聲道聲音,乙個取樣幀是乙個單取樣點。 

numsampleframes包含sound data chunk中的樣本幀數。numsampleframes是樣本幀的數量,而不是sound data chunk中的位元組數和取樣點數。檔案中的取樣點總數為numsampleframes的numchannels倍。

samplesize是每個取樣點中的位數。它可以是1到32之間的任何數字。

samplerate是聲音被回放的取樣率,以每秒取樣幀數為單位。

每個form aiff都只需要乙個公共塊。 

5)sound data chunk(聲音資料塊):

聲音資料塊包含實際的樣本幀。

#define sounddataid 'ssnd' /* ckid for sound data chunk */

typedef struct sounddatachunk;

ckid總是'ssnd'。

cksize是塊的資料部分的大小,以位元組為單位。它不包括ckid和cksize使用的8個位元組。

offset確定sounddata中第乙個樣本幀的開始位置。offset以位元組為單位。大多數應用程式不會使用偏移量,應將其設定為零。

blocksize與偏移量一起用於塊對齊聲音資料。它包含聲音資料對齊到的塊的位元組大小。與偏移量一樣,大多數應用程式不會使用塊大小,應該將其設定為零。

sounddata包含組成聲音的示例幀。sounddata中的樣本幀數由common chunk中的numsampleframes引數確定。

6)marker chunk(標記塊)

標記塊包含指向聲音資料中位置的標記。標記可用於應用程式所需的任何目的。

標記具有一下格式:

typedef short markerid;

typedef struct marker;

id是唯一標識form aiff中標記的數字。id可以是任何正的非零整數,只要同一form aiff中的其他標記沒有相同的id。

標記在聲音資料中的位置由position確定。標記在概念上落在兩個樣本幀之間。位置的單位為幀而不是位元組。

/*前面的8是什麼*/markername是乙個帕斯卡風格的文字字串,包含標記的名稱。

標記塊內資料的格式如下所示。

#define markerid 'mark' /* ckid for marker chunk */

typedef struct markerchunk;

ckid總是「mark」。

cksize是塊的資料部分的大小,以位元組為單位。它不包括ckid和cksize使用的8個位元組。

nummarker是標記塊中的標記數量。

7)instrument chunk(儀器塊):

instrument chunk定義了儀器(如取樣器)可用於回放聲音資料的基本引數。

聲音資料可以迴圈,允許重複聲音的一部分以延長聲音。下面的結構描述了乙個迴圈:

typedef struct loop;

playmode指定要執行哪種型別的迴圈。

#define nolooping 0

#define forwardlooping 1

#define forwardbackwardlooping 2

如果指定了nolooping,那麼在回放期間將忽略迴圈點。

beginloop是乙個markerid,用於標記迴圈段的開始位置。 

參考:

格式與規範

格式與規範 用來格式程式 的基本技術是換行,空格符和縮排及利用注釋來解釋 的作用功能等.分行符 換行符 即底線 前加空格,使用它可以使用程式 不會延伸到 程式 視窗右邊緣以外的地方,容易檢視 空行 空格符 它用來區分每個不同的邏輯塊.縮排它用來凸顯程式的結構,至於縮排多少,如何縮排,這個沒有根本性的...

URL格式規範

先記錄下,以便以後使用。一 格式說明 表示隔開的兩部分只能出現其中乙個,方括號括起來的表示可選,文字由雙引號 括起來,以n 開頭表示至少n個或更多的,n的預設值為0。二 總體格式 genericurl scheme schemepart scheme 1 lowalpha digit schemep...

RESTful格式規範

restful是介面開發格式裡面很重要的乙個山頭,基本開發介面都需要遵守這個規範,它共有十條規範格式 1 網域名稱,一般將api放在組網域名稱下 3 路徑,路徑表示api的具體 代表一種資源,中不能使用動詞,只能使用名詞,而其必須是複數 4 使用標準的http方法,由http動詞組成 get sel...