Tải bản đầy đủ (.pdf) (101 trang)

xây dựng engine giải mã video h.264 trên hệ thống nhúng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.05 MB, 101 trang )

1

TÓM TẮT NỘI DUNG NGHIÊN CỨU
+.
S
chip PNX1500.
video H.
1 (720x640).
.


2



SUMMARY OF RESEARCH CONTENT
In this project “H.264 decoder on embedded systems”, we do research on H.264
video compression standard and AAC audio compression standard and build a product
named slH264Decoder. This product is a decoder for H.264 video and AAC audio on
Nexperia platform including Trimedia processors and real-time operating system
pSOS+
slH264Decoder is implemented based on two popular open source project on x86 PC
platform, FFmpeg (H.264 part) and faad (AAC part). We reconstructed, rewrote,
optimize the source codes to obtain the real-time decoding speed on PNX1500
processor. The architecture of slH264Decoder is compatible with OpenMAX standard.
Testings and evaluations on Trimedia PNX1500 hardware show that slH264Decoder
can decode video H.264 and audio AAC data contained in MP4 format file. The
decoding speed is real-time (25 fps in PAL and 30 fps in NTSC). The screen size can
be up to D1 resolution (720x640)
We are also successful in porting slH264Decoer to ARM Embedded Linux platform to
evaluate multi-platform porting capability of OpenMAX standard and slH264Decoder.




3


Chuẩn H.264 là một chuẩn nén/giải nén video chất lượng cao hiện đang được sử dụng
rất phổ biến trên các nền tảng PC, web, thiết bị kỹ thuật số cá nhân, điện thoại di
động,… Vì lý do đó, nhóm nghiên cứu phần mềm nhúng của PTN. Công nghệ phần
mềm (SELab) – trường ĐH. KHTN Tp.HCM – quyết định đi sâu nghiên cứu để nắm
được công nghệ giải nén H.264 và hướng tới xây dựng sản phẩm thương mại engine
giải nén video H.264 cho các thiết bị sử dụng nền tảng NXP Trimedia/ARM.
.
,
nhóm thực hiện đã nhận được sự hỗ trợ rất lớn từ phía công ty NXP Việt nam về thiết
bị thử nghiệm, hỗ trợ kỹ thuật và các tài liệu tham khảo.
Bên cạnh mục tiêu nghiên cứu và xây dựng đội ngũ, n còn
riêng của Việt nam so với các nước trong khu vực.
Chúng tôi cảm ơn Sở KHCN Tp.HCM đã tạo điều kiện đầu tư tốt nhất để nhóm thực
hiện đề tài. Cám ơn công ty NXP đã hỗ trợ rất nhiều về mặt kỹ thuật và trang thiết bị.
Cám ơn các Thầy/Cô trong hội đồng đánh giá đã có nhiều góp ý và cung cấp tư liệu
tham khảo. Cám ơn các bạn thành viên của nhóm và SELab đã nhiệt tình làm việc
trong 02 năm qua để đạt kết quả tốt nhất.
.
Tp.HCM, ngày 28 tháng 12 năm 2010
Chủ nhiệm đề tài

Nguyễn Tri Tuấn
4

Tên đề tài:



Chủ nhiệm đề tài:


Cơ quan chủ trì:
.HCM

Thời gian thực hiện đề tài:
12/2010

Kinh phí đƣợc duyệt:
Kinh phí đã cấp: 22 theo TB số : 167/TB-SKHCN ngày 08/09/2008

5

Mục tiêu: )
Xây dựng hệ thống phần mềm lõi giải mã video H.264 dùng để phát triển các thiết bị
nhúng đa phương tiện như set-top-box, đầu DVD, IP camera v.v…
Hỗ trợ các chuẩn nén video và audio mới nhất hiện nay là H.264 và AAC
Tương thích với các họ vi xử lý ARM và Trimedia
Khả năng tích hợp cao
Đạt tốc độ thời gian thực
Kiến trúc hệ thống dễ bảo trì, thay đổi, sửa lỗi
Đa platform
Triển khai thử nghiệm: Thiết kế và xây dựng prototype thiết bị H.264 Player
cầm tay trên phần cứng Trimedia của hãng NXP

Nội dung: )
1. Nghiên cứu kỹ thuật lập trình nhúng trên các họ chip ARM, Trimedia

2. Nghiên cứu kiến trúc và kỹ thuật lập trình thời gian thực trên các platform pSOS
và Embedded Linux
3. Nghiên cứu quy trình và xác định quy trình kiểm thử cho sản phẩm của đề tài
4. Nghiên cứu chuẩn OpenMAX và thiết kế kiến trúc hệ thống tương thích với
chuẩn OpenMAX
5. Nghiên cứu chuẩn AAC
6. Nghiên cứu chuẩn H.264
Thuật toán nén, giải nén
Định dạng dữ liệu MP4
7. Nghiên cứu kỹ thuật xử lý ảnh số nguyên trên hệ thống nhúng
8. Xây dựng engine giải nén H.264 và AAC

6

Engine giải nén H264 có kiến trúc như sau :

