AIFF 小檔案

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

 
 

TIFF 小檔案

TIFF 全名 Tagged Image File Format, 有時候檔名是 TIF 結尾.早期的 TIFF 只能用在二值化的影像 (binary image), 作為掃瞄器的儲存格式之用. 隨著掃瞄器的進步, TIFF 也可以儲存灰階影像 ( gray level image), 和彩色影像.

TIFF 並不是一種單純的影像格式, 它就像 audio 的 AIFF 一樣, 可以當做 container 來用. 包括把 JPEG 或是 Packbits (一種 lossless run-length 壓縮)當做 TIFF 的內容. TIFF 也可以封裝一個 LZW 壓縮的檔案, 當然它也是 lossless.

簡化的 TIFF 稱為 baseline TIFF, 沒有 layer 的觀念, 沒有 JPEG, 也沒有 LZW, 但是仍然有 Packbits.

TIFF 可以是 little endian 或是 big endian, 最前面的 2 bytes 是 'll' 表示前者, 如果是 'MM' 表示後者.

正常的 TIFF 只能支援 4GB 大小, 因為裡面的 offset 是 32 bits. BigTIFF 是 TIFF 的特大號版, 因為 offset 擴充到 64 bits, 所以可以支援到 2^64 bytes 這麼大.