Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 90 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
90
Dung lượng
1,17 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP. HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KĨ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC XÂY DỰNG CHƯƠNG TRÌNH CHƠI NHẠC FLAC TRÊN T-ENGINE BOARD HỘI ĐỒNG: KỸ THUẬT MÁY TÍNH GVHD:ThS. PHAN ĐÌNH KHÔI GVPB: ThS. BÙI VĂN HIẾU o0o SVTH 1: VÕ NGUYÊN TRUNG (5060 ) SVTH 2: LÊ THỊ THANH HÀ (50600572) TP.HỒ CHÍ MINH, THÁNG 1 NĂM 2011 i LỜI CAM ĐOAN o0o Chúng em xin cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như đã ghi rõ trong luận văn, nội dung trình bày trong luận văn này là do chính chúng em thực hiện và chưa có phần nào của luận văn này được nộp để lấy một bằng cấp ở trường Bách Khoa hoặc trường khác. Tp. Hồ Chí Minh, ngày 07 tháng 01 năm 2011 Nhóm sinh viên Võ Nguyên Trung – Lê Thị Thanh Hà ii LỜI CẢM ƠN o0o Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Phan Đình Khôi đã hướng dẫn và tận tình giúp đỡ chúng em hoàn thành đề tài luận văn này. Đồng thời, chúng em cũng xin gửi lời cảm ơn đến quý thầy cô trong khoa đã tạo điều kiện giúp đỡ trong suốt quá trình hoàn thành. Ngoài ra, chúng em cũng gửi lời cảm ơn đến các nhóm bạn cũng trao đổi, chia sẻ kiến thức giúp chúng em hoàn thành luận này một cách tốt đẹp nhất. Cuối cùng, chúng em xin cảm ơn Công ty Renesas đã hỗ trợ cho khoa Khoa Học và Kỹ Thuật Máy Tính cũng như Câu lạc bộ Phần Cứng board và tài liệu T- Engine tạo điều kiện cho chúng em nghiên cứu và thực hiện đề tài. iii TÓM TẮT LUẬN VĂN o0o Nội dung của đề tài là tìm hiểu về định dạng file FLAC, thực hiện giải mã file này và xuất ra cổng audio của T Engine board. Sau đó, tìm hiểu và phát triển driver âm thanh trên T Engine board để điều khiển trình chơi nhạc. Vì file FLAC có dung lượng khá lớn nên phải nghiên cứu giải thuật đồng bộ giữa các quá trình đọc file, giải mã, đẩy dữ liệu ra buffer driver và điều khiển driver phát nhạc để đảm bảo chất lượng âm thanh là tốt nhất với những đáp ứng của phần cứng. Trên cơ sở đó, xây dựng giao diện chương trình chơi nhạc định dạng file FLAC và các file khác như MP3, WAV trên T Engine board. Giao diện này sẽ có đầy đủ các tính năng của một trình nghe nhạc thông dụng. iv MỤC LỤC LỜI CAM ĐOAN ii LỜI CẢM ƠN iii TÓM TẮT LUẬN VĂN iv MỤC LỤC v MỤC LỤC HÌNH viii MỤC LỤC BẢNG ix CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1 1.1Giới thiệu 1 1.2Ứng dụng 2 1.3Các vấn đề của đề tài 2 1.4Hướng giải quyết 2 1.4.1Cấu trúc của file FLAC 2 1.4.2Giải mã file FLAC 3 1.4.3Driver âm thanh 3 1.4.4Xây dựng giao diện đồ hoạ 3 1.4.5Bổ sung các loại file khác 3 1.5Nội dung báo cáo 3 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 5 2.1 Dự đoán tuyến tính LPC(Linear predictive coding) 5 2.2 Mã Huffman 6 2.2.1Biểu diễn mã tiền tố trên cây nhị phân 7 2.2.2Xây dựng bộ mã tiền tố tối ưu 7 2.2.3 Hàng đợi ưu tiên: 8 2.2.4Xây dựng cây Huffman: 8 2.2.5Xây dựng bộ mã 8 2.2.6Nén file bằng mã Huffman 8 2.3Rice Coding 10 2.3.1Mã Golomb 10 2.3.2Mã Rice: 11 2.3.3Ứng dụng: 13 v 2.4Sơ lược về bộ tổng hợp âm thanh của T-Engine 13 2.4.1Sơ đồ khối 13 2.4.2Các chân kết nối (Connector pins) 14 2.4.3 Audio codec UDA1342TS 15 2.5Giao tiếp I2C Hitachi 17 2.5.1Module giao diện âm thanh nối tiếp 18 2.5.2Các chân output/input 19 2.6Driver âm thanh 20 2.6.1Sơ đồ hoạt động 20 2.6.2Cấu trúc dữ liệu 20 CHƯƠNG 3: TỔNG QUAN VỀ FILE FLAC (FREE LOSSLESS AUDIO CODEC) 27 3.1Một vài chuẩn lossless 27 3.1.1APE (Monkey’s Audio) 27 3.1.2WV(WavPack) : 27 3.1.3FLAC (Free Lossless Audio Codec) 27 3.2Giới thiệu về file FLAC - Free Lossless Audio Codec 28 3.2.1Metadata 28 3.2.2Audio data 29 3.2.3Frame 29 3.3Quá trình mã hóa file FLAC 29 3.3.1Định nghĩa 29 3.3.2Blocking 30 3.3.3INTER CHANNEL DECORRELATION 31 3.3.4 Prediction 32 3.3.5Residual Coding 33 3.4Cấu trúc file FLAC 34 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH NGHE NHẠC 41 4.1Giải mã file FLAC 41 4.1.1 Đọc thông tin của file 41 4.1.2Đọc frame, giải mã file FLAC 41 4.1.3Residual coding 47 4.1.4Mã Rice 48 4.2Thiết kế chương trình nghe nhạc 50 vi 4.2.1Phân tích vấn đề 50 4.2.2Hoạt động của chương trình 51 4.2.3Hiện thực chương trình 54 CHƯƠNG 5:TỔNG KẾT 69 5.1Kết quả thực hiện 69 5.2Thuận lợi và khó khăn 69 5.2.1Thuận lợi: 69 5.2.2Khó khăn: 70 5.3Hướng phát triển 70 TÀI LIỆU THAM KHẢO 71 vii MỤC LỤC HÌNH LỜI CAM ĐOAN ii LỜI CẢM ƠN iii TÓM TẮT LUẬN VĂN iv MỤC LỤC v MỤC LỤC HÌNH viii MỤC LỤC BẢNG ix CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1 1.1Giới thiệu 1 1.2Ứng dụng 2 1.3Các vấn đề của đề tài 2 1.4Hướng giải quyết 2 1.4.1Cấu trúc của file FLAC 2 1.4.2Giải mã file FLAC 3 1.4.3Driver âm thanh 3 1.4.4Xây dựng giao diện đồ hoạ 3 1.4.5Bổ sung các loại file khác 3 1.5Nội dung báo cáo 3 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 5 2.1 Dự đoán tuyến tính LPC(Linear predictive coding) 5 2.2 Mã Huffman 6 2.2.1Biểu diễn mã tiền tố trên cây nhị phân 7 2.2.2Xây dựng bộ mã tiền tố tối ưu 7 2.2.3 Hàng đợi ưu tiên: 8 2.2.4Xây dựng cây Huffman: 8 2.2.5Xây dựng bộ mã 8 2.2.6Nén file bằng mã Huffman 8 Hình 2.1: sơ đồ mã hóa các kí tự bằng mã Huffman 9 2.3Rice Coding 10 2.3.1Mã Golomb 10 Hình 2.2 Mã Golomb 11 2.3.2Mã Rice: 11 2.3.3Ứng dụng: 13 2.4Sơ lược về bộ tổng hợp âm thanh của T-Engine 13 2.4.1Sơ đồ khối 13 Hình 2.3 Sơ đồ kết nối 13 Hình 2.4 Khối điều khiển tổng hợp âm thanh 14 2.4.2Các chân kết nối (Connector pins) 14 Hình 2.5 Sơ đồ chân của bộ tổng hợp âm thanh 14 2.4.3 Audio codec UDA1342TS 15 Hình 2.6: Sơ đồ khối UDA1342TS 17 2.5Giao tiếp I2C Hitachi 17 Hình 2.7: Sơ đồ kết nối giao tiếp I2C 18 2.5.1Module giao diện âm thanh nối tiếp 18 Hình 2.8: Sơ đồ khối SSI 19 2.5.2Các chân output/input 19 2.6Driver âm thanh 20 2.6.1Sơ đồ hoạt động 20 Hình 2.9: Hoạt động của driver âm thanh 20 2.6.2Cấu trúc dữ liệu 20 DN_AUDIO_SETTINGFMTS: Thuộc tính này có thể đọc hoặc thiết lập định dạng audio hoạt đông cho driver với 2 hàm tk_rea_dev() và tk_swri_dev() 22 DN_AUDIO_PLAYAUDIO: Thuộc tính cho phép ghi dữ liệu lên vào buffer driver với hàm tk_swri_dev() 23 DN_AUDIO_MIXEROUTPUTVOL: Thuộc tính cho phép điều chỉnh và lấy dữ liệu của loa 23 CHƯƠNG 3: TỔNG QUAN VỀ FILE FLAC (FREE LOSSLESS AUDIO CODEC) 27 3.1Một vài chuẩn lossless 27 3.1.1APE (Monkey’s Audio) 27 3.1.2WV(WavPack) : 27 3.1.3FLAC (Free Lossless Audio Codec) 27 3.2Giới thiệu về file FLAC - Free Lossless Audio Codec 28 3.2.1Metadata 28 3.2.2Audio data 29 3.2.3Frame 29 3.3Quá trình mã hóa file FLAC 29 3.3.1Định nghĩa 29 3.3.2Blocking 30 3.3.3INTER CHANNEL DECORRELATION 31 3.3.4 Prediction 32 a.Verbatim 32 c.Fixed linear predictor 32 d.FIR linear prediction 33 3.3.5Residual Coding 33 3.4Cấu trúc file FLAC 34 Hình 3.1: Cấu trúc của file FLAC 35 Hình 3.2: Cấu trúc của Streaminfo metadata 36 Hình 3.3: Cấu trúc của Application metadata 36 Hình 3.4: Cấu trúc của Seektable metadata 37 Hình 3.5: Cấu trúc của Vorbis_comment metadata 37 Hình 3.6: Cấu trúc của Picture metadata 38 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH NGHE NHẠC 41 4.1Giải mã file FLAC 41 4.1.1 Đọc thông tin của file 41 4.1.2Đọc frame, giải mã file FLAC 41 Hình 4.1: Cấu trúc của frame 42 Hình 4.2 : Cấu trúc của Verbatim subframe 44 Hình 4.1 : Cấu trúc của Fixed subframe 44 Hình 4.2: Cấu trúc của LPC subframe 46 4.1.3Residual coding 47 Hinh 4.5: Cấu trúc của Residual (phần dư) 47 4.1.4Mã Rice 48 Hình 4.63 Giải mã residual với tham số Rice là 16 49 Hình 4.4 Giải mã residual với tham số Rice là 4 49 Hình 4.5 Cách lưu dữ liệu với 2 kênh 50 4.2Thiết kế chương trình nghe nhạc 50 4.2.1Phân tích vấn đề 50 4.2.2Hoạt động của chương trình 51 Hình 4.6: Đường đi dữ liệu của chương trình 51 4.2.3Hiện thực chương trình 54 [...]... phần: Chương 1: giới thiệu về đề tài, các vấn đề cần giải quyết, hướng giải quyết Chương 2: giới thiệu một số phương pháp mã hóa được sử dụng trong mã hóa file FLAC và driver âm thanh trên T Engine board Chương 3: giới thiệu về file FLAC và phương pháp giải mã file FLAC Chương 4: xây dựng chương trình chơi nhạc file FLAC trên T Engine board Chương 5: tổng kết đánh giá kết quả đạt được CHƯƠNG... file FLAC trên nền linux Vấn đề tiếp theo là tìm hiểu driver âm thanh của board T Engine, xuất được file FLAC ra cổng audio sao cho chất lượng âm thanh được đảm bảo là tốt nhất với những gì phần cứng hỗ trợ Vấn đề cuối cùng là xây dựng giao diện đồ họa cho chương trình, giao diện đồ họa phải gồm các chức năng cơ bản của một trình nghe nhạc thông thường Ngoài file FLAC, chương trình còn hỗ trợ chơi. .. ứng yêu cầu của những người yêu nhạc khó tính Do đó, nhóm em quyết định chọn đề tài xây dựng chương trình nghe nhạc định dạng file FLAC (Free Lossless Audio Codec) là một định dạng file nén không mất dữ liệu (lossless) trên T Engine board, nhằm giải quyết một phần nhỏ của vấn đề trên 1.2 Ứng dụng Chương trình sẽ đóng góp một phần vào các ứng dụng nghe nhạc hiện nay trên các thiết bị di động như mp3,... driver để nâng cao tốc độ đọc và đồng bộ giữa quá trình đọc dữ liệu, quá trình giải mã và quá trình ghi vào driver sao cho hợp lí để chất lượng âm thanh đầu ra là tốt nhất 1.4.4 Xây dựng giao diện đồ hoạ Phần giao diện của chương trình nghe nhạc sẽ gồm 2 phần chính là playlist để hiển thị các file nhạc được tìm thấy trong USB hay trong PC Card và giao diện chương trình chơi gồm các nút điều khiển để... định dạng có thể chơi được trên các thiết bị ấy, giải quyết được phần nào các yêu cầu nghe nhạc chất lượng cao của những người yêu nhạc khó tính 1.3 Các vấn đề của đề tài Yêu cầu của đề tài là xây dựng được chương trình chơi file FLAC trên board T- Engine Vì thế vấn đề đầu tiên cần giải quyết chính là phải tìm hiểu về định dạng file FLAC, sau đó tìm hiểu các giải thuật dùng để mã hóa file FLAC và hiện... Các loại dữ liệu trong Picture metadata .38 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH NGHE NHẠC 41 4.1Giải mã file FLAC 41 4.1.1 Đọc thông tin của file .41 4.1.2Đọc frame, giải mã file FLAC 41 Hình 4.1: Cấu trúc của frame 42 Bảng 4.1: Thông tin chi tiết của file từ frame header 42 Bảng 4.2: số bit trên một mẫu tương ứng trong trường “bit persample”... 4.2Thiết kế chương trình nghe nhạc 50 4.2.1Phân tích vấn đề 50 4.2.2Hoạt động của chương trình 51 Hình 4.6: Đường đi dữ liệu của chương trình .51 4.2.3Hiện thực chương trình 54 Hình 4.70: Hoạt động của main task 55 Hình 4.81: Cấu trúc tổng quát của chương trình 56 a.Usb_task 57 Hình 4.91: Hoạt động của usb_task 57 CHƯƠNG... hình của T Engine board không lớn nên giao diện sẽ được cắt ra thành 2 hình tương ứng với 2 phần trên 1.4.5 Bổ sung các loại file khác Tìm hiểu thêm về thư viện của file MP3, tìm hiểu về đề tài chơi nhạc MP3 trên T Engine của các nhóm trước để bổ sung vào, làm cho chương trình phong phú hơn Tìm hiểu về file WAV là một file âm thanh gốc, không nén và chơi file này bằng chương trình trên Nội dung báo... như MP3, WAV Chương trình có thể tìm và chơi tất cả các file nhạc nằm trong PC card hay USB 1.4 Hướng giải quyết 1.4.1 Cấu trúc của file FLAC Trước khi nghiên cứu về giải thuật giải mã file FLAC, cần phải nắm rõ cấu trúc của file, để có thể dễ dàng định hướng được các bước giãi mã sau này Cấu trúc file FLAC đã được giới thiệu khá chi tiết trong một số tài liệu trên mạng 1.4.2 Giải mã file FLAC Tìm hiểu... 3 1.5Nội dung báo cáo .3 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 5 2.1 Dự đoán tuyến tính LPC(Linear predictive coding) .5 2.2 Mã Huffman 6 2.2.1Biểu diễn mã tiền tố trên cây nhị phân 7 2.2. 2Xây dựng bộ mã tiền tố tối ưu 7 2.2.3 Hàng đợi ưu tiên: .8 2.2. 4Xây dựng cây Huffman: 8 2.2. 5Xây dựng bộ mã 8 2.2.6Nén file . T Engine board. Chương 3: giới thiệu về file FLAC và phương pháp giải mã file FLAC Chương 4: xây dựng chương trình chơi nhạc file FLAC trên T Engine board. Chương 5: tổng kết đánh giá kết. cuối cùng là xây dựng giao diện đồ họa cho chương trình, giao diện đồ họa phải gồm các chức năng cơ bản của một trình nghe nhạc thông thường. Ngoài file FLAC, chương trình còn hỗ trợ chơi một số. sở đó, xây dựng giao diện chương trình chơi nhạc định dạng file FLAC và các file khác như MP3, WAV trên T Engine board. Giao diện này sẽ có đầy đủ các tính năng của một trình nghe nhạc thông dụng. iv MỤC