Chuẩn H.264 là một chuẩn mở, chỉ bao gồm các đặc tả về cấu trúc lưu trữ dữ liệu,
cách thức tổ chức và các bước trong quá trình nén/giải nén, chứ không đưa ra những
thuật toán nén/giải nén cụ thể cho từng bước. Nội dung nghiên cứu của đề tài là:
Nghiên cứu các qui ước của chuẩn đặt ra về cấu trúc dữ liệu lưu trữ, dữ
liệu vào và ra của từng bước trong quá trình giải nén
Nghiên cứu tìm ra các thuật toán thích hợp nhất trong các bước giải nén
cụ thể (phù hợp với các yêu cầu của thiết bị, môi trường…)
9. Thiết kế và xây dựng prototype thiết bị H.264 Player cầm tay trên phần cứng
Trimedia

7

TT




01
Nghiên cứu kỹ thuật lập trình nhúng trên các họ chip
ARM và Trimedia
Chương 2
02
Nghiên cứu kiến trúc và kỹ thuật lập trình thời gian
thực trên plaform pSOS và Embedded Linux
Chương 3
03
Nghiên cứu chuẩn OpenMAX và triển khai thiết kế
kiến trúc hệ thống tương thích với chuẩn OpenMAX
Chương 6
04
.264 bao gồm thuật
toán nén, giải nén và định dạng dữ liệu H.264
Chương 4
05
Nghiên cứu kỹ thuật xử lý ảnh số nguyên và thử
nghiệm trên hệ thống nhúng
Chương 5
06
Xây dựng engine giải nén H.264
Chương 8, 9
07
Xây dựng engine giải nén AAC
Chương 6, 8, 9
08
Nghiên cứu quy trình và xác định quy trình kiểm thử

cho sản phẩm của đề tài
Chương 10
09
Triển khai thử nghiệm trên phần cứng của NXP
Trimedia
Chương 9, 10

10
Thiết kế và xây dựng prototype thiết bị H.264 cầm tay
C
11
Kiểm thử và đánh giá chất lượng sản phẩm
Chương 10


8

Danh sách cán bộ tham gia thực hiện đề tài:
STT
Tên tổ chức, cá nhân
Học vị
Học hàm
Cơ quan
công tác
Nội dung
công việc tham gia
1
Nguyễn Tri Tuấn
Thạc sĩ
SELab

Chủ nhiệm
2
Trương Thiên Đỉnh
Cao học
SELab
Quản lý dự án
3
Nguyễn Thị Kiêm Ái
Cao học
SELab
Kiểm soát chất lượng
4
Trần Phước Tâm
Cử nhân
SELab
Nghiên cứu viên
5
Hoàng Quốc Minh
Thạc sĩ
SELab
Nghiên cứu viên
6
Nguyễn Tuấn Khang
Cao học
SELab
Nghiên cứu viên
7
Phạm Đào Võ Nhật Quang
Cao học
SELab

Nghiên cứu viên
8
Châu Chí Thiện
Cao học
SELab
Nghiên cứu viên
9
Trần Hoàng Khanh
Cử nhân
SELab
Nghiên cứu viên
10
Trần Nguyên Đại Hãn
Cao học
SELab
Nghiên cứu viên
11
Hứa Lê Thanh Vy
Cao học
SELab
Nghiên cứu viên
12
Nguyễn Xuân Nhật
Cao học
SElab
Nghiên cứu viên
13
Trần Phượng Hoàng
Cao học
SElab

Nghiên cứu viên
14
Chung Quang Khánh
Cao học
SElab
Nghiên cứu viên



9






9
DANH MỤC HÌNH 13
DANH MỤC BẢNG 15
CHƢƠNG 1 : TỔNG QUAN VỀ ĐỀ TÀI 17
1.1 Các kết quả nghiên cứu và sản xuất phần mềm nhúng trên thế giới 17
1.2 OpenMAX và vấn đề chuẩn hóa phần mềm nhúng 18
1.3 Tính cấp thiết của đề tài 19
1.3.1 Tiềm năng ngành công nghiệp nội dung multimedia 19
1.3.2 Tiềm năng thị trường thiết bị multimedia: 21
1.4 Ý nghĩa và khả năng áp dụng thực tiễn 22
CHƢƠNG 2 : NẾN TẢNG NEXPERIA TRIMEDIA 24
2.1 Tổng quan dòng Trimedia 24
2.2 Các tính năng chính của TriMedia 25
2.3 Lịch sử phát triển 25

2.4 Các lõi CPU đã được công bố 26
2.5 Hệ thống trên chip (System on chip) 27
2.5.1 Thiết bị ngoại vi thông minh 28
2.5.2 TM-1300 Input/Output 29
2.5.3 TM-1500 I/O 31
2.5.4 Lõi CPU 33
2.5.5 Bộ biên dịch 34
2.6 Kiến trúc pSOS 35
2.6.1 Tổng quan 35
2.6.2 pSOSystem của TriMedia 36
2.6.3 Môi trường phát triển tích hợp 39
2.7 Kỹ thuật lập trình thời gian thực 39
2.7.1 Lõi xử lý thời gian thực pSOS+ 40
2.7.2 Lời gọi hệ thống 42
2.7.3 Độ ưu tiên của tác vụ 42
2.7.4 Các ngăn xếp dành cho tác vụ 43
2.7.5 Giao tiếp, đồng bộ hóa, thẻ độc quyền (mutex) 43
2.7.6 Hàng đợi thông điệp 43
2.7.7 Sự kiện 44
2.7.8 Semaphore 44
2.7.9 Các thẻ độc quyền 45
2.7.10 Quản lý thời gian 45
CHƢƠNG 3 : HỆ THỐNG ARM VỚI NỀN TẢNG EMBEDDED LINUX 47
3.1 Dòng ARM 47
10

