Bảng 2 .1 Kết quả mã hóa các kí tự bằng mã Huffman
Bảng 3.1 Các loại metadata block
FLAC hỗ trợ 128 loại metadata block, hiện có các loại sau:
STREAMINFO: chứa thông tin về
toàn bộ stream như tần số lấy mẫu, số kênh, tổng số mẫu … Nó là block metadata đầu tiên của stream, bắt buộc phải có trong stream.
BLOCK TYPE Valu e Type 0 STREAMINFO 1 PADDING 2 APPLICATION 3 SEEKTABLE 4 VORBIS_COMMENT 5 CUESHEET 6 PICTURE 7-126 Reserved 127 Invalid
Hình 3.2: Cấu trúc của Streaminfo metadata
APPLICATION: block này được sử dụng bởi bên thứ 3, gồm một trường 32 bit để
định danh.
Application ID Application Data
0 31 32
Hình 3.3: Cấu trúc của Application metadata
PADDING: block này cho phép đệm một số lượng tùy ý.. Nội dung chứa trong
block này không có ý nghĩa, chỉ hữu dụng khi là một metadata được chỉnh sửa sau khi mã hóa. Người dùng có thể chỉ định bộ mã hóa dự trữ một khối đệm có kích thước vừa đủ để khi metadata được thêm vào, nó chỉ đơn giản là ghi đè lên thay vì phải chèn đúng chỗ trong file (thường là phải viết lại toàn bộ file).
SEEKTABLE: Đây là một block tùy chọn để lưu trữ các seek point. Nó có thể tìm
kiếm bất kì mẫu nào mà không cần một seek table, nhưng delay có thể không được đoán trước vì bitrate có thể khác biệt lớn trong stream. Bằng cách thêm vào seek point trong stream, delay có thể giảm đáng kể. Mỗi seek point mất 18 byte, vì vậy 1% giải quyết trong một stream mất ít hơn 2K. Có thể chỉ có một SEEKTABLE trong một stream, nhưng một table có thể có nhiều seek point.
Kích thước block nhỏ nhất(tính bằng mẫu) Kích thước block lớn nhất(tính bằng mẫu)
0 15 16 31
Kích thước frame nhỏ nhất(tính bằng bytes) Kích thước frame nhỏ nhất(tính bằng bytes)
32 55 56 79
Tần số mẫu(Hz) Số kênh Số bit trên mẫu
80 99 100 102 103 107
Tổng số mẫu
108 143
Tổng MD5 của dữ liệu PCM
Hình 3.4: Cấu trúc của Seektable metadata
VORBIS_COMMENT: block này lưu một danh sách tên người được mã hóa bằng
UTF-8. Đây là cơ chế tagging được hỗ trợ trong FLAC. Có lẽ chỉ có một block VORBIS_COMMENT trong stream.
Hình 3.5: Cấu trúc của Vorbis_comment metadata