AIFF 全名 audio interchange file format, 我們沒說要支援, 結果播起來有聲音, 被客戶發 bug, 成了傷腦筋的問題.
為什麼沒有支援也可以播呢?因為它有時並沒有壓縮, 和純 PCM 的 wave 檔差不多.
如果名稱是 *.AIFF 或 *.AIF, 檔案是 little endian. 如果名稱是 *.AIFC, 則為 big endian.
不過 iTune 的 AIFF 內容其實是 AIFC. 這就是為何我們改口說 "乾脆支援 AIFF 算了!" 結果反而又被發 3 個 bug 的原因.
AIFF 和 WAV (RIFF) 檔簡單比較一下:
| RIFF |
Note |
AIFF |
Note |
| Chunk ID |
RIFF |
Chunk ID |
FORM |
| Chunk Size |
4 Bytes |
Chunk Size |
4 Bytes |
| RIFF DATA |
WAVE |
form data |
AIFF |
| 一到多個 chunk |
|
各種 chunk |
1 |
| Offset |
Size |
Description |
Value |
| 0x00 |
4 |
Chunk ID |
"fmt " (0x666D7420) |
| 0x04 |
4 |
Chunk Data Size |
16 + extra format bytes |
| 0x08 |
2 |
Compression code |
1 – 65,535 |
| 0x0a |
2 |
Number of channels |
1 – 65,535 |
| 0x0c |
4 |
Sample rate |
1 – 0xFFFFFFFF |
| 0x10 |
4 |
Average bytes per second |
1 – 0xFFFFFFFF |
| 0x14 |
2 |
Block align |
1 – 65,535 |
| 0x16 |
2 |
Significant bits per sample |
2 – 65,535 |
| 0x18 |
2 |
Extra format bytes |
0 – 65,535 |
| 0x1a |
Extra format bytes *
|
|
Common Chunk
Sound Data Chunk
Name Chunk
Author Chunk
Copyright Chunk
Annotation Chunk
Audio Recording Chunk
Application Chunk
ID3 Chunk
MIDI Data Chunk |
未壓縮 |
| Code |
Description |
| 0 (0x0000) |
Unknown |
| 1 (0x0001) |
PCM/uncompressed |
| 2 (0x0002) |
Microsoft ADPCM |
| 6 (0x0006) |
ITU G.711 a-law |
| 7 (0x0007) |
ITU G.711 µ-law |
| 17 (0x0011) |
IMA ADPCM |
| 19 (0x0013) |
ADPCM (Sierra) |
| 20 (0x0016) |
ITU G.723 ADPCM (Yamaha) |
| 49 (0x0031) |
GSM 6.10 |
| 64 (0x0040) |
ITU G.721 ADPCM |
| 80 (0x0050) |
MPEG |
| 257 (0x0101) |
IBM µ-law |
| 258 (0x0102) |
IBM a-law |
| 259 (0x0103) |
IBM AVC Adaptive Differential PCM |
| 65,536 (0xFFFF) |
Experimental |
|
NONE (未壓縮)
fl32 (32 bits floating)
fl64 (64 bits floating)
a-law
u-law
FL32 (32 bits floating)
ADP4 (4:1 Intel/DVI ADPCM)
ima4 (IMA 4:1)
ACE2 (ACE 2-to-1)
ACE8 (ACE 8-to-3)
DWVW(Delta With Variable Word Width)
MAC3 (MACE 3-to-1)
MAC6 (MACE 6-to-1)
Qclp (Qualcomm PureVoice)
QDMC (QDesign Music)
rt24 (RT24 50:1)
rt29 (RT29 50:1)
|
壓縮格式, 寫在 Common chunk |