3.1.1 Sơ lược về tên gọi: 47
3.1.2 Sự kế thừa cấu trúc: 47
3.1.3 Mô hình thiết kế ARM
(3)

: 47
3.1.4 Cấu trúc load-store
(3)
: 48
3.1.5 Tập lệnh của ARM: 49
3.1.6 ARM C-Compiler: 49
3.2 Kiến trúc Embedded Linux 50
3.2.1 Bootloader (vivi, u-boot), kernel, root filesystem 50
3.2.2 Device driver 55
3.2.3 Application 55
3.2.4 Stand-alone mode 56
3.2.5 Quá trình tạo tập tin thực thi 57
3.2.6 Trình biên dịch GNU C/C++ 58
3.2.7 Quá trình biên dịch 58
3.3 Kỹ thuật lập trình thời gian thực trên Linux 59
3.3.1 Định nghĩa Tiến trình 59
3.3.2 Daemon processes 60
3.3.3 Lệnh ps 60
3.3.4 Lệnh kill 61
3.3.5 Lệnh Top 61
3.3.6 Giao tiếp và đồng bộ 62
CHƢƠNG 4 : NGHIÊN CỨU CHUẨN VIDEO H.264 68
4.1 Giới thiệu các chuẩn video thông dụng hiện nay 68
4.1.1 Dòng MPEG
(4)
69
4.1.2 Dòng H.26x 70
4.1.3 Việc sử dụng chuẩn 71
4.1.4 Một số thuật ngữ chung về mã hóa video 72
4.2 Tổng quan về quy trình nén và giải nén của chuẩn H.264

(6)
74
4.2.1 Qui trình nén (7) 75
4.2.2 Qui trình giải nén 79
4.2.3 So sánh với các chuẩn nén video trước đây 80
4.3 Cấu trúc H.264 81
4.3.1 Không gian màu YCbCr và kiểu lấy mẫu 4:2:0 81
4.3.2 Macroblock 82
4.3.3 Slice 83
4.3.4 Profile 85
4.4 Quy trình mã hóa hình ảnh của chuẩn H.264 87
4.4.1 Dự đoán Inter 87
4.4.2 Dự đoán Intra 93
4.4.3 Lọc tách khối (deblocking filter) 96
4.4.4 Biến đổi và lượng tử hóa 97
4.4.5 Tái sắp xếp (reorder) 107
4.4.6 Mã hóa Entropy 108
CHƢƠNG 5 : CÁC THUẬT TOÁN XỬ LÝ ẢNH CƠ BẢN 116
5.1 Phép biến đổi DCT 116
5.1.1 Phép biến đổi Cosin một chiều 119
11

5.1.2 Phép biến đổi Cosin nhanh 119
5.1.3 Các công thức: 120
5.1.4 Phép biến đổi Cosin ngược 122
5.2 Phương pháp nén ảnh động sử dụng biến đổi Wavelet. 124
5.3 Bù chuyển động 128
CHƢƠNG 6 : NGHIÊN CỨU CHUẨN ÂM THANH AAC 132
6.1 Giới thiệu các chuẩn audio thông dụng hiện nay 132
6.1.1 Dòng MPEG 132

6.1.2 Dòng Dolby AC-3 134
6.1.3 Dòng AAC 134
6.1.4 Một số thuật ngữ chung về mã hóa audio 137
6.2 Cơ bản về xử lý tín hiệu số
(16)
139
6.3 Tổng quan về quy trình nén và giải nén của chuẩn AAC 142
6.3.1 Qui trình nén
(17)
143
6.3.2 Qui trình giải nén 148
CHƢƠNG 7 : CHUẨN OPENMAX 151
7.1 Tổng quan vấn đề chuẩn hóa phần mềm nhúng 151
7.2 Quá trình phát triển của chuẩn OpenMAX 152
7.2.1 Giới thiệu chuẩn OpenMAX 152
7.2.2 Giới thiệu tổ chức Khronos Group 152
7.2.3 Vấn đề bản quyền và khả năng phát triển của OpenMAX 153
7.3 Cấu trúc của OpenMAX 153
7.3.1 Lớp ứng dụng – Application Layer (AL) 154
7.3.2 Lớp tích hợp – Integration Layer (IL) 155
7.3.3 Lớp phát triển – Development Layer (DL) 156
7.4 OpenMAX DL và việc chuẩn hóa các media CODEC 156
7.4.1 Tổng quan về OpenMAX DL Interface
(18)
156
7.4.2 Các quy ước của tập API 157
7.4.3 Các tập tin header 161
7.4.4 Các hàm được định nghĩa cho bộ giải nén video chuẩn H.264 161
CHƢƠNG 8 : THIẾT KẾ KIẾN TRÚC BỘ GIẢI MÃ H.264 VÀ AAC THEO
OPENMAX 165

8.1 Tổng quan lớp tích hợp của OpenMAX 165
8.1.1 Các tính năng chính và lợi ích khi sử dụng 165
8.1.2 Nguyên tắc thiết kế 166
8.1.3 Khung nhìn phần mềm của OpenMAX IL 167
8.1.4 Giới thiệu OpenMAX IL Interface 167
8.2 Kiến trúc và cách hoạt động của OpenMAX IL 169
8.2.1 Tổng quan 169
8.2.2 Các thành phần hệ thống (System component) 170
8.2.3 Kiến trúc của component 171
8.2.4 Các trạng thái của component 172
8.2.5 Vấn đề quản lý tài nguyên 174
8.2.6 Vấn đề đồng bộ hóa 175
8.3 Kiến trúc bộ giải nén và hiển thị video H.264, âm thanh AAC theo chuẩn OpenMAX
IL 176
12

