Đâycũng là chuẩn mã hóa video được sử dụng nhiều nhất hiện nay trong nhiềungành công nghiệp như DVD/BD, HDTV, Youtube, các ứng dụng streaming,truyền hình, lưu trữ video, v.v.... Mục tiêu
Trang 1ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
❊
TRẦN NGUYỄN THANH LÂN
XÂY DỰNG LÕI IP H264 VIDEO ENCODER CHO CÁC ỨNG DỤNG NHÚNG SỬ DỤNG SOC TRÊN NỀN TẢNG FPGA
DESIGN IP CORE H264 VIDEO CODEC SOLUTION FOR EMBEDDED APPLICATION USING FPGA WITH SOC
Chuyên ngành: Khoa Học Máy Tính
LUẬN VĂN THẠC SĨ
TP Hồ Chí Minh, tháng 08 năm 2021
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠITRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG TP.HCM
Cán bộ hướng dẫn khoa học: PGS TS PHẠM QUỐC CƯỜNG
2 Thư ký hội đồng: TS Lê Trọng Nhân
3 Phản biện 1: PGS TS Đinh Đức Anh Vũ
4 Phản biện 2: TS Bùi Trọng Tú
5 Ủy viên: PGS TS PHẠM QUỐC CƯỜNG
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng khoa quản lý chuyênngành sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA
KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập - Tự Do - Hạnh Phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Trần Nguyễn Thanh Lân MSHV: 1870173
Ngày, tháng, năm sinh: 19/09/1993 Nơi sinh: Bình ThuậnChuyên ngành: Khoa học Máy tính Mã số: 8480101
1 TÊN ĐỀ TÀI:
XÂY DỰNG LÕI IP H264 VIDEO ENCODER CHO CÁC ỨNG DỤNG NHÚNG SỬDỤNG SOC TRÊN NỀN TẢNG FPGA
2 NHIỆM VỤ VÀ NỘI DUNG:
Tìm hiểu bài toán kết hợp bộ Encoder H.264 trên các thiết bị hiện đại nói chung vàFPGA nói riêng Tiến hành nghiên cứu về chuẩn mã hóa video H.264/AVC và các mãnguồn hiện thực encoder của chuẩn H.264 Sử dụng bộ công cụ HLS của Xilinx để xâydựng phần cứng tăng tốc phần mềm encoder H.264, kết hợp so sánh hiệu quả của giảipháp HLS với giải pháp hiện tại trên nền tảng FPGA
3 NGÀY GIAO NHIỆM VỤ: 22/02/2021
4 NGÀY HOÀN THÀNH NHIỆM VỤ: 13/06/2021
5 CÁN BỘ HƯỚNG DẪN: PGS.TS Phạm Quốc Cường
Trang 4Lời Cảm Ơn
Lời đầu tiên, tôi muốn gửi lời cảm ơn chân thành đến thầy PGS.TS Phạm QuốcCường đã hướng dẫn và giúp đỡ tôi trong thời gian thực hiện đề tài luận văntốt nghiệp lần này Những lời nhận xét, góp ý và hướng dẫn của Thầy đã giúptôi có hướng đi đúng trong quá trình thực hiện đề tài, giúp tôi thấy được nhữngthuận lợi và hạn chế của các phương pháp tiếp cận khác nhau và từng bước khắcphục để ngày một tốt hơn
Tiếp theo tôi muốn gửi lời cảm ơn đến những bạn học viên trong phòng thínghiệm Kỹ Thuật Máy Tính, từ các bạn sinh viên đến những bạn trợ giảng đã
hỗ trợ tôi rất nhiều trong quá trình tiếp cận với luận văn này
Đồng thời tôi cũng muốn gửi lời cảm ơn sâu sắc đến gia đình và bạn bè đãđộng viên, cổ vũ tinh thần và góp ý trong suốt quá trình học tập và thực hiện
đề tài, đặc biệt là gia đình đã chăm lo và hy sinh rất nhiều để tôi có thể chuyêntâm học tập
Sau cùng, tôi xin kính chúc quý Thầy Cô trong khoa Khoa Học và Kĩ ThuậtMáy Tính thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh caođẹp của mình là truyền đạt kiến thức cho thế hệ mai sau
Thành phố Hồ Chí Minh, 07/2021
Trần Nguyễn Thanh Lân
Trang 5Tóm Tắt
H.264 là một trong những chuẩn mã hóa video phổ biến nhất hiện nay, nó đượcđồng phát triển bởi hai nhóm chuyên gia về mã hóa video là ITU-T VCEG(Video Coding Experts Group) và MPEG (Moving Picture Experts Group).Video ở định dạng 1080 và thậm chí 4K sau khi được nén bới H.264 có dunglượng nhỏ, phù hợp cho việc lưu trữ và truyền tải qua các mạng internet Đâycũng là chuẩn mã hóa video được sử dụng nhiều nhất hiện nay trong nhiềungành công nghiệp như DVD/BD, HDTV, Youtube, các ứng dụng streaming,truyền hình, lưu trữ video, v.v
Với việc thiết kế ngày càng trở nên phức tạp, ngôn ngữ đặc tả phần cứutruyền thống (HDLs) như VHDL hay Verilog ngày càng trở nên khó khăn đểbắt kịp các thiết kế này Giải pháp được đưa ra là sử dụng một loại ngôn ngữ cấpcao hơn để đặc tả phần cứng High-Level Synthensis (HLS) là một một phươngpháp sử dụng ngôn ngữ lập trình C/C++ để đặc tả phần cứng và tự động sinh
ra HDL Điều này khiến mã nguồn trở nên dễ hiểu hơn và giảm đi thời gian sửdụng để hiện thực các thiết kế
Đề tài luận văn này sử dụng board FPGA Ultra96-V2 để tạo nên một bảnhiện thực bộ mã hóa H.264 dựa trên nền tảng HLS để tối ưu hóa tốc độ vàthời gian tính toán trên nền tảng hệ điều hành Linux Mã nguồn H.264 encodertrong đề tài này một bản mã nguồn mở của cộng đồng và đã được dùng trongnhiều phiên bản Linux khác nhau Mục tiêu của đề tài này là dựa trên nền tảngđang có sẵn để tăng tốc độ xử lý H.264 trên board FPGA, kết quả của của đềtài cho thấy các thành phần được tối ưu của bộ mã hóa H.264 có tốc độ và hiệunăng cao hơn so với ban đầu
Trang 6H.264, one of the most popular video coding standards, is co-developed by
ITU-T VCEG (Video Coding Experts Group) and MPEG (Moving Picture ExpertsGroup) from ISO/IEC JTC1 Videos (1080p and even 4K) compressed by H.264are relatively easier to save, compress, and deliver via the network And it is themost accepted codec implemented in almost all multimedia industries includingDVD/BD, HDTV, YouTube video, live streaming, broadcasting, video recording,etc
As designs become more and more complex, traditional hardware (HW) scription languages (HDLs), such as Very High Speed Integrated Circuit Hard-ware Description Language (VHDL) or Verilog, cannot be used to present thedesigns without increasing effort The solution for this is a higher abstractionlanguage for describing HW High-Level Synthesis (HLS) is a way of using aprogramming language like C or C++ to describe the HW and automaticallygenerating the HDL from it This makes the code easier to understand anddecreases the time used for implementing the design
de-This Thesis uses Ultra96-V2 to create an HLS-based implementation of H.264library for Linux on a Field Programmable Gate Array (FPGA) The objective
is to accelerate the processing speed of this library on Ultra96-V2 board usingevery available methods like: HLS, memory access optimization, kernel optimiza-tion Compared to the existing H.264 Video Encoding libraries for Linux, resultsindicate that those special H264 libraries and applications could fully show theiradvantages in high-speed and flexibility
Trang 7Lời cam đoan
Tôi là Trần Nguyễn Thanh Lân, học viên cao học khoa Khoa Học và Kĩ ThuậtMáy Tính, Đại học Bách Khoa TP HCM, MSHV 1870173 Tôi xin cam đoanrằng luận văn thạc sĩ "Xây dựng và bộ lõi IP cho H264 video encoder cho cácứng dụng nhúng trên FPGA" là kết quả tìm hiểu, nghiên cứu độc lập của chínhbản thân Tôi xin cam đoan:
1 Luận văn được thực hiện cho mục đích tìm hiểu và nghiên cứu ở bậc caohọc
2 Các công trình, bài báo tham khảo để xây dựng nên luận văn này đều đượctrích dẫn, tham khảo Tất cả các tài liệu được trích dẫn và có tính kế thừa
từ các tạp chí và các công trình nghiên cứu đã được công bố
3 Những công cụ, phần mềm cho quá trình thực hiện luận văn đều là phầnmềm mã nguồn mở
4 Hình ảnh và số liệu được trích dẫn nguồn tham khảo rõ ràng
5 Kết quả nghiên cứu được trình bày trung thực dựa trên số liệu thực tế khichạy chương trình
TP.HCM, ngày 21 tháng 7 năm 2021
Học viên
Trần Nguyễn Thanh Lân
Trang 8Mục lục
1.1 Đặt vấn đề 1
1.2 Thiết lập mục tiêu 4
1.3 Kết quả đạt được 5
1.4 Cấu trúc của luận văn 5
2 Cơ sở lý thuyết 7 2.1 Tổng quan về Digital Video 7
2.1.1 Frames và Fields 7
2.1.2 Color Spaces 10
2.1.3 Định dạng và chất lượng của video 13
2.1.4 Video CODEC 15
2.2 Chuẩn mã hóa video H.264/AVC 16
2.2.1 Các cú pháp trong H.264 17
2.2.2 Profiles và Levels 19
2.2.3 Các công đoạn của bộ mã hóa H.264 21
2.2.4 Công đoạn dự đoán 22
2.2.5 Biến đổi và lượng tử hóa 27
2.2.6 Bộ lọc tách khối 28
2.2.7 Quy trình mã hóa 29
3 Các công trình nghiên cứu liên quan 30 3.1 Giải pháp cho doanh nghiệp trên thị trường 30
3.1.1 Lõi IP phát triển bởi Atria Logic Inc 30
Trang 9MỤC LỤC
3.2.1 Xây dựng bộ giải mã CAVLC trên FPGA 33
3.2.2 Hiện thực quá trình intraprediction cho HEVC trên FPGA 34 3.2.3 Xây dựng bộ lọc nội suy cho khối Intraprediction trên FPGA 34 3.3 Kết luận 35
4 Phương pháp giải quyết vấn đề 37 4.1 Những mã nguồn H.264 đã được chứng nhận 37
4.2 Phương thức tiếp cận 38
4.2.1 Phân tích các thành phần mã nguồn 39
4.2.2 Xác định những vùng mã nguồn tiêu tốn hiệu năng tính toán 42
4.2.3 Xây dựng ứng dụng trên bộ phần mềm của Xilinx 43
5 Kết quả thực nghiệm 49 5.1 Tiến hành thực nghiệm và đánh giá kết quả 49
5.1.1 Tối ưu hóa mã nguồn 49
5.1.2 Tổng hợp các khối IP thành hệ thống hoàn chỉnh 53
5.2 Kết luận 56
6 Kết luận 57 6.1 Kết quả đạt được 57
6.2 Hướng nghiên cứu tiếp theo 58
Lý lịch trích ngang
Trang 10Danh sách hình vẽ
1.1 Video Coding trong thực tế - 1 chiều (1) 2
1.2 Video Coding trong thực tế - 2 chiều (1) 3
2.1 Một frame cảnh được lấy mẫu (1) 8
2.2 Top field của cảnh được lấy mẫu (1) 9
2.3 Bottom field của cảnh được lấy mẫu (1) 9
2.4 Ảnh gốc ban đầu 10
2.5 Ảnh sau khi được tách xuất thành 3 channel riêng biệt 11
2.6 Ảnh sau khi được tách xuất thành 3 thành phần Y:Cr:Cb 12
2.7 Block diagram của video encoder (1) 16
2.8 Các quy trình hoạt động của chuẩn mã hóa H.264(1) 17
2.9 Các lớp cú pháp của H.264 (1) 18
2.10 Đặc điểm của các loại profiles trong H.264 (2) 20
2.11 Sơ đồ khối của bộ mã hóa H.264 (2) 21
2.12 Các loại Macroblock và cách dự đoán (1) 23
2.13 Các hướng dự đoán của luma 4x4 prediction (1) 24
2.14 Các cách chia nhỏ MB (1) 24
2.15 Ví dụ về motion vector trong interprediction (1) 26
3.1 Giải pháp IP core cho chuẩn mã hóa H.264 của Atria (3) 31
3.2 Lõi IP cứng H.264 của Atria (3) 32
3.3 Sơ đồ khối lõi IP mềm H.264 của Atria(4) 32
3.4 Sơ đồ khối của bộ giải mã hỗn loạn (entropy decoder) (5) 33 3.5 Phương pháp HLS các vòng lặp của bộ intraprediction HEVC (6) 34
Trang 11DANH SÁCH HÌNH VẼ
4.1 Sơ đồ hoạt động của mã nguồn JM (1) 38
4.2 Các khối cơ bản trong mã nguồn x264 39
4.3 Các hàm chính trong khối Filter x264 40
4.4 Các hàm chính trong khối Analysis x264 41
4.5 Các hàm chính trong khối Encode x264 41
4.6 Các hàm chính trong khối Entroy Encoding x264 42
4.7 Kết quả của perf cho x264 43
4.8 Hình mẫu ứng dụng HLS trên FPGA 44
4.9 Sử dụng kỹ thuật loop unroll cho một đoạn mã nguồn 45
4.10 Giao diện làm việc Vitis HLS 45
4.11 Kết quả thiết kế các khối IP 46
4.12 Cấu hình phần cứng vừa xây dựng trong petalinux 47
4.13 Tinh chỉnh kernel Linux 47
4.14 Tinh chỉnh cấu hình của rootfs 48
5.1 So sánh kết quả của các kỹ thuật tối ưu cho hàm pixel_avg_16x16 50 5.2 So sánh kết quả của các kỹ thuật tối ưu cho hàm pixel_sad_16x16 51 5.3 So sánh kết quả của các kỹ thuật tối ưu cho hàm pixel_ssd_16x16 52 5.4 So sánh kết quả của các kỹ thuật tối ưu cho hàm quant_4x4x4 52
5.5 Kết quả sau khi tổng hợp trên Vivado 53
5.6 Kết quả chi tiết tương ứng 54
5.7 Board boot thành công trên Linux và có các khối IP 55
Trang 12Danh sách bảng
2.1 CIF Video Frame Format (1) 13
2.2 HD Video Format (1) 14
5.1 Bảng so sánh thời gian thực hiện từng hàm 56
5.2 Bảng so sánh thời gian khi chạy toàn hệ thống 56
Trang 13Để phục vụ nhu cầu ứng dụng video ngày một tăng cao cả về số lượng cũngnhư chất lượng video, các chuẩn nén video lần lượt được cho ra đời InternationalTelecommunication Union (ITU-T) và Moving Pictures Expert Group (MPEG)
đã cùng hợp tác thành một nhóm thống nhất có tên Joint Video Team (JVT)
để làm việc trên một chuẩn video mới, có tên gọi H.264, H.264/AVC AdvancedVideo Coding, hay còn được biết đến với cái tên MPEG-4 part 10, đây là mộtchuẩn coding có thể đạt được độ tối ưu cao hơn với độ phức tạp chi tiết đơngiản hơn những chuẩn ra đười trước đó, đồng thời nó còn tương thích với tất cảchuẩn kết nối internet và kiến trúc truyền nhiều phương tiện một lúc (multiplexarchitecture) (2) Hiện nay, chuẩn H.264 vẫn là một trong những chuẩn codec
Trang 14CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
hoàn hảo nhất và có khả năng ứng dụng trong nhiều lĩnh vực cả mới và cũ baogồm họp trực tuyến, truyền hình ảnh, live video stream, v.v đồng thời phùhợp với nhiều loại kết nối và chuẩn truyền tải
Hình 1.1: Video Coding trong thực tế - 1 chiều (1)
Bắt đầu từ năm 2008, công nghệ H.264 đã được áp dụng vào ngành cameragiám sát để tăng thời gian lưu trữ và đáp ứng các tiêu chuẩn video độ nét cao FullHD1080P Đến nay toàn bộ các sản phẩm camera và đầu ghi hình của các hãngđều đã được tích hợp chuẩn nén hình H.264 do nhu cầu phát triển của ngành vàcác chi phí cho ổ cứng lưu trữ đã được giảm đi đáng kể Ngoài ra H.264 còn cótrong dịch vụ phát video trực tuyến như Youtube, Vimeo, iTunes Store, v.v .Các phần mềm web như Adobe Flash, Microsoft Silverlight, HTML, v.v Nócòn được sử dụng trong các dịch vụ truyền hình HDTV mặt đất (ATSC, ISDB-T,DVB-T, DVB-T2), cáp (DVB-C) và vệ tinh (DVB-S và DVB-S2)
Tuy được sử dụng rộng rãi trong nhiều ứng dụng, bản thân H264 cũng mangđến những khó khăn nhất định dành cho những nhà nghiên cứu và phát triểnsản phẩm H.264/AVC sử dụng những giải thuật phức tạp hơn để đạt được tỉ
lệ nén vượt trội so với những chuẩn nén trước đó (1) Năng lượng tiêu thụ, cáccổng luận lý được sử dụng, chi phí thiết kế và độ khả biến (flexibility) là những
Trang 15CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
Hình 1.2: Video Coding trong thực tế - 2 chiều (1)
H.264/AVC codec Thế nhưng đây cũng là yêu cầu của thị trường và công nghệngày nay, khi mà nhu cầu về chất lượng video và số lượng người dùng ngày càngtăng cao Điều đó khiến cho các hãng sản xuất, nhà nghiên cứu, phát triển sảnphẩm tiêu tốn không ít chi phí vào cuộc chơi này Bản chất của hiệu năng vượttrội của H.264 khiến nó có độ phức tạp cao không kém, và đó trở thành mộttrở ngại chính dành cho các kỹ sư và nhà thiết kế khi phải làm việc, phát triểncác phần mềm tương tác với một bộ H.264 codec H.264 có nhiều lựa chọn tùychỉnh và thông số đầu vào (control knobs) hơn hẳn so với các chuẩn nén trước
đó Tinh chỉnh các tùy chỉnh và thông số phù hợp cho một ứng dụng không phải
là một việc dễ dàng, làm chính xác thì H.264 sẽ đưa ra được một kết quả nénvới hiệu năng vượt trội, nhưng nếu sai thì kết quả sẽ là những thước video cóchất lượng tệ hại và hiệu năng đường truyền (bandwidth efficiency) thấp (2).Ngoài ra, H.264 còn có đặc điểm là hao tổn tính toán rất cao (computationalexpensive), vì thế ảnh hưởng đến tốc độ xử lí khi encode/decode và mức tiêuthụ năng lượng lớn
Lĩnh vực IoT và Embedded System hiện nay cũng không ngoại lệ khi nhu cầu
sử dụng video ngày càng tăng cao, vì thế các ứng dụng của H.264/AVC xuấthiện ngày càng nhiều Thế nhưng bên cạnh độ phức tạp của chính H.264/AVC,bản chất của các sản phẩm IoT hay Embedded System đều đặt nặng tính thờigian thực (Real-time), điều đó đòi hỏi hiệu năng xử lý cao không chỉ của quytrình nén mà cả những hàm thao tác trước và sau khi nén ví dụ như: scale,filter, deinterlacing, v.v Những đặc tính đó khiến FPGA là một giải phéphoàn toàn thích hợp cho các ứng dụng truyền tải video trong lĩnh vực nhúng.FPGA với các phần cứng khả cấu hình là một giải pháp có chi phí thấp, tính
Trang 16CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
linh động cao, đồng thời cung cấp khả năng xử lý song song trong việc convert(transcode) các chuẩn truyền tải khác nhau, đáp ứng đầy đủ các nhu cầu củatruyền tải video trong lĩnh vực nhúng (8)
Qua những lí do nêu trên, ta có thể thấy chi phí để đầu tư nghiên cứu và pháttriển một bộ H.264 codec là rất lớn, vì thế rất ít công ty lựa chọn tự phát triểnmột bộ codec cho riêng mình mà sẽ đi tìm những giải pháp đã có sẵn trên thịtrường Và trên thực tế, hiện nay thị trường đã xuất hiện nhiều doanh nghiệpthiết kế và sản xuất thành công các giải pháp cho H.264 với nhiều loại sản phẩm
đa dạng Về software, các công ty lớn như Apple, Adobe System, Intel, x264,Sony v.v đều đã sản xuất những bộ H.264 codec riêng cho các sản phẩm củamình và cung cấp chúng ra thị trường, tuy vậy không phải thiết bị phần cứngnào cũng có thể sử dụng chúng theo nhu cầu Về hardware, đã có nhiều sảnphẩm trên thị trường như: lõi IP (Intellectual Property core) cả cứng và mềmdành cho các thiết bị ASIC hoặc FPGA, chips đơn H.264 encoder/decoder dànhriêng cho các thiết bị SoC
1.2 Thiết lập mục tiêu
Truyền tải video là một lĩnh vực màu mỡ và đầy tiềm năng, với nhu cầu ngàycàng tăng, đặc biệt là trong Embedded và IoT Như đã đề cập ở trên, sử dụngFPGA là một trong những giải pháp hợp lí nhất cho việc ứng dụng H.264 vàotrong lĩnh vực Embedded Trên thị trường hiện nay đã có nhiều sản phẩm IPcore cho FPGA và SoC của các công ty thiết kế chips, từ soft IP core cho đếnhard IP core, tuy vậy chi phí cho một bộ IP core là vô cùng lớn Vì thế, đề tàiluận văn này sẽ đi sâu vào hướng thiết kế, phát triển và cải thiện hiệu năng chomột lõi IP mềm (soft IP core) trên một thiết bị MPSoC FPGA của Avnet cótên Ultra96-v2 (9) Trong đó, phần thứ nhất chứa lõi xử lý cứng xây dựng trênchip ARM Cortex-A53, cho phép thực thi những hệ điều hành và chương trìnhứng dụng phức tạp Phần thứ hai cho phép người dùng tùy biến cấu hình vàthực hiện nhiều thiết kế IP trên thành phần này
Bài nghiên cứu này có tham khảo qua một số bài báo trên IEEE về thiết kế
Trang 17CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
và giúp tương thích với phần cứng sử dụng Mục đích của bài nghiên cứu là xâydựng một giải pháp lõi IP H.264 encoder dựa trên nền tảng mã nguồn mở vàcác ứng dụng chạy trên vi xử lý ARM Cortex, kết hợp giữa phần CPU trên SoC
và các lõi IP được xây dựng trên khối khả cấu hình của FPGA
Vì một số quy trình tiếp cận cũng như ràng buộc về thời gian, nền tảng củacông nghệ, nghiên cứu này sẽ sẽ tập trung vào việc phân tích mã nguồn bộ mãhóa H.264, sau đó sử dụng bộ phần mềm của Xilinx để thử nghiệm, hiện thực
và kiểm thử những mô hình HLS tối ưu từng thành phần của quá trình mã hóavideo
1.3 Kết quả đạt được
Trong nghiên cứu này, các chi tiết về quá trình mã hóa video sẽ được đề cậpqua, tương ứng với đó là phân tích những phần mã nguồn tương ứng với các quátrình đó Các thành phần mã nguồn có hao tổn tính toán lớn sẽ được tìm ra vàđưa vào bộ phần mềm Xilinx, sau đó sử dụng các kỹ thuật tối ưu để tăng tốc
và xây dựng thành một khối IP trên khối khả cấu hình của FPGA bằng ngônngữ đặc tả phần cứng HLS Các khối tăng tốc phần cứng sau đó sẽ được kết nốilại với khối xử lý CPU của FPGA để tạo thành một hệ thống hoàn chỉnh
Đề tài sẽ so sánh tốc độ và hiệu năng của từng phần được tăng tốc riêng biệt,đồng thời điều khiển và sử dụng chúng trên nền tảng hệ điều hành Linux bằngcác giao thức drivers của Xilinx cung cấp để tạo thành một khối lõi IP hoànhchỉnh
1.4 Cấu trúc của luận văn
Cấu trúc của báo cáo được tổ chức như sau:
• Chương 1 - Giới thiệu vấn đề: nhằm giới thiệu tổng quan về bái toán mãhóa video và phương pháp giải quyết
• Chương 3 - Cơ sở lý thuyết: trình bày những lý thuyết liên quan được sửdụng trong bài nghiên cứu
Trang 18CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
• Chương 2 - Các nghiên cứu liên quan: bao gồm các công trình nghiên cứuliên quan đến việc hiện thực hóa các quy trình của bộ mã hóa H.264 trênnền tảng FPGA
• Chương 4 - Phương pháp tiếp cận: phân tích đặc điểm của mã nguồ và trìnhbày cụ th ểphương pháp đề xuất và cách thức quy trình hoạt động
• Chương 5 - Kết quả thực nghiệm: là kết quả đánh giá của phương pháp đềxuất và so sánh với các phương pháp khác
• Chương 6 - Kết luận: nêu ra các kết luận đúc kết được trong quá trìnhnghiên cứu và hướng phát triển tiếp theo trong tương lai
Trang 192.1 Tổng quan về Digital Video
Video số (digital video) là sự diễn tả một đoạn video tự nhiên trong thế giớithực thông qua lấy mẫu (sampling) Thường thì những cảnh vật sẽ được lấymẫu trong một khoảng thời gian nhất định để tạo thành một frame hoặc field
ở chính thời điểm đó Lấy mẫu thường được lặp lại sau một khoảng thời gian(thường là 1/25 hoặc 1/30 giây) để tạo thành một đoạn video chuyển động Mộtđoạn video tự nhiên thường bao gồm nhiều đối tượng (object) khác nhau, từngđối tượng đó mang những đặc điểm riêng về hình dạng, độ sâu, cấu trúc riêngbiệt Màu sắc và độ tương phản của một đoạn video tự nhiên cũng liên tục thayđổi Cùng với sự thay đổi về ánh sáng, góc quay camera, những đặc điểm trêncủa một đoạn video tự nhiên ảnh hưởng rất lớn đến việc xử lý và mã hóa video
2.1.1 Frames và Fields
Như đã đề cập ở trên, một đoạn video có thể được tạo bằng cách lấy mẫu mộtchuỗi những frames, gọi là progressive sampling, hoặc bằng những đoạn fields
Trang 20CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
xen kẽ (interlaced), cách lấy mẫu này có tên interlaced sampling
Hình 2.1: Một frame cảnh được lấy mẫu (1)
Trong một đoạn interlaced video, một nửa dữ liệu trong một frame sẽ đượcchứa trong một field Một filed thường sẽ chứa toàn bộ những dòng lẻ (odd-numbered lines) hoặc dòng chẵn (even-numbered lines) của một frame hoànchỉnh và vì vậy, một đoạn video interlaced sẽ chứa một chuỗi nhiều fields để tạothành một video hoàn chỉnh Ưu điểm của cách lấy mẫu video này là nó tạo ra
số lượng fields gấp đôi số lượng frames trong cùng một đoạn thời gian, điều đógiúp cho các chuyển động trong video được lưu trữ trở nên mượt mà hơn
Trang 21CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.2: Top field của cảnh được lấy mẫu (1)
Hình 2.3: Bottom field của cảnh được lấy mẫu (1)
Điều quan trọng cần chú ý rằng một đoạn digital video có thể được lưu trữ(capture) và trình chiếu (play back) bằng cả hai phương pháp progressive vàinterlaced Vì thế, một video được lưu trữ bằng phương pháp interlaced phảiđược biến đổi (convert) nếu muốn trình chiếu theo phương pháp progressive
Trang 22CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1.2 Color Spaces
Tất cả các ứng dụng lúc hiển thị đều phụ thuộc vào màu sắc của video và vìthế, cần có một phương thức để thu giữ và hiển thị thông tin màu sắc của đoạnvideo Những đặc tính của video bao gồm độ tương phản (brightness), độ chóisáng (luminance - luma) và màu sắc được thể hiện qua các những phương thức
có tên là không gian màu (color spaces)
RGB
Đây là không gian màu được phổ biến rộng rãi nhất và là không gian màuphù hợp nhất để lưu trữ hình ảnh Trong không gian màu này, màu sắc của mỗibức ảnh được thể hiện bằng ba con số tương ứng với thành phần Đỏ (Red),Xanh lá (Green) và Xanh da trời (Blue) Kết hợp ba thành phần này với nhaubằng các giá trị khác nhau có thể tạo ra bất cứ màu sắc nào Đồng thời, mộtbức ảnh cũng có thể được tách xuất ra làm ba thành phần khác nhau Thànhphần Red chỉ bao gồm những mẫu có màu đỏ, tương tự với Blue và Green
Hình 2.4: Ảnh gốc ban đầu
Trang 23CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.5: Ảnh sau khi được tách xuất thành 3 channel riêng biệt
Để lưu trữ được hình ảnh trong không gian màu RGB cần lọc ra các thànhphần màu đỏ, xanh lá và xanh dương của cảnh vật là lưu trữ bằng các cảm biếnriêng biệt
YCrCb
Không gian màu này ra đời vì bản chất hệ thị giác của con người nhạy cảmvới độ chói (luminance) hơn so với màu sắc Thay vì lưu trữ thành phần màusắc riêng biệt và ngang bằng như trong không gian màu RGB, hình ảnh có thểđược thể hiện hiệu quả hơn bằng cách tách biệt độ chói ra khỏi thông tin màusắc Y:Cr:Cb là một không gian màu nổi tiếng về khả năng tái hiện màu sắcmột các hiệu quả, với Y là thành phần luminance và có thể tính bằng số bìnhquân gia quyền (weighted average) của nhân tố R, G và B:
với k là trọng số (weighted factors)
Thông tin màu sắc có thể được biểu diễn bằng thành phần khác biệt màu sắc(chrominance - chroma), với mỗi thành phần chrominance được tính bằng hiệu
Trang 24CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
của của R, G, B và luminance Y:
Hình 2.6: Ảnh sau khi được tách xuất thành 3 thành phần Y:Cr:Cb
Đến đây có thể thấy, cách thể hiện màu này có nhiều thông số hơn so vớiRGB vì sử dụng đến 4 thành phần thay vì chỉ 3 thành phần R, G và B Tuynhiên,Cr + Cb + Cg là hằng số nên trong không gian màu Y:Cr:Cb chỉ các thànhphần luma Y, red chroma Cr, blue chrom Cb được lưu trữ và truyền tải Ưuđiểm của không gian màu này là thành phần chroma có thể được hiển thị ở độphân giải thấp hơn thành phần luma vì thị giác con người vốn nhạy cảm vớiluma hơn là màu sắc Điều này mang ý nghĩa rất lớn vì có thể giảm lượng dữ
Trang 25CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
xử lý video trở nên đơn giản hơn nhưng không hề mất đi độ hiệu quả
Một bức ảnh RGB sau khi được chụp có thể được convert sang không gianmàu Y:Cr:Cb để giảm thiểu dung lượng và tiêu hao truyền tải (ví dụ trườnghợp truyền qua mạng internet) Trước khi hiển thị, bức ảnh sẽ lại được convert
về không gian màu RGB Công thức chuyển đổi giữa hai không gian màu nhưsau (1):
2.1.3 Định dạng và chất lượng của video
Thuật toán mã hóa video của chuẩn H.264 có khả năng mã hóa nhiều loạiđịnh dạng video frame (video frame format) khác nhau Bảng 3.1 dưới đây liệt
kê những định dạng video trung bình (Common Intermediate Format - CIF)phổ biến Xếp trên chất lượng trung bình và từng có độ phổ biến rộng rãi, nhất
Format Luminance Resolution Bits per frame (4:2:0, 8 bits mỗi sample)
Trang 26CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
là trong xử lí video cho thiết bị TV chính là định dạng tiêu chuẩn (StandardDefinition) có tên ITU-Recommendation BT.601-5 (10) Theo định dạng này,thành phần luminance được lấy mẫu với tần số 13.5MHz và thành phần chromi-nance là 6.75MHz để tạo thành tín hiệu 4:2:2 Y:Cr:Cb Chất lượng cao hơn SD
và hiện đang được sử dụng nhiều nhất trong các ứng dụng ngày nay đó chính
là định dạng High Definition (HD) Bảng 3.2 dưới dây liệt kê những định dạngphổ biến, dễ tương thích với các thiết bị và đặc điểm của chúng
Format Progressive / Interlaced Horizontal Pixels Vertical Pixels Frames / Fields mỗi giây
Đánh giá chất lượng của video được trình chiếu cho người dùng cũng là mộtvấn đề đáng lưu tâm, tuy vậy đo lường chất lượng hình ảnh là một thao tác khókhăn và nhiều khi thiếu chính xác do có nhiều nhân tố có thể ảnh hưởng đếnkết quả Đánh giá chủ quan (Subjective quality measurement) phụ thuộc vàonhiều yếu tố chủ quan như cảm nhận người dùng, không gian, thiết bị, v.v Ngược lại, phương pháp đánh giá khách quan (Objective quality measurement),
có thể đưa ra những kết quả cụ thể với những tiêu chuẩn rõ ràng, tuy không thểtái hiện được cảm nhận của người xem như đánh giá chủ quan Có nhiều thuậttoán và tiêu chuẩn để đánh giá khách quan chất lượng của một thước video,
và được sử dụng rộng rãi nhất để đo lường chính là Peak Signal to Noise Ratio
Trang 27CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
một thuật toán mới có thể cải thiện được những hạn chế của PSNR, tuy vậyvới đặc điểm tính toán nhanh và gọn, PSNR vẫn là một tiêu chuẩn phổ biến để
so sánh chất lượng của những video trước và sau khi mã hóa Kkhi so sánh cácvideo với nhau, giá trị PSNR càng cao chứng tỏ chất lượng của thước video đócàng cao, công thức tính PSNR như sau:
so sánh có trải qua mất mát trong quá trình lưu trữ Đã có nhiều tiêu chuẩnkhác được giới thiệu như Just Noticeable Difference (JND), Digital Video Qual-ity (DVQ), Structual SIMilarity index (SSIM), PSNRplus và Predicted MeanOpinion Score (MOSp) (11)(12)(13) Những tiêu chuẩn đánh giá này có nhữngkết quả khác nhau, với độ tương đương dao động từ 70% đến 90% khi so sánhgiữa tiêu chuẩn đánh giá chủ quan và khách quan (1)
2.1.4 Video CODEC
Quá trình mã hóa video luôn cần đến một hệ thống gồm hai thành phần:
Bộ mã hóa (encoder) và bộ giải mã (decoder) Công việc của encoder chính làchuyển đổi những dữ liệu gốc thành một dạng dữ liệu nén khác có số lượng bitsđược giảm đi đáng kể, thuận tiện cho việc truyền tải và lưu trữ dữ liệu Trongkhi đó, decoder có chức năng chuyển đổi những dữ liệu đã được nén trở thành
dữ liệu gốc ban đầu Cặp đôi này thường được gọi tắt là CODEC
Một bộ video encoder bao gồm ba bộ phận chính: mô hình dự đoán (predictionmodel), mô hình không gian (spatial model) và bộ mã hóa hỗn loạn (entropyencoder)
Trang 28CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.7: Block diagram của video encoder (1)
Video decoder sẽ tái xây dựng lại video gốc từ bitstream kết quả của coder cùng với các thông số hệ số (coefficients) và giá trị dự đoán (predictionparameters) được tính toán trong lúc encoder thực hiện mã hóa video
en-2.2 Chuẩn mã hóa video H.264/AVC
Chuẩn mã hóa H.264/AVC (H.264/AVC Video Coding Standard) được đồngchuẩn hóa bởi ISO và ITU (14), chuẩn video này có hiệu năng xử lí và độ tối
ưu vượt trội so với các chuẩn quốc tế trước đó Trước H.264, các chuẩn mã hóa
là sự kết hợp giữa các thuật toán để dự đoán hình ảnh đầu vào và biến đổi cáchình ảnh khác nhau để giảm thiểu hệ số liên quan về không gian và thời gian(temporal and spatial correlation) của video đầu vào, từ đó cải thiện tỉ lệ nénảnh (compression ratio)
H.264 vẫn giữ những khối chức năng như các phiên bản trước đó, ngoài ra cònđược thêm vào những khối chức năng mới để cải thiện hiệu năng tính toán (2).Những khối chính của H.264 bao gồm các khối biến đổi cosine rời rạc (discretecosine transformation - DCT), lượng tử hóa (quantization), kiểm soát bit-rate(bit-rate control), khối dự đoán đền bù chuyển động (motion compensation pre-diction) và bộ mã hóa hỗn loạn (entropy coding) Tuy vậy, điểm khác biệt ởH.264 chính là sự xuất hiện của khối dự đoán nội ảnh - intrapicture prediction,cùng với đó là bộ biến đổi số nguyên 4 x 4 (4x4 integer transform), tính năngđền bù chuyển động được tính dựa trên một phần tư pixel (quarter pel) và bộlọc tách khối trong vòng lặp (debocking filter) Sau đây bài báo cáo sẽ tập trung
Trang 29CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.8: Các quy trình hoạt động của chuẩn mã hóa H.264(1)
2.2.1 Các cú pháp trong H.264
H.264 cung cấp những định nghĩa chi tiết về cú pháp để tái hiện video đã qua
xử lý và những thông tin liên quan
Trang 30CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.9: Các lớp cú pháp của H.264 (1)
Ở lớp cao nhất, mỗi đoạn (sequence) H.264 bao gồm nhiều gói tin được gọi
là Network Adaptation Layer Units (NALUs) Mỗi gói tin đó chứa những thông
số được decoder sử dụng để giải mã một đoạn video hoặc slide Ở lớp tiếptheo, mỗi slice là video frame hoàn chỉnh hoặc một phần video frame đã được
mã hóa, và là tập hợp của những macroblock, mỗi macroblock chứa dữ liệu đãđược mã hóa tương ứng với những khối 16x16 của pixel trong một video frame.Macroblock là cú pháp dành cho lớp thất nhất trong H.264, bản thân nó chứađựng thông tinh diễn tả những cách thức được sử dụng để mã hóa một khối
Trang 31CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.2.2 Profiles và Levels
Chuẩn H.264 bao gồm nhiều loại công cụ Chúng là những thuật toán hoặcquy trình xử lý khác nhau dùng trong các bước mã hóa và giải mã video Cáccông cụ đó có thể được sử dụng cho những tính năng cơ bản như biến đổi 4x4,hoặc những bộ mã hóa hỗn loạn khác nhau, hoặc cũng có công cụ được sử dụngcho những trường hợp và ứng dụng cụ thể Profiles trong H.264 là một tập hợpnhững đặc điểm mà tương ứng với đó, những công cụ của H.264 sẽ được sử dụngsao cho phù hợp trong lúc mã hóa cũng như giải mã đoạn video Có 7 profiles
cơ bản, được sử dụng cho các ứng dụng và mục đích khác nhau: Baseline, Main,Extended, High, High10, High 4:2:2 và High 4:4:4 Predictive Từng profiles đều
có những điểm chung và điểm khác biệt
Levels quy định giới hạn cho các thành phần của từng cú pháp có thể tiếpnhận, thường thì những thông số này bị giới hạn bởi tốt độ xử lý, dung lượng bộnhớ và kích thước trình chiếu ở bộ giải mã, hay có thể hiểu đơn giản hơn, mỗilevel quy định giới hạn cho các thông số như bit-rate, kích thước frame, kíchthước buffer của mỗi hình ảnh, v.v
Trang 32CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.10: Đặc điểm của các loại profiles trong H.264 (2)
Trang 33CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.2.3 Các công đoạn của bộ mã hóa H.264
Bộ mã hóa H.264 thực hiện công việc dự đoán, biến đổi và nén ảnh để tạothành một chuỗi bit H.264 (H.264 bitstream) Quá trình mã hóa một video của
bộ mã hóa H.264 có thể được khái quát bằng sơ đồ khối dưới đây
Hình 2.11: Sơ đồ khối của bộ mã hóa H.264 (2)
Đầu tiên, từng video frame đầu vào sẽ được chia nhỏ thành các khối roblock chứa 16x16 mẫu của thành phần luma và 8x8 mẫu của hai thành phầnchroma còn lại Sau đó bộ mã hóa sẽ lựa chọn giữa hai chế độ intracoding vàintercoding Một MB dự đoán sẽ được tạo ra và trích xuất từ MB hiện tại để kếthợp thành một MB thừa (residual MB) Khối MB này sau đó sẽ được biến đổi(transform), lượng tử hóa (quantized) và cuối cùng là mã hóa thành một H.264bitstream Cùng lúc đó, dữ liệu đã được lượng tử hóa sẽ được tái kích thước
mac-và đảo biến đổi (inverse-transform) để kết hợp cùng với MB dự đoán để tái tạolại thành một bản mã hóa của frame, sau đó được lưu trữ để sử dụng cho cácbước dự đoán sau Ở chế độ intracoding, một bức ảnh hay khung hình được mãhóa mà không cần phải tham khảo đến những khung hình khác Intracoding sửdụng nhiều chế độ dự đoán không gian (spatial prediction) khác nhau để loại bỏ
Trang 34CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
những phần không gian dư thừa trong một khung hình của dữ liệu gốc coding phức tạp hơn nhưng có độ hiểu quả cao hơn, với việc sử dụng thuật toáninterprediction cho từng block của những khung hình đã được mã hóa trước đó
Inter-Kỹ thuật intercoding này sửa dụng các vector chuyển động (motion vectors) cho
dự đoán theo khối để giảm thiểu dư thừa về thời gian giữa các khung hình khácnhau
2.2.4 Công đoạn dự đoán
Công đoạn dự đoán (prediction) chính là công đoạn đem lại hiệu quả caonhất cho H.264/AVC so với các chuẩn tiền nhiệm Mỗi macroblock đều đượcxây dựng một dữ liệu dự đoán và tách xuất nó ra khỏi macroblock đó để kếthợp thành một khối dữ liệu dư Công đoạn prediction này có độ chính xác càngcao thì khối dữ liệu dư càng nhỏ và hiệu năng tính toán càng lớn Macroblockđược chia ra làm 3 loại: I, P và B Macroblock Macroblock loại I (I MB) sẽ được
dự đoán bằng cách lấy mẫu trong cùng frame Macroblock P (P MB) được dựđoán bằng một frame đã được mã hóa trước đó, có thể là past frame hoặc futureframe tùy vào thứ tự Macroblock B (B MB) có thể được dự đoán bằng mộthoặc hai frame đã được mã hóa từ trước, đồng nghĩa rằng B MB có thể được
dự đoán bằng cả past frame và future frame
Trang 35CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.12: Các loại Macroblock và cách dự đoán (1)
Intraprediction
Trong intraprediction, dữ liệu của intra macroblock (I MB) được xây dựngdựa trên những khối đã được mã hóa trong cùng một khung hình Có ba loạiintraprediction cho luma dựa trên số lượng block: 4x4 blocks, 8x8 blocks hoặctoàn bộ macroblock 16x16 và chroma chỉ có một loại prediction Với luma 4x4 và8x8 block, mỗi loại có 9 hướng prediction, trong khi 16x16 MB chỉ có 4 hướng,tương tự cho chroma prediction
Trang 36CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Hình 2.13: Các hướng dự đoán của luma 4x4 prediction (1)
Luma 4x4 block và 8x8 block prediction có chung số hướng prediction nhưhình 3.13 Trong khi đó, luma 16x16 MB và chroma prediction có 4 hướngprediction gồm: DC, horizontal, vertical và plane
Interprediction
Như đã đề cập, interprediction là phương pháp dự đoán một khối luma vàchroma dựa trên những khung hình đã được mã hóa trước đó, hay còn gọi làreference picture, bao gồm lựa chọn một vùng dự đoán (prediction region), xâydựng khối predcition và tách nó ra khỏi khối ban đầu để xây dựng thành khốiresidual, sau đó khối này sẽ được mã hóa và truyền tải Kỹ thuật này sử dụng
độ liên quan về thời gian để giảm thiểu bit rate (2) Mỗi macroblock trong frame
có thể được chia nhỏ thành những khối nhỏ hơn, lên đến 4x4 luma và chromablock tương ứng
Trang 37CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Khung hình đối chiếu (reference picture) sẽ được chọn từ danh sách nhữngkhung hình đã được mã hóa từ trước, được lưu trữ trong bộ đệm khung hìnhđược giải mã (Decoded Picture Buffer - DPB), danh sách này sẽ chứa cả nhữngkhung hình trước và sau khung hình hiện tại theo thứ tự trình chiếu (past vàfuture frame) Những khung hình trung DPB được đánh số và sắp xếp theo thứ
tự nhất định trong những loại danh sách dưới đây tùy thuộc vào MB nằm trênslice P hay B
• Danh sách 0 (Loại P): Một danh sách chứa tất cả những khung hình thamchiếu Phần tử đầu tiên trong danh sách này khung hình mới nhất được giảimã
• Danh sách 0 (Loại B): Danh sách này cũng chứa toàn bộ khung hình thamchiếu Phần tử đầu tiên của danh sách này là khung hình trước khung hìnhhiện tại theo thứ tự trình chiếu
• Danh sách 1 (Loại B): Danh sách này cũng chứa toàn bộ khung hình thamchiếu Phần tử đầu tiên của danh sách này là khung hình sau khung hìnhhiện tại theo thứ tự trình chiếu
Khoảng cách từ vị trí của khối hiện tại đến vùng dự đoán của khung hìnhtham chiếu được gọi là motion vector Motion vector có thể chỉ đến vị trí sốnguyên, một nửa hoặc một phần tư mẫu của thành phần luma trong khunghình tham chiếu (ví dụ 1, 1.5, 1.25) Các motion vector của những khối liền kề
sẽ được xây dựng và mã hóa khác nhau