Chương 4: NÉN ÂM THANH SỐ DÙNG MÃ HOÁ BĂNG CON
4. CHUẨN MPEG-1 LAYER III
4.3. Mô hình giải mã hoá layer III
Quá trình giải mã hoá để tạo các mẫu tín hiệu PCM ra từ dòng bit MP3. MP3 dựa trên các gói nhỏ hoặc khung. Một khung bao gồm cách giải mã hoá đúng cách và các dữ liệu âm thanh được nén.
Sơđồ giải mã hoá layer III như trên hình 4.4.21
Hình 4.4.21: Sơđồ khối của bộ giải mã hoá âm thanh Layer III (hai kênh) 4.3.1. Đồng bộ khung
Trước khi thực hiện giải mã, từ đồng bộ khung phải được tìm thấy. Một từ đồng bộ bao gồm mẫu 12 bit ‘1111 1111 1111’ được đặt ở vị trí bắt đầu của phần mào đầu. Có khả năng là một mẫu bít khác giống như từ đồng bộ tồn tại ở một vị trí khác trong khung, khi đó bộ giải mã sẽ không thể phân biệt nếu nó tìm được một từ đồng bộ hoặc dữ liệu ngẫu nhiên. Nếu một CRC được dùng thì nó có thể khẳng định tính đúng đắn của một phần mào đầu mới được tìm thấy. Nếu CRC không được dùng, bộ giải mã có thể vẫn tạo một mẫu để khẳng định tính hợp lý của từ đồng bộ bằng cách tìm kiếm các trường kết hợp lỗi trong phần mào đầu.
Demultiplexing and Error check Decoding of Side Infomation
Huffman Decoding
Inverse filterbank
32 Subbands
Encoded Audio Bitstream 2*32 Kb/s
…..
2*192Kb/s
Stereophonic Audio Signal
2*768Kb/s 48Hz Descaling Inverse
MDCT
Phần mào đầu bao gồm đầy đủ thông tin để tính toán kích thước khung cũng như điểm bắt đầu khung tiếp theo. Nếu khung bị lỗi thì nó cũng không có khả năng tìm vị trí khung tiếp theo. Điều đó là lý do từ đồng bộ khung đặt ở tất cả các khung.
4.3.2. Giải mã Huffman
Giải mã Huffman là một mô hình giải mã ít mất dữ liệu nhất, nó cung cấp mã Huffman từ mẫuđầu vào. Bảng ánh xạ để thực hiện mã hoá Huffman dựa trên cơ sở nội dung thông tin của chuỗi tín hiệu đầu vào. Các mẫu xuất hiện với tần suất lớn được mã hoá với đoạn mã ngắn, mẫu xuất hiện ít được mã hoá vớiđoạn mã dài hơn. Kết quả là sẽ giảm bớt được sư dư thừa. nhưng điều đó chỉ thực sự có ý nghĩa khi nếu một vài chuỗi đầu vào kết hợp xuất hiện nhiều hơn các mẫu khác.
Thủ tục giải mã dựa trên cơ sở một vài bảng Huffman được sử dụng cho ánh xạ mã hoá Huffman các mẫu. Bộ giải mã so sánh chuỗi đầu vào với các thông tin trong bảng Huffman. Nếu nó tìm thấy mẫu phù hợp thì mẫu đầu ra tương ứng sẽ được đưa ra. Có một và chỉ một mẫu cho mỗi chuỗi đầu vào.
Trong MP3, có 32 bảng Huffman khác nhau. Các bảng này được định nghĩa trước và dựa trên cơ sở thông tin phù hợp của thông tin âm thanh nén. Thông tin phụ định rõ bảng Huffman nào được sử dụng cho việc giải mã khung hiện tại.
Đầu ra từ bộ giải mã hoá là 576 đường tần số, tương ứng với giá trị nguyên.
Các đường tần số này được chia thành 3 phần: Big-values, count 1 và zero.
Big-values Count 1 rzero
576 đường tần số
2 * Big-values
2 * Big-values + 4 * count 1
Big-values bao gồm các đường tần số thấp nhất và được mã hoá với độ chính xác cao nhất. phạm vi của Big-values là ± 15
Phần tiếp theo count 1 có thể chỉ được mã hoá với giá trị 0, 1 hoặc – 1.
Phần cuối cùng zero miêu tả các đường tần số đã bị loại bỏ bởi bộ mã hoá và nó được điền giá trị 0 bởi các bộ giải mã hoá.
Ranh giơi giữa các phần này được chỉ rõ trong phần thông tin phụ và được lựa chọn bởi bộ psycho acountics trong quá trình mã hoá
Khi giải mã hoá big-values, bảng Huffman sẽ cung cấp hai đường tần số cho mỗi chuỗi đầu vào và với count 1 sẽ cung cấp 4 đường tần số cho mỗi chuỗi đầu vào.
Có thể gửi big-values lớn hơn 15 nếu cần tăng độ chính xác. Nó được thực hiện với một khối gọi là escape sequence và chỉ có khả năng cho big-values.
Nếu bộ giải mã hoá tìm thấy giá trị 15, điều đó cho thấy rằng một escape sequence đang được dùng và đọc một số bit từ dòng bit. Giá trin escape được thêm trực tiếp để giá trị gốc là 15. Số lượng bit được đọc đối với mỗi escape
sequence được chỉ rõ trong bảng Huffman hiện tại được dùng và được gọi là linbits
4.3.3. Descaling
Các mẫu từ bộ giải mã hoá Huffman có thể được khôi phục đường tần số gốc bằng cách dùng hệ số tỷ lệ trong phần thông tin phụ. Trong quá trình mã hoá các đường tần số được chia cho một hệ số tỷ lệ và một giá trị nguyên nhỏ trong khoảng từ - 15 đến 15. Hệ số tỷ lệ được lưu một các riêng rẽ và số nguyên được mã hoá Huffman cùng với hệ số tỷ lệ và các dữ liệu được mã hoá Huffman tạo thành dữ liệu chính.
Hình 4.4.22: Descaling
Không phải là có một hệ số tỷ lệ cho các đường tần số. Thay vì điều đó các đường tần số được chia thành 21 nhóm gọi là các băng hệ số tỷ lệ, mỗi băng dùng một hệ số tỷ lệ. Số lượng đường tần số trong mỗi băng phụ thuộc vào băng tần. Một băng hệ số tỷ lệ tần thấp bao gồm ít đường tần số hơn một băng hệ số tỷ lệ tần cao.
Quá trình descaling dùng các thông tin tỷ lệ từ phần thông tin phụ và được ứng dụng cho tất cả các nhóm. Mỗi một hệ số trog 21 hệ số tỷ lệ được áp dụng cho một nhóm riêng.
4.3.4. Quá trình xử lý Stereo
Có 4 loại kênh khác nhau trong MP3: single channel, Dual channel, MS Stereo và Intensity Stereo. Khi dùng Single channel và Dual channel thì không yêu cầu quá trình sử lý Stereo. Dual channel có nghĩa là có hai kênh và hai kênh này được mã hoá một cách độc lập.
4.3.4.1. MS Stereo
Middle/side Stereo (MS Stereo) là phương pháp loại bỏ sự dư thừa giữa các kênh. Điều này đạt được bằng cách mã hoá tổng và hiệu của hai kênh thay vì mã hoá kênh trái và kênh phải.
2 2
i i i
i i i
S R M
S
L M −
+ =
=
Mi Là tổng hai kênh và Si là hiệu hai kênh Li và Ri là mẫu đầu ra.
4.3.4.2. Intensity Stereo
Intensity Stereo là phương pháp phức tạp hơn mã hoá stereo. Nó được chia thành phần cường độ và phần vị trí stereo. Intensity chỉảnh hưởng tới mã hoá đường tần cao và đường tần số thấp hơn vẫn được mã hoá như là kênh trái/phải hoặc MS stereo. Các bước tính toán như sau:
12) . _
tan(
_ π
possb
is ratio
is =
ratio is
ratio L is
Li i
_ 1 . _
= +
ratio L is
Ri i
_ 1
1
= +
Vị trí của intensity stereo is_possb được đọc từ hệ số tỷ lệ của kênh trái và kênh phải
4.3.5. Inverse Modified DCT (IMDCT)
IMDCT dùng trong MP3 là DCT 18 điểm, cung cấp 36 giá trị đầu ra từ 18 giá trị đầu vào. Nó không đưa ra thêm thông tin nhưng nó phải đưa ra kết quả từ một sự tính toán với số lượng lớn các giá trị. Đây là lý do tại sao giới hạn thay đổi được sử dụng. DCT là biếnđổi ngược vì nó đưa ra các mẫu từ các đường tần số.
Việc biến đổi từ miền tần số về miền thời gian được thực hiện kết hợp băng lọc nhiều pha. Thay vì cung cấp các mẫu trong miền thời gian một cách trực tiếp, IMDCT tạo ra các mẫu băng lọc con nhiều pha từ các đường tần số vào.
36 giá trị từ IMDCT phải được nhân với 36 điểm cửa sổ trước khi nó được sử dụng cho bước tiếp theo trong quá trình giải mã hoá. Có 4 loại cửa sổ khác nhau có thể được áp dụng cho các mẫu đầu ra. Cửa sổ được sử dụng ở đây dựa trên loại khối, và loại khối có thểđược tìm thấy trong vùng thông tin phụ. Lý do của việc tạo 36 giá trị đầu ra là IMDCT dùng 50% chồng lấp giữa các cửa sổ. 18 giá trị thấp hơn được đưa vào với 18 giá trị cao hơn của khung trước và dùng như là đầu ra. 18 giá trị cao hơn sau đó được lưu trữ và sử dụng theo cách giống như vậy khi khung tiếp theo được giải mã hoá.
Hình 4.4.23: Các bước trong quá trình IMDCT Việc tính toán IMDCT dựa trên biểu thức sau:
Một trong 4 cửa sổ khác nhau có thể được áp dụng cho đầu ra từ IMDCT.
Mỗi giá trị đầu ra tỉ lệ với giá trị tương đương trong cửa sổ. Loại cửa sổ dựa trên chuỗi tín hiệu đầu vào tương đương và có thể là cửa sổ bình thường, ngắn, bắt đầu hoặc dừng.
4.3.6. Tối ưu hoá IMDCT
IMDCT dùng trong MP3 là loại DCT 18 điểm, nó cung cấp 36 giá trị đầu ra từ 18 giá trị đầu vào. IMDCT có thể hoạt động theo nhiều cách. Ba phương pháp được mô tả sau đây, phương pháp tối ưu trên ma trận DCT hiện đang được sử dụng cho các bộ giải mã.
4.3.6.1. Phương pháp trực tiếp
Trên thực tế DCT là một ma trận nhân, nhưng phải thực hiện 18x36 phép nhân và 17x36 phép cộng. Tính trực tiếp là một giải pháp không tốt vì nó không hiệu quả.
Hình 4.4.24: Tính DCT dùng ma trận
4.3.6.2. Thuật toán DCT nhanh
Có một thuật toán cho việc tính DCT nhanh giống như biếnđổi Fourier có thể tính nhanh với FFT. Vấn đề là chỉ có thể áp dụng cho các DCT có độ dài 2k. Một DCT có độ dài khác 2k phức tạp hơn khi dùng DCT nhanh và cần một vài thay đổi. nó được thực hiện dựa trên một thuật toán, có thể tính DCT 18 điểm dùng 244 phép nhân và khoảng 100 phép cộng.
4.3.6.3. Tối ưu trên ma trận DCT
Phương pháp thứ ba là tối ưu trên ma trận. Một chương trình được phát triển với mục đích nghiên cứu ma trận DCT và tạo ra mã nguồn một cách trực tiếp.
Chương trình này cố gắng tối thiểu số lượng phép nhân bằng cách giữ lại các tính toán trước. Nếu nó tìm thấy hai phép nhân giống hệt nhau thì kết quả của phép nhân thứ nhất sẽ được gán cho phép nhân sau. Nó cũng có thể tìm thấy tổng của hai phép nhân giống hệt nhau, khi đó nó sẽ bỏ qua cả hai phép nhân
và lấy kết quả trước đó. Điều này tăng đáng kể tốc độ tính toán và số lượng phép nhân yêu cầu sẽ từ 648 tới 256. Với kiến trúc của bộ xử lý ARM, các phép cộng có thể được thực hiện song song dùng chỉ thị MLA (Multiply and Accumulate).
Băng lọc tổng hợp nhiều pha dùng đầu ra từ IMDCT. Theo chuẩn ISO/IEC 11172-3 băng lọc tổng hợp nhiều pha phải hoán vị đầu vào trước khi nó được sử dụng. Để tránh điều này, đầu ra của DCT được sắp xếp lại khi nó có thể được đưa trực tiếp vào băng lọc tổng hợp nhiều pha.
4.3.7. Đảo tần
Việc sắp xếp lại tần số được tích hợp vào bộ IMDCT. Nó cải thiện các tham số nhưng nó không quyết định hoạt động của IMDCT.
Trước khi đi đến băng lọc nhiều pha kết hợp, tất cả các mẫu con lẻ trong tất cả các băng con lẻ phải bị loại bỏ. Điềuđóđược thựchiện nhằm bù sự đảo tần trong các băng lọc nhiều pha kết hợp.
4.3.8. Băng lọc nhiều pha kết hợp
Băng lọc nhiều pha kết hợp hay băng lọc kết hợp là bước cuối cùng trong quá trình giải mã hoá. Nó cung cấp 32 mẫu PCM kế tiếp nhau dùng các mẫu đầu vào từ các băng lọc. Một giản đồ lưu lượng hoàn chỉnh của băng lọc kết hợp như hình vẽ 4.4.25:
Hình 4.4.25: Băng lọc nhiều pha kết hợp