8.4 Sơ đồ luồng dữ liệu trong hệ thống 177
8.5 Sơ đồ Activity các công đoạn xử lý chính 179
8.5.1 Khởi tạo hệ thống 179
8.5.2 Truy vấn handle của một thành phần 180
8.5.3 Tạo kết nối trực tiếp (tunnel) giữa 2 thành phần 181
8.5.4 Chuyển trạng thái của một thành phần sang EXECUTING 182
8.5.5 Chuyển trạng thái của một thành phần sang PAUSE 183
8.6 Kiến trúc tổng thể của hệ thống 184
CHƢƠNG 9 : XÂY DỰNG BỘ GIẢI MÃ slH264Decoder 186
9.1 Tích hợp OpenMAX DL, FFmpeg H.264 và LibFaad 186
9.1.1 Tích hợp các kiểu dữ liệu 186
9.1.2 Tích hợp các hàm cho bộ giải nén video H.264 187
9.2 Tối ưu mã nguồn trên TriMedia 187
9.2.1 Tổng quan quá trình tối ưu hóa trên TriMedia 187

9.2.2 Điều khiển cấp độ tối ưu toàn cục 188
9.2.3 Tối ưu bằng loop unrolling 188
9.2.4 Tối ưu bằng restricted pointer 189
9.2.5 Áp dụng cho bộ giải mã slH264Decoder 189
9.2.6 Kết quả thử nghiệm trên PNX1500 sau khi tối ưu 189
9.2.7 Đánh giá kết quả tối ưu 192
9.3 Đồng bộ video và audio 193
9.3.1 Vai trò của thành phần đồng hồ ClockComp 193
9.3.2 Triển khai các chức năng playback 195
CHƢƠNG 10 : THỬ NGHIỆM 198
10.1 Bộ dữ liệu test audio AAC 198
10.1.1 Bộ mẫu kiểm thử theo profile của chuẩn AAC 198
10.1.2 Bộ mẫu kiểm thử theo mức bitrate 199
10.1.3 Bộ mẫu kiểm thử theo mức sample rate 199
10.1.4 Bộ mẫu kiểm thử theo định dạng tập tin chứa (container) 200
10.1.1 Các thể loại nhạc được dùng trong bộ test 200
10.1.2 Đánh giá 201
10.2 Bộ dữ liệu test bộ giải mã slH264Decoder 201
10.2.1 Chuẩn hiển thị trên các thiết bị phổ biến
(19)
201
10.2.2 Dữ liệu dùng để test bộ giải nén slH264Decoder 202
10.3 Quy trình kiểm thử 204
10.3.1 Cách tính thời gian và xung nhịp 204
10.3.2 Các số đo dùng trong việc kiểm thử 205
10.4 Kết quả thử nghiệm 205
CHƢƠNG 11 : KẾT LUẬN 209
11.1 c 209
11.2 H ương lai 211
PHỤ LỤC 212

Phụ lục A: Cách chạy chƣơng trình trên board NXP TriMedia 212
1. Giới thiệu chung 212
2. Chạy chương trình trên board E4V-V2 212
3. Biên dịch và chạy bộ slH264Decoder 219
13

Phụ lục B: Cách chuyển slH264Decoder sang platform khác 220
1. Giải pháp tổng quan 220
i. Tạo makefile 220
ii. Tạo task và semaphore 220
iii. Kết nối thiết bị hiển thị video 220
iv. Kết nối thiết bị phát âm thanh 220
v. Kết nối nơi lưu trữ tập tin video 221
vi. Lấy thông tin của đồng hồ hệ thống 221
2. Áp dụng port sang ARM – Embedded Linux 222
i. Cấu hình của thiết bị dùng để thử nghiệm 222
ii. Port bộ decoder video và audio 222
iii. Port các component để liên kết bộ decoder 222
iv. Kết quả thử nghiệm trên ARM – Embedded Linux 222
Phụ lục C: Cách sử dụng prototype thiết bị H.264 player 224
Phụ lục D: Bảng các thuật ngữ và từ viết tắt 226
TÀI LIỆU THAM KHẢO 228

DANH MỤC HÌNH
Hình 1-1: Dự báo thị trường nội dung video số đến năm 2010 19
Hình 1-2: Dự báo thị trường nội dung số trên thiết bị di động đến năm 2010 20
Hình 1-3: Dự báo thị trường nội dung nhạc số di động đến năm 2010 20
Hình 1-4: Dự báo thị trường nội dung video di động đến năm 2010 21
Hình 1-5: Dự báo thị trường máy nghe nhạc MP3 cầm tay đến năm 2010 21
Hình 2-1 : Các sản phẩm sử dụng chip TriMedia 25

Hình 2-2 :Kiến trúc hệ thống trên chip của TriMedia 28
Hình 2-3 :Các thao tác xử lý video theo thời gian thực 29
Hình 2-4 :Các thiết bị nhập xuất của PNX1300 30
Hình 2-5: Các thiết bị nhập xuất của PNX1500 31
Hình 2-6: Lõi CPU TriMedia 33
Hình 2-7: Bộ biên dịch của TriMedia 34
Hình 2-8: Môi trường pSOSystem 38
Hình 2-9: Mô hình xử lý đa tác vụ 41
Hình 3-1: Các thanh ghi của ARM 48
Hình 3-2: Cấu trúc của thanh ghi trạng thái chương trình hiện tại 48
Hình 3-3: Cấu trúc của bộ công cụ hỗ trợ phát triển. 50
Hình 3-4: Sơ đồ bộ nhớ trên board HDR3 sử dụng MPC860 và Embedded Linux 51
Hình 3-5: Cấu trúc của hệ điều hành Linux 53
Hình 3-6: Cấu hình kernel 54
Hình 3-7: Quá trình tạo tập tin thực thi 57
Hình 3-8: Quá trình biên dịch 58
Hình 4-1: Quá trình phát triển các chuẩn MPEG và H.26x 69
Hình 4-2: Ví dụ về interlaced field 74
Hình 4-3: Quy trình nén và giải nén video chuẩn H.264 75
Hình 4-4: Quy trình nén video chuẩn H.264 75
14

Hình 4-5: Kiểu dự đoán Intra 76
Hình 4-6: Quá trình dự đoán Inter 77
Hình 4-7: Quy trình giải nén video chuẩn H.264 79
Hình 4-8: So sánh bitrate giữa các chuẩn H.264, MPEG-4 Part 2, Motion JPEG 80
Hình 4-9: So sánh chất lượng ảnh được nén cùng bitrate khi dùng chuẩn MPEG-2 (trái),
MPEG-4 (giữa) và H.264 (phải) 81
Hình 4-10: Macroblock 16x16 được đại diện bởi các thành phần Y, Cr, Cb 82
Hình 4-11: Một cách phân hoạch slice trong ảnh 83

Hình 4-12: Nhóm slice trong một ảnh 84
Hình 4-13: Cấu trúc một slice 85
Hình 4-14: Các profile của chuẩn H.264 87
Hình 4-15: Mô tả ước lượng chuyển động trong dự đoán Inter 88
Hình 4-16: Các dạng phân hoạch macroblock 90
Hình 4-17: Phần sai khác (chưa bù chuyển động) xác định cách phân hoạch ảnh 90
Hình 4-18: Ví dụ về vectơ chuyển động nguyên và không nguyên 91
Hình 4-19: Nội suy các điểm ảnh tại các vị trí half-pixel trong ảnh tham chiếu 92
Hình 4-20: Nội suy các điểm ảnh tại các vị trí quarter-pel 93
Hình 4-21: Quá trình dự đoán Intra 94
Hình 4-22: Block luma 4x4 cần được dự đoán Intra (trong đường viền trắng) 94
Hình 4-23: Các điểm ảnh được nén dùng để tham chiếu 94
Hình 4-24: Các mode dự đoán cho block luma 4x4 95
Hình 4-25: Các mode dự đoán Intra 16x16 96
Hình 4-26: Thứ tự lọc các cạnh (thứ tự chữ cái a, b, c,…) trong một macroblock 97
Hình 4-27: Thứ tự truyền dẫn các block sai khác bên trong một macroblock 98
Hình 4-28: Minh họa biến đổi DCT và lượng tử hóa 100
Hình 4-29: Quét zig-zag với block luma 4x4 107
Hình 4-30: Mô hình biến đổi block 4x4 thành mảng sau khi tái sắp xếp 108
Hình 5-1: Thuật toán đối sánh khối – khối mờ chỉ ra phần cửa sổ tìm kiếm 118
Hình 5-2: Bộ mã hoá với ước lượng và bù chuyển động (ME/MC) sử dụng chuyển đổi Cosin
rời rạc (DCT) 118
Hình 5-3: Cấu trúc cây có thứ bậc của DWT 125
Hình 5-4: Bộ mã hoá với DWT thay thế cho DCT 126
Hình 5-5: Bộ mã hoá với ME/MC thực hiện trong miền DWT 126
Hình 5-6: Tín hiệu s(n) và dịch chuyển s(n-1) của nó 127
Hình 5-7: Biểu diễn miền wavelet của s(n) và s(n-1) 128
Hình 5-8: Khảo sát ô mẫu pixel của ảnh chuyển động 129
Hình 5-9: Mô tả vector chuyển động giữa hai frame kế cạnh nhau 130
Hình 7-1: Khronos Group 153

Hình 7-2: Chức năng chung các lớp của OpenMAX 154
Hình 8-1: OpenMAX IL xét trên tổng thể kiến trúc của OpenMAX 167
Hình 8-2: Các cách triển khai 4 chức năng trong OpenMAX IL 170
Hình 8-3: Các thành phần hệ thống của OpenMAX IL API 171
Hình 8-4: Kiến trúc component trong OpenMAX IL 172
Hình 8-5: Các trạng thái của một component 173
Hình 8-6: Luồng chạy của buffer thời gian và dữ liệu 176
Hình 8-7: Kiến trúc bộ giải nén và hiển thị video audio 177
15

Hình 8-8: Sơ đồ luồng dữ liệu 177
Hình 8-9: Quá trình khởi tạo hệ thống 179
Hình 8-10: Quá trình IL Client truy vấn handle của một thành phần 180
Hình 8-11: Quá trình tạo kết nối tunnel cho 2 thành phần 181
Hình 8-12: Quá trình chuyển trạng thái một thành phần sang EXECUTING 182
Hình 8-13: Chuyển trạng thái một thành phần sang PAUSE 183
Hình 8-14: Kiến trúc tổng thể của hệ thống 184
Hình 9-1 – Đồ thị so sánh tốc độ giải nén video trước và sau khi tối ưu 191
Hình 9-2 – Tỉ lệ tăng tốc độ sau khi tối ưu 192
Hình 9-3 – Ý nghĩa của scale trong quá trình playback 194
Hình 9-4 – Vai trò của ClockComp trong slH264Decoder 195
Hình 10-1 – Thống kê bộ test theo profile 203
Hình 10-2 – Thống kê bộ test theo mode 204
Hình 10-3 – Thống kê bộ test theo chuẩn khung hình 204
Hình 10-4 – Sơ đồ khối của board TriMedia PNX1500 206
Hình 10-5 - Đồ thị so sánh tốc độ giải nén và hiển thị video, audio 208
Hình 1 – Board E4V-V2 212
Hình 2 – Cổng video của board E4V-V2 213
Hình 3 – Cổng video của LCD 213
Hình 4 – USB-JTAG pod 214

Hình 5 – Cửa sổ NDK5.5 BUILD WINDOW 215
Hình 6 – Thực hiện lệnh biên dịch chương trình MyHelloWorld 216
Hình 7 – Từng bước biên dịch chương trình MyHelloWorld 216
Hình 8 – Kết quả báo thành công sau khi biên dịch MyHelloWorld 217
Hình 9 – Cửa sổ dvpMon khi chương trình nhận được kênh truyền và dò thấy bo mạch 218
Hình 10 – Cửa sổ Download và cách điền thông số 219
Hình 1 – Remote cầm tay Philips Universal SRU 5030 224
Hình 2 – Giao diện duyệt thư mục và tập tin của prototype 225
Hình 3 – Giao diện chọn tập tin video để play 225


DANH MỤC BẢNG
Bảng 2-1 - Bảng các lời gọi hệ thống cho việc quản lý tác vụ 42
Bảng 2-2 - Bảng các lời gọi xử lý hàng đợi thông điệp 44
Bảng 2-3 - Bảng các lời gọi hệ thống dành cho sự kiện 44
Bảng 2-4 - Bảng các lời gọi hệ thống liên quan đến Semaphore 45
Bảng 2-5 - Bảng các lời gọi hệ thống liên quan đến thẻ độc quyền 45
Bảng 2-6 - Bảng các lời gọi hệ thống dùng để quản lý thời gian 46
Bảng 7 – Các kiểu dữ liệu chuẩn OpenMAX DL được tích hợp vào bộ giải nén 187
Bảng 8 – Các hàm OpenMAX DL được tích hợp vào bộ giải nén video H.264 187
Bảng 9 – Bảng thống kê tốc độ giải nén sau khi tối ưu 190
Bảng 10 – Scale và cách cài đặt các chức năng playback 196
Bảng 11 – Chuẩn hiển thị trên các thiết bị phổ biến 202
Bảng 12 – Danh sách các tập tin dung để test slH264Deocder 203
16

Bảng 13 – Tổng hợp kết quả thử nghiệm bộ giải nén slH264Decoder 207
17

CHƢƠNG 1 : TỔNG QUAN VỀ ĐỀ TÀI



Giới thiệu về thị trường nhúng liên quan tới ngành multimedia, nhu cầu lựa chọn ngày
càng cao về sản phẩm video trong giới giải trí, từ đó nêu lên tính cấp thiết của đề tài.
1.1 Các kết quả nghiên cứu và sản xuất phần mềm nhúng trên thế giới
Trước đây, phần mềm của các thiết bị nhúng thường do các nhà sản xuất thiết bị
tự viết tùy theo chức năng của thiết bị và những phần mềm này thường chỉ chạy được
trên một thiết bị cụ thể hay nói cách khác là tính tái sử dụng của những phần mềm
này rất thấp. Đây là một vấn đề lớn làm kiềm hãm sự phát triển của ngành công
nghiệp Hệ Thống Nhúng. Nhận thức được điều này, tập đoàn công nghiệp cũng như
các trường đại học trên thế giới đã đầu tư nhiều thời gian và tiền bạc để đưa ra quy
trình, kỹ thuật làm phần mềm nhúng mới nhằm để làm tăng tính tái sử dụng của phần
mềm nhúng. Ý tưởng chung là tạo ra các middleware (phần mềm lõi trung gian) chạy
được trên nhiều loại phần cứng khác biệt. Các nhà sản xuất thiết bị sẽ xây dựng phần
mềm cho thiết bị nhúng trên nền của những phần mềm lõi này.
Đi đầu trong lĩnh vực phần mềm multimedia hệ thống nhúng là tập đoàn Texas
với bộ phần mềm lõi Davinci và tập đoàn NXP với bộ phần mềm lõi Nexperia.
Những bộ phần mềm lõi này có giá rất đắt và chỉ hỗ trợ phần cứng của chính nhà sản
xuất. Davinci chỉ hỗ trợ chip của Texas Insrument và Nexperia chỉ hỗ trợ chip của
NXP (trước đây là Philips).
Các phần mềm lõi mã nguồn mở trên PC có chất lượng tốt và khá ổn định tuy
nhiên lại không sử dụng lại được trên Hệ Thống Nhúng do nhiều nguyên nhân. Có 2
nguyên nhân quan trọng nhất là :
Vấn đề xử lý dấu chấm động
(1)
: để tiết kiệm năng lượng nên các loại CPU hệ
thống nhúng thường không có bộ xử lý số thực dấu chấm động FPU (Floating Point
Unit)
(2)
như trên CPU của máy PC. Cho nên, những chương trình cài đặt thuật toán

xử lý ảnh, âm thanh trên PC thường chạy rất chậm khi được chuyển đổi sang chạy
trên hệ thống nhúng.
18

Vấn đề kích thƣớc bộ nhớ : Các phần mềm chạy trên PC thường được thiết kế
với giả định kích thước bộ nhớ của hệ thống là đủ lớn. Tuy nhiên điều này không
đúng trên hệ thống nhúng, kích thước bộ nhớ.

1.2 OpenMAX và vấn đề chuẩn hóa phần mềm nhúng
Sự phát triển của các phần cứng thuộc lĩnh vực multimedia đã dẫn đến những
yêu cầu ngày càng cao của người tiêu dùng đối với các ứng dụng video, audio, tiếng
nói và công nghệ hình ảnh 3D trên các loại thiết bị khác nhau như smartphone, các
máy chơi nhạc và xem video, các loại máy chơi game. Có một số giải pháp được đưa
ra như:
Các bộ xử lý với phần mở rộng multimedia riêng biệt
Bộ gia tốc (accelerator) dành cho multimedia ở tầng hardware
Kiến trúc đa xử lý bao gồm các bộ xử lý tín hiệu số DSP (digital signal
processing)
Các phần cứng giải mã video chuyên dụng
Một trong những khó khăn lớn của các giải pháp kể trên nằm ở việc viết các ứng
dụng. Với các ngôn ngữ lập trình bậc cao, rất khó để có thể tận dụng được hết những
ưu điểm, khả năng của các kiến trúc phần cứng khác nhau. Chính vì điều này, hầu hết
các ứng dụng hiện nay đều được viết bằng ngôn ngữ assembly và chỉ dùng cho các
phần cứng riêng biệt. Một phần cứng multimedia mới ra đời sẽ dẫn đến việc phải viết
lại các ứng dụng phần mềm và phải tối ưu hóa lại các thuật toán cho hiệu quả hơn.
Hậu quả là việc phát triển ứng dụng tốn nhiều thời gian và chi phí hơn, trong khi đó
chất lượng cũng không được đảm bảo vì các đoạn code chỉ được sử dụng trên các
phần cứng riêng (trong khi đó, nếu được sử dụng rộng rãi thì qua thời gian, các đoạn
code đó sẽ ngày càng hoàn thiện hơn).
19


1.3 Tính cấp thiết của đề tài
1.3.1 Tiềm năng ngành công nghiệp nội dung multimedia
Hầu như tất cả các kết quả nghiên cứu thị trường đều đồng ý rằng ngành công
nghiệp nội dung sẽ là một trong những ngành công nghiệp chiến lược trong thế kỷ 21
(Hình 1-1). Trong đó nội dung video số và âm thanh số chiếm tỉ trọng rất lớn. Theo dự
báo của iSuppli, thị trường nội dung video số sẽ đặt 277 tỉ đô la vào năm 2010.
Thị trường nội dung trên thiết bị di động cũng sẽ có mức tăng trưởng khổng lồ
đạt mức 43 tỉ đôla vào năm 2010, trong đó video số và nhạc số chiếm hơn 75% tổng
giá trị. Trong đó, thị trường nội dung nhạc số trên thiết bị di động tăng từ 5.4 tỉ đô la
năm 2005 lên 15 tỉ đô la năm 2010. Nội dung video số trên thiết bị di động cũng sẽ
đạt mức 15 tỉ đô la vào năm 2010 (Hình 1-3).

Hình 1-1: Dự báo thị trƣờng nội dung video số đến năm 2010
20


Hình 1-2: Dự báo thị trường nội dung số trên thiết bị di động đến năm 2010

Hình 1-3: Dự báo thị trường nội dung nhạc số di động đến năm 2010
21


Hình 1-4: Dự báo thị trường nội dung video di động đến năm 2010

1.3.2 Tiềm năng thị trƣờng thiết bị multimedia:

Hình 1-5: Dự báo thị trường máy nghe nhạc MP3 cầm tay đến năm 2010
22


Những con số tăng trưởng ấn tượng của thị trường nội dung là kết quả của
những phát minh, tiến bộ của công nghệ hệ thống nhúng. Các loại thiết bị multimedia
ngày càng đa dạng bao gồm: DVD player, DVD recorder, set-top-box, các máy xem
phim, nghe nhạc MP3 cầm tay. Điện thoại di động thế hệ mới có chức năng chụp ảnh,
nghe nhạc, xem phim, xem Tivi. Phạm vi hoạt động của các thiết bị multimedia đã
mở rộng ra mọi nơi, mọi lúc. Có thể nói, ở đâu có con người ở đó sẽ có thiết bị
multimedia. Ví dụ điển hình nhất là máy nghe nhạc MP3 cầm tay, dự kiến thị trường
sẽ đạt khoảng 130 triệu cái vào năm 2009.
Những thông số về thị trường nội dung và thiết bị multimedia ở trên đã cho ta
thấy được phần nào tiềm năng của lĩnh vực thiết bị multimedia nhúng. Việt Nam
không thể bỏ lỡ cơ hội để dành được phần của mình trong miếng bánh lợi nhuận
khổng lồ này.

1.4 Ý nghĩa và khả năng áp dụng thực tiễn
H.264 là chuẩn nén cơ bản sẽ được sử dụng rất phổ biến trong các thiết bị di động
trong tương lai. Thị trường engine phần mềm nén, giải nén H.264 vẫn còn lớn, vẫn
còn chỗ dành cho chúng ta. Việc lựa chọn H.264 là bước khởi đầu thích hợp và có
định hướng phát triển lâu dài.
Những thông số về thị trường nội dung và thiết bị multimedia ở trên đã cho ta
thấy được phần nào tiềm năng của lĩnh vực thiết bị multimedia nhúng. Việt Nam
không thể bỏ lỡ cơ hội để dành được phần của mình trong miếng bánh lợi nhuận
khổng lồ này.
Hiện tại Việt Nam chỉ có một số nhà sản xuất, thiết bị nhỏ lẻ như Tiến Đạt, VTB
v.v Các nhà sản xuất này chủ yếu làm công tác lắp ráp, tiếp thị bán hàng, giá trị gia
tăng tạo ra thấp. Thị trường thiết bị multimedia của Việt Nam hiện đang do các nhãn
hiệu nước ngoài chiếm lĩnh, phần chia của chúng ta trong miếng bánh hiện rất ít, hầu
như không có. Chúng ta không có đủ tiềm lực tài chính và kinh nghiệm để có được
23

những tập đoàn bao trùm chuỗi cung ứng để mang lại lợi nhuận khổng lồ như

Samsung. Ta chỉ có đủ sức để đầu tư vào một nhóm nhỏ các mắc xích cung ứng.
Với thế mạnh và đặc điểm của con người Việt Nam, việc hướng đến trở thành các
Nhà Cung Cấp Phần Mềm Lõi ( Middleware Provider ) là một lựa chọn khôn ngoan
và thích hợp :
Phần mềm là thế mạnh của con người Việt Nam
Chi phí phát triển phần mềm chủ yếu là đầu tư cho con người, không cần
phải đầu tư nhiều tài chính, phù hợp với điều kiện tài chính của Việt Nam
Giá trị gia tăng tạo được rất cao vì bản quyền phần mềm trong lĩnh vực
này thường được tính trên đầu thiết bị. Ví dụ nếu giá một engine decoder
H.264 giá 2 USD/thiết bị. Engine này được nạp vào 100.000 thiết bị thì
tiền bản quyền thiết bị là 200.000 USD

24

CHƢƠNG 2 : NẾN TẢNG NEXPERIA TRIMEDIA


Giới thiệu về kiến trúc xử lý, nguyên lý biên dịch chương trình trên chip thuộc dòng
Trimedia - kiến trúc hệ thống trên hệ điều hành hỗ trợ lập trình nhúng là pSOS

2.1 Tổng quan dòng Trimedia
TriMedia là một chip xử lý media thuộc họ VLIW (Very Long Instruction
Word) của nhà sản xuất thiết bị bán dẫn NXP (tiền thân là công ty Philips
Semiconductors). CPU của TriMedia có kiến trúc Harvard được trang bị bộ xử lý tín
hiệu số DSP (Digital Signal Processor) và nhiều phương thức hỗ trợ tốt cho việc xử lý
luồng audio và video. Để tối ưu hóa khả năng thực thi chương trình trên chip
TriMedia, ta chỉ có thể sử dụng ngôn ngữ C/C++
1
, trái lại với các chip xử lý họ
VLIW/DSP khác ta buộc phải dùng mã assembly.

Việc lập trình cấp cao trên TriMedia được thực hiện dựa trên một tập register
thống nhất và một tập chỉ thị lệnh song song, trong đó các phương thức tựa RISC
(Reduced Instruction Set Computer – tập chỉ thị lệnh rút gọn) có thể được lập lịch độc
lập với các slot VLIW.
Thị trường mục tiêu của TriMedia là các sản phẩm multimedia (Hình 2-1). Các
sản phẩm thành công sử dụng chip TriMedia có thể kể đến là: đầu DVD, TV kỹ thuật
số, hệ thống bảo mật bằng video, video mail, mạng gia đình, internet radio, và hệ
thống biên tập video. Ngoài ra còn có rất nhiều sản phẩm tiềm năng khác vì TriMedia
có tính linh hoạt và cho phép lập trình tự điều khiển tốt.

1
Xem các bước biên dịch tại Hình 2-7
25


Hình 2-1 : Các sản phẩm sử dụng chip TriMedia
2.2 Các tính năng chính của TriMedia
 5 đến 8 issue slot chứa 45 đơn vị xử lý chức năng
 128 register 32-bit dùng cho mục đích thông thường
 Phương thức DSP và SIMD
 Xử lý dấu chấm động 32-bit theo chuẩn IEEE 754
 Cache lưu chỉ thị lệnh kích thước 8/16/32/64 KB
 Cache lưu dữ liệu kích thước 8/16/32/64 KB
 Bộ nhớ độc lập và interface các bus ngoại vi
 8 bộ timers
 64 ngắt dạng vectơ
 Hỗ trợ bộ biên dịch ANSI C/C++
2.3 Lịch sử phát triển
TriMedia đầu tiên được giới thiệu vào năm 1987 dưới cái tên LIFE-1 VLIW,
bởi Gerrit Slavenburg và Junien Labrouse. Trong nhiều năm sau đó, LIFE được phát

triển dưới sự bảo hộ của Philips và sự dẫn dắt của Gerrit Slavenburg. Kết quả cho ra

×