Điều khiển tốc độ video mã hoá chuẩn H.264 thích ứng trên mạng Ad hoc

LỜI NÓI ĐẦU Trong những năm gần đây, cùng với sự phát triển mạnh mẽ của khoa học máy tính, đặc biệt là lĩnh vực máy tính nhúng, loài người người đã có những thay đổi to lớn về cách thức cũng như phương tiện giao tiếp. Với những tiến bộ trong truyền thông vô tuyến, kết hợp với sự bùng nổ của các phương tiện nhúng như điện thoại di động, PDA, và máy tính xách tay, thì một lĩnh vực công nghệ đầy tiềm năng đang dần được khai phá đó là “tính toán khắp nơi”(ubiquitous computing). Mạng Ad hoc ra đời như một tất yếu của quá trình phát triển này. Sau một thời gian làm việc rất cố gắng trên phòng Lab 411 Khoa Điện Tử - Viễn Thông dưới sự hướng dẫn tận tình của thầy giáo TS.Phạm Văn Tiến, cùng với sự hợp tác chặt chẽ của các thành viên trong phòng Lab, em đã hoàn thành đồ án với đề tài “Điều khiển tốc độ video mã hoá chuẩn H.264 thích ứng trên mạng Ad hoc” Với những nỗ lực thực sự, đồ án của em đã có được một số kết quả nhất định, mặc dù vậy, do thời gian có hạn em không thể tránh khỏi một số thiếu sót cũng như một số nhiệm vụ chưa hoàn thành được. Vì vậy, em rất mong những ý kiến đóng góp của các thầy cô giáo và bạn bè. TÓM TẮT ĐỒ ÁN “Điều khiển tốc độ video mã hoá chuẩn H.264 thích ứng trên mạng Ad hoc” H.264/AVC là chuẩn mã hoá video mới nhất của ITU-T nhóm các chuyên gia mã hoá video (VCEG- Video Coding Experts Group) và ISO/IEC nhóm các chuyên gia về ảnh động (MPEG- Motion Picture Experts Group). Những thành công chính của chuẩn H.264/AVC là cải thiện tỷ số nén và khả năng thân thiện với cách đánh địa chỉ mạng cho các ứng dụng hội thảo truyền hình, lưu trữ hoặc streaming. Là một nhóm các thiết bị di động kết nối qua mạng không dây, một mạng không dây Ad hoc được đặc trưng bởi sự thay đổi theo thời gian và ảnh hưởng trực tiếp đến liên lạc. Ngày nay, truyền thông đa phương tiện trên mạng Ad hoc đa chặng còn có nhiều thử thách, đặc biệt khi sử dụng bộ mã hoá H.264 do luồng video rất nhạy cảm với độ trễ trong khi đó tài nguyên của các nút mạng thành phần hạn chế. Đồ án này tập trung vào việc thực thi thiết kế xuyên tầng cho bộ mã hoá, giao tiếp tiến trình bằng bộ nhớ chung. Qua việc thực thi thiết kế xuyên tầng, server truyền sẽ thay đổi tham số lượng tử trong thời gian thực phụ thuộc vào thông tin của các lớp dưới như lớp định tuyến, lớp truyền. Đồ án gồm 5 chương: ·Chương 1: Giới thiệu về vấn đề phát sinh và phương pháp nghiên cứu ·Chương 2: Giới thiệu bộ mã hoá H.264: cấu trúc của H.264, điều khiển tốc độ . ·Chương 3: Giới thiệu giao thức định tuyến tối ưu OLSR ·Chương 4: Thực thi thiết kế xuyên tầng Chương 5: Kết quả , kết luận và hướng nghiên cứu tiếp theo. MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP. 1 BẢN NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP. 2 LỜI NÓI ĐẦU3 TÓM TẮT ĐỒ ÁN4 ABSTRACT 5 MỤC LỤC6 DANH MỤC HÌNH VẼ10 DANH MỤC BẢNG BIỂU12 CÁC THUẬT NGỮ VIẾT TẮT13 Chương 1 GIỚI THIỆU CHUNG16 1.1Mục đích thiết kế. 16 1.2Phương pháp nghiên cứu. 18 Chương 2 CHUẨN NÉN VIDEO H.264/MPEG-4 Part 10. 19 2.1Giới thiệu chung về bộ CODEC H.264. 20 2.1.1Bộ mã hoá (Encoder)20 2.1.2Bộ giải mã (Decoder)23 2.2Cấu trúc. 23 2.2.1Định dạng video (video format)24 2.2.2Định dạng dữ liệu được mã hóa. 24 2.2.3Slice. 25 2.2.4Macroblock. 27 2.2.5Ảnh tham chiếu(reference picture)29 2.3Profile. 30 2.4Lớp mạng trừu tượng (NAL)31 2.4.1Định nghĩa lớp mạng trừu tượng:31 2.4.2Cấu trúc của NAL unit32 2.4.3Tập tham số (parameter set)35 2.5.Điều khiển tốc độ (Rate control)43 2.5.1.Giới thiệu về điều khiển tốc độ trong H.264. 43 2.5.2.Phân loại ratecontrol44 2.5.2.1.Chế độ 2 pass. 44 2.5.2.2Chế độ1 pass. 44 a)1 pass ABR. 44 b)1 pass CBR. 45 c)1 pass CRF. 45 d)1 pass CQP. 46 2.5.3Mô hình điều khiển tốc độ trong H.264. 46 2.5.3.1Mô hình tốc độ méo (Rate-distortion model)48 a)Mức độ nhóm ảnh (GOP level)48 b)Mức độ khung (Frame level)49 2.5.3.2Dự đoán độ phức tạp. 56 2.5.3.3Mô hình bộ nhớ ảo. 57 2.5.3.4Giới hạn Delta QP (Delta QP-limiter)58 2.5.3.5Phân bố bit của đơn vị cơ b ản (Basic Unit Allocation)58 2.5.4.Chế độ ratecontrol trong x264. 58 a)Constant QP. 58 b)Constant rate factor59 2.5.5.Kết quả thu được. 59 a)mối quan hệ giữa tốc độ bit đầu ra và các tham số điều khiển tốc độ:59 b)Thiết kế xuyên tầng. 63 Chương 3 GIAO THỨC ĐỊNH TUYẾN OLSR64 3.1Giới thiệu. 64 3.2Một số khái niệm cơ bản:64 3.3Hoạt động. 65 3.4IBSS (IEEE Ad hoc mode)67 3.5Thông tin chất lượng đường truyền mở rộng (Link Quality Extension)69 3.6Debug output:69 3.6.1Phân tích bảng thông tin các liên kết:69 3.6.2Phân tích bảng thông tin các nút hàng xóm70 3.6.3Phân tích bảng thông tin về topo mạng. 71 3.6.4Phân tích bảng định tuyến tìm đường theo DIJKSTRA71 Chương 4 GIỚI THIỆU VỀ THIẾT KẾ XUYÊN TẦNG 4.1Mối liên hệ code giữa vlc, x264 và olsrd. 73 4.2Thiết kế xuyên tầng giữa vlc, x264 và olsrd. 74 Chương 5 KẾT QUẢ NGHIÊN CỨU, KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO75 5.1Test case 1: Thí nghiệm chứng tỏ etx là giá trị cần truyền cho vlc. 75 5.1.1Thí nghiệm 1:75 5.1.2Thí nghiệm 2:77 5.2Kết quả thu được: Thực thi thiết kế xuyên tầng thành công:79 5.3Kết luận. 82 5.4Hướng nghiên cứu tiếp theo:82 TÀI LIỆU THAM KHẢO83

doc83 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3093 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Điều khiển tốc độ video mã hoá chuẩn H.264 thích ứng trên mạng Ad hoc, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ân biệt lớp mã hóa video (Video Coding layer VCL) và lớp mạng trừu tượng (Network Abstraction Layer - NAL). Đầu ra của quá trình mã hóa là dữ liệu lớp mã hóa video VCL (chuỗi bit biểu diễn dữ liệu video đã được mã hóa) sẽ được ánh xạ và các đơn vị của lớp mạng trừu tượng- NAL trước khi truyền dẫn hay lưu trữ. Mỗi đơn vị NAL bao gồm chuỗi byte thô về thứ tự tải, và một tập các thông tin ứng với dữ liệu video hay còn gọi là thông tin header. Một chuỗi video được mã hóa được biểu diễn bởi chuỗi các đơn vị NAL mà có thể được truyền dẫn trên các mạng gói hay luồng bit trên đường truyền hay lưu ra file.Mục đích của việc phân chia các lớp VCL và NAL là để phân biệt đặc tính mã hóa tại lớp VCL và đặc tính truyền dẫn tại lớp NAL. Hình 2. 6: Chuỗi đơn vị NAL Slice Hình 2. 7: Slices Một ảnh video được mã hóa gồm một hay nhiều slide. Mỗi slice bao gồm số nguyên các khối macro. Số lượng khối macro trong một bức ảnh có thể không cố định. Có sự phụ thuộc lẫn nhau tối thiểu giữa các slide đã được mã hóa để giúp giảm sự lan truyền lỗi. Chuẩn mã hoá H.264 có 5 loại slide được mã hóa và một ảnh được mã hóa có thể bao gồm nhiều loại slide khác nhau ví dụ ảnh được mã hóa trong profile cơ bản có thể bao gồm các slide I và P và ảnh được mã hóa ở profile chính hay mở rộng có thể gồm I,P,B slide. Header slice (phần thông tin mào đầu) định nghĩa loại slice và ảnh mã hóa mà slice đó thuộc về và có thể kèm theo các thông tin hướng dẫn liên quan đến quản lý ảnh tham chiếu. Phần dữ liệu của slice bao gồm chuỗi các khối macro được mã hóa và chỉ thị bỏ qua (không được mã hóa) khối macro.Mỗi khối macro bao gồm chuỗi các thành phần header và dữ liệu dư thừa được mã hóa. Bảng 2: Các loại slice Loại Slice Mô tả Profile I (Intra) Chỉ bao gồm khối macro I (mỗi khối hoặc khối macro được dự đoán từ dữ liệu được mã hóa trước đó trong cùng một slide) Tất cả P (Predicted) Bao gồm khối macro P (mỗi khối macro hoặc vùng macro được dự đoán từ danh sách các ảnh trong list 0 hoặc là khối macro I Tất cả B (Dự đoán hai chiều) Bao gồm các khối macro B( mỗi khối hay một vùng khối macro được dự đoán từ danh sách ảnh list 0 hoặc list 1) hoặc là khối macro I Mở rộng hoặc chính SP (Swiching P) Tạo điều kiện thuận lợi cho việc chuyển đổi giữa các luồng dữ liệu đã được mã hoá, chứa macroblock loại P hoặc I. Mở rộng SI (Swiching I) Tạo điều kiện thuận lợi cho việc chuyển đổi giữa các luồng dữ liệu đã được mã hoá, chứa macroblock loại SI (một dạng đặc biệt của macroblock mã hoá kiểu intra) Mở rộng . Hình 2. 8: Cấu trúc của slice Macroblock Hình 2. 9: MacroBlock Một khối macro bao gồm các dữ liệu được mã hóa ứng với vùng 16x16 mẫu của khung video.( 16x16 mẫu độ chói, 8x8 Cb và 8x8 Cr) và bao gồm các thành phần cú pháp theo bảng ở . Khối macro được đánh số theo thứ tự quét trong khung. Bảng 3: Các thành phần cấu trúc của Macroblock Mb_type Xác định liệu khối macro là loại I hay P, xác định kích cỡ một vùng trong khối macro Mb_pred Xác định chế độ mã hóa trong ( khối macro intra), danh sách tham chiếu List 0 hay List 1 và mã hóa các vector chuyển động khác nhau cho mỗi phần của khối macro Sub_mp_pred Xác định kích cỡ khối macro con. Danh sách tham chiếu List 0 hay 1 cho mỗi vùng khối macro và mã hóa các vector chuyển động khác nhau cho mỗi vùng con Coded_block_pattern Xác định khỗi 8x8 nào ( độ chói hay sắc) sẽ mang hệ số biến đổi Mb_qp_delta Thay đổi tham số lượng tử hóa Residual Hệ số biến đổi đã được mã hóa ứng với mẫu dư thừa sau khi dự đoán Ảnh tham chiếu(reference picture) Hình 2. 10: Ảnh tham chiếu và bù chuyển động Bộ mã hóa H.264 có thể sử dụng hai hoặc nhiều các ảnh được mã hóa trước đó để làm tham chiếu cho dự đoán bù chuyển động cho mã hóa ngoài các khối macro hoặc phân tách khối macro. Điều này cho phép bộ mã hóa tìm kiếm khối macro giống nhất với khối macro được tách ra từ bức ảnh vừa được mã hóa.Bộ mã hóa và giải mã luôn giữ một hoặc hai danh sách các ảnh tham chiếu, bao gồm ảnh đã vừa được mã hóa hay giải mã (xuất hiện trước hoặc sau ảnh hiện tại). Mã hóa ngoài các khối macro hay vùng của khối macro trong slice P được dự đoán từ một danh sách các ảnh –list 0. Mã hóa ngoài khối macro và vùng các khối macro trong slide B có thể được dự đoán từ hai danh sách list 0 và list 1. Profile Hình 2. 11: các profile H264 định nghĩa 3 profile trong đó mỗi profile hỗ trợ 1 tập cụ thể các hàm mã hóa,và chỉ ra những gì đươc yêu cầu của bộ mã hóa/giải mã phù hợp với từng profile.Base profile hỗ trợ mã hóa trong và liên khung(sử dụng slice I và slice P ),và phương pháp mã hóa entropy CAVLC.Main profile bao gồm video quét xen kẽ,mã hóa liên khung sử dụng slice B ,mã hóa liên khung dùng dự đoán có trọng sô và phương pháp mã hóa entropy CABAC.Extended profile không hỗ trợ video quét xen kẽ và phương pháp mã hóa entropy CABAC,nhung có thêm chế dộ cho phép việc chuyển đổi  giữa các luồng bit được mã hóa. Ứng dụng tiềm năng của profile Baseline bao gồm thoại video, hội thảo truyền hình, và truyền thông không dây. Ứng dụng tiềm năng của Main profile là truyền hình quảng bá và lưu trữ dữ liệu. Profile mở rộng có thể hữu ích trong ứng dụng streaming. Tuy nhiên mỗi profile có sự mềm dẻo đủ để hỗ trợ một loại ứng dụng khác nhau. Lớp mạng trừu tượng (NAL) Hình 2. 12: Cấu trúc của bộ mã hóa H.264/AVC Định nghĩa lớp mạng trừu tượng: Lớp mạng trừu tượng được thiết kế nhằm mục đích cung cấp khả năng thân thiện với mạng cho phép tuỳ biến dễ dàng và hiệu quả. Lớp mạng trừu tượng có khả năng tương thích dễ dàng với dữ liệu của lớp truyền . Các NAL unit chứa trong nó slice đầu ra của VCL (video coding layer), thích hợp cho việc truyền đi trên mạng gói (packet-oriented network) hoặc các mạng hướng luồng byte (byte-oriented networks) Hình 2. 13: video coding layer và network abstract layer Cấu trúc của NAL unit Mào đầu của 1 đơn vị NAL Hình 2. 14: Cấu trúc của đơn vị NAL Trên hình là cấu trúc của NAL header có độ dài 1 byte,và là byte đầu tiên của 1 NAl unit. Trong đó: F (1bit) Forbidden_zero_bit: Giá trị 0 chỉ rằng octet NAL type và tải không chứa bit lỗi hoặc sai cú pháp.Và ngược lại.Khi bit F được đặt lên 1 thì bộ giải mã được chi rằng trong tải và octet NAL ype của NAL unit có chứa lỗi hoặc sai cú pháp,bộ giả mã có thể huỷ bỏ NAL unit và giấu đi dữ liệu  của gói bị huỷ NRI (2bit) nal_ref_idc: giá trị 00 chỉ nội dung của NAL unit không được dùng đẻ tái xây dựng ảnh tham chiếu cho dự đoán liên ảnh,do vậy mà các NAl unit có thể bi huỷ mà không làm rủi ro toàn thể ảnh tham chiếu. Còn giá trị lớn hơn 00 chỉ rằng việc giải mã NAl unit được yêu cầu để duy trì sự toàn vẹn của ảnh tham chiếu.Mức độ ưu tiên truyền giảm dần theo trật tự:11,10,01,00 ,và giá trị của NRI tuỳ thuộc giá trị của NAL type khi NAL=5 (ảnh IDR) thì giá trị của của NRI=11 Data type (5bit) Bảng 4: Kiểu NAL cAnnex B (byte stream) Bảng 5: RBSP Trật tự của NALU dạng luồng byte nên theo trật tự giải mã NALU trong luồng byte NALU Bắt đầu mỗi NALU là chuỗi 3 byte được gọi là start_code_prefix_one_3byte =0x000001(theo hệ số đếm 16) emulation_prevent_three_byte chứa bên trong của 1 NALU để thông báo là không có chuỗi liên tiếp byte-aligned bên trong NALU Tập tham số (parameter set) Hình 2. 15: cấu trúc tập tham số của H.264 Khi truyền video được mã hóa theo cách truyền thống qua mạng dễ xảy ra lỗi (error prone),một trong các vấn đè lớn hơn là khả năng mất 1 tiêu đẻ mang thông tin có liên quan tới nhiều gói.Ví dụ như việc mất tiêu đề (header)của ảnh , dẫn đến không có khả năng của bộ giải mã sử dụng bất kì gói thông tin nào sau đó liên quan tới bứ ảnh,thậm chí rất nhiều gói còn nguyên không bị thay đổi gi so với khi được kđongs gói tại phía phát.NHiều cơ chế được giới thiệu tới các chuẩn mã hóa video và sự sắp xếp đóng gói (packetization schemes) để giảm thiểu vấn đeg trên như cơ chế nhân bản tiêu đề trong MPEG-4.Tuy nhiên nhưng cớ chế này không thể giải quyết hoàn toàn vấn đề Vấn đề cơ bản là việc đồng bộ của các thông tin cao hơn của tiêu đề với luồng bit.Ở bất kì trạng thái nào được nêu ra của bộ giải mã,có duy nhất 1 ngữ cảnh (context) của tiêu đề sẵn sàng ở bộ giải mã.Nếu ngữ cảnh bị mất vì bất kì lí do nào,bộ giải mã sẽ có vấn đề Khái niệm NAL của H26L tránh được vấn đề này bằng cách tách biệt việc truyền của thông tin slice và tiêu đề của trật tự cao hơn (higher hierarchy).Bộ mã hóa và bộ giải mã duy trì nhiều địa điermer chứa cho toàn bộ nội dung  của tiêu đề của ảnh/GOB/Slice.Mỗi 1 slice chứa trong tiêu đè 1 từ mã của tập tham số (parameter set) có chức năng như 1 chỉ số tới địa chỉ cuat tập tham số liên quan việc giải mả của slice đó. Do vậy , bộ giải mã có thẻ thay đổi không đồng bộ các tập tham số trong khi vẫn cho phép giải mã đúng slice mà không gửi (address)tham số các tập tham số đó. Hình 2. 16: Tập tham số Việc truyền các cập nhật của tập tham số phụ thuộc vào NAL.Tập tham số nên được thiết lập và cập nhật một cách cậy và theo 1 kênh truyền khác với kênh truyền video.Trong các ứng dụng hội thoại,thiết lập của tập tham sô sẽ thường là ảnh hưởn 1 phía của trao đổi khả năng (capability exchange) và sau đó những thay đổi sẽ được thực hiện thông qua giao thức điều khiển tin cậy như H.243>trong môi trường mà không có giao thức điều khiển nào ,tập tham số có thể được truyền trong cùng 1 kênh truyền Hình 2. 17: luồng dữ liệu đi qua NAL và VCL Thông thường các tập tham sô ảnh , tập tham số chuỗi được truyền trước các slice để bộ giải mã phía thu có thể thiết lập các giá trị phù hợp để giải mã đúng luồng dử liệu video truyền từ phía phát PPS Mỗi slice đều tham chiếu đến 1 tập tham số ảnh (picture parameter set) dùng cho việc giải mã dữ liệu video được mã hóa Cấu trúc của PPS: Bảng 6: Cấu trúc PPS picture_parameter_set( ) { Category Mnemonic        parameter_set_id(picture_parameter_set)        parameter_set_id(independent_GOP_parameter_set)        parameter_set_id(presentation_parameter_set)        picture_width_in_MBs_minus_1 ecselbf        picture_height_in_MBs_minus_1 ecselbf } SPS Mỗi tập tham số ảnh đều tham chiếu đến 1 tập tham số chuỗi (sequence parameter set).Mỗi tập tham số chuỗi chứa thông tin cho că chuỗi video dùng cho quá tŕnh giải mă cho toàn chuỗi ảnh  Trật tự của các NALU và lien kết tới các ảnh được mã hoá, đơn vị truy cập và chuỗi video Trật tự của PPS và SPS Tập tham số ảnh và tập tham số chuỗi phân tách việc truyền nhũng thông tin thay đổi không thường xuyên từ dữ liệu của các macroblock được mã hóa.Tập tham số ảnh và tập tham số chuỗi được truyền "out-of-band" dùng cơ chế truyền tin cậy.RBSP của tập tham số ảnh có thể được chiếu đến bởi các đơn vị NAL của slice được mã hóa hoặc phân vùng dữ liệu.RBSP của mỗi tập tham số ảnh ban đầu không hoạt động lúc bắt đầu hoạt động của quá trình giải mã.Một tập tham số ảnh được xem là hoạt động tại bất kì thời điểm nào của quá trình giải mã,và dẫn đến sự vô hiệu hóa của một tập tham số ảnh trước đấy.Và khi có một tâp tham số ảnh mới thì tập tham số ảnh hiện tại sẽ bị vô hiệu hóa. Bất kì đơn vị NAL chứa giá trị của pic_parameter_set_id cho RBSP của tập tham số ảnh hoạt động sẽ có cùng nội dung như của RBSP tập tham số ảnh hoạt động trừ phi nó theo sau đơn vị NAL VCL cuối cùng của một ảnh được mã hóa và dứng trước đơn vị NAL VCL đầu tiên của ảnh được mã hóa khác Một tập tham số chuỗi chứa thông số có thể được chỉ đến bỏi một hay nhiều tạp tham số ảnh hoặc một hay nhiều thông điệp SEI.mỗi tập tham số chuỗi ban đầu không hoạt động lúc bắt đầu hoạt động của quá trình giải mã và hoạt động  tại bất kì thời điểm nào của quá trình giải mã,và dẫn đến sựu vô hiệu hóa của một tập tham số ảnh trước đấy.Và khi có một tâp tham số chuỗi mới thì tập tham số chuỗi hiện tại sẽ bị vô hiệu hóa. Bất kì đơn vị NAL chứa cụ thể giá trị của seq_parameter_set_id cho RBSP của tập tham số chuỗi không sắn sàng hoạt động như của RBSP tập tham số chuỗi hoạt động trừ phi nó theo sau đơn vị NAL VCL cuối cùng của một ảnh được mã hóa và dứng trước đơn vị NAL VCL đầu tiên của ảnh được mã hóa khác Do đơn vị truy cập IDR bắt đầu một chuỗi video được mã hóa mới và một RBSP của tập tham số chuỗi phải duy trì hoạt động cho toàn thể chuỗi video được mã hóa,RBSP của tập tham số chuỗi chỉ có thể được hoạt động bới một thông điệp SEI đang đệm theo chu kì Bất kì đơn vị NAL chứa giá trị của seq_parameter_set_id cho RBSP của tập tham số chuỗi hoạt động sẽ có cùng nội dung .RBSP tập tham số chuỗi hoạt động trừ phi nó theo sau đơn vị NAL VCL cuối cùng của một ảnh được mã hóa và dứng trước đơn vị NAL VCL đầu tiên của ảnh được mã hóa khác,và đơn vị SEI chứa thông điệp SEI của chuỗi video được mã hóa khác.Khi trình bày,RBSP của tập tham số chuỗi mở rộng có chức năng tượng tự các RBSP của tập tham số chuỗi Trật tự của các đơn vị truy cập và gắn với chuỗi video được mã hoá Một chuỗi video bao gồm  hay nhiều đơn vị truy cập.Đợn vị truy cập đầu tiên của mỗi chuỗi video được mã hóa là 1 đơn vị IDR và tất cả các chuỗi video là các đơn vị truy cập không phải IDR Giá trị của só đếm trật tự của ảnh cho các ảnh được mã hóa trong các đơn vị truy cập liên tiêp nhau theo trật tự giải mã đàg chứa ảnh không được tham chiếu sẽ không tăng Khi hiển thị,một đơn vị truy cập theo sau 1 đơn vị truy cập cuối cùng của 1 chuỗi NAL sẽ là 1 đơn vị truy cập của ảnh IDR Khi một dơn vị NAL SEI chứa dữ liệu là thuộc tính của nhiều đơn vị truy cập, đơn vị NAL SEI sẽ được chứa trong đơn vị truy cập đầu tiên nó áp dụng Khi kết thúc của luồng NAL được trình bày ở trong 1 đơn vị truy cập,đơn vị truy cập này nên là đơn vị cuối cùng của chuỗi bit và kết thúc của chuỗi đơn vị NAL sẽ là đơn vị NAL cuối cùng trong đơn vị truy cập này Trật tự của các đơn vị NAL và ảnh được mã hoá và sự gán kết tới các đơn vị truy cập Hình 2. 18: Cấu trúc đơn vị truy cập Một đơn vị truy cập chứa 1 ảnh được mã hóa chính,không hoặc nhiều ảnh dược mã hóa dư thừa liên quan và không hoặc nhiều đơn vị NAL không phải là của VCL Đơn vị đầu tiên của các đơn vị NAL theo sau đơn vị NAL của lớp VCL của một ảnh được mã hóa chính Đợn vị NAL phân chia đơn vị truy câp (access unit delimiter NAL unit) Đơn vị NAL của tập tham số chuỗi ( sequence parameter set NAL unit) Đơn vị NAL của tập tham số ảnh (picture parameter set NAL unit) SEI NAL unit (when present) Đơn vị NAL với nal_unit_type trong khoảng 14 từ 18 Đơn vị NAL VCL đầu tiên của một ảnh được mã hóa Những hạn chế sau sẽ được điều khiển được trật tự của các ảnh được mã hóa và các đơn vị của NAL không phải của lớp VCL bên trong một đơn vị truy cập Khi một đơn vị NAL phân chia các đơn vị truy cập được trình bày,nó sẽ là đơn vị NAL đầu tiên.Nên có ít nhât 1 đơn vị phân chia đơn vị truy cập ở bất kì đơn vik truy cập nào Khi các đơn NAL SEI bất kì được trình bày, chúng sẽ thep trước ảnh được mã hóa Khi một đơn vị NAL SEI chứa thông điệp SEI đang được đệm,thông điệp SEI đang được đệm sẽ là tải của thông điệp SEI đầu tiên của đơn vị NAL đầu tiên tron đơn vị truy cập Ảnh được mã hóa chính sẽ di trước các ảnh được mã hóa dư thừa liên quan Khi ảnh được mã hóa dư thừa được trình bày,nó sẽ là đơn vị NAL tiếp theo và theo trật tự của giá trị của redundant_pic_cnt. .Các đơn vị NAL thuộc cùng 1 chuỗi thì có cùng số seq_parameter_set_id. Khi đơn vị NAL của tập tham số chuỗi đươc trình bày,nó sẽ là đơn vị NAL  tiếp theo sau đơn vị NAL của tập tham số chuỗi có cùng giá trị  seq_parameter_set_id khi có 1 hay nhiều slice được mã hóa của một ảnh được mã hóa phụ không có các đơn vị NAL của các phân vùng được trình bày,chúng sẽ theo sau ảnh được mã hóa chính và tất cả các ảnh được mã hóa dư thừa Khi đơn vị NAL kết thúc của chuỗi được trình bày, nó sẽ theo sau ảnh được mã hóa chính và tất cả các ảnh được mã hóa dư thừa Khi đơn vị NAL của luồng kết thúc được trình bày,nó sẽ là đơn vị NAL cuối cùng Đơn vị NAL có nal__unit_type từ 0 đến 12 hoặc trong khoảng 20 đến 31,sẽ không theo sau đơn NAL lớp VCL đầu tiên của ảnh được mã hóa chính Đơn vị NAL của tập tham số chuỗi hoặc của tập tham số ảnh có thể được trình bày trong 1 đơn vị truy câp nhưng không đi sau đơn vị NAL VCL cuối cùng của ảnh đươc mã hóa chính bên trong 1 đơn vị truy cập, khi điều kiện này sẽ được chỉ bát đầu của một đơn vị truy cập mới  Khi một NAL có nal_unit_type là 7,8 được trình bày bên trong một đơn vị truy cập,nó có the hoăc không được tham chiêu tới bên trong ảnh được mã hóa của một đơn vị truy cập Cấu trúc của đơn vị truy cập không chứa bất kì đơn vị NAL có nal_unit_type là 0, 7, 8 hoặc 12 Dò tìm đơn vị NAL đầu tiên của 1 ảnh chính được mã hoá (primary codec picture) Bất kì đơn vị NAL ckủa slice được mã hóa hoặc phân vùng dữ liệu của slice được mã hóa của ảnh được mã hóa chính trong đơn vị truy cập hiện tại sẽ phân biệt với bất kì đơn vị NAL ckủa slice được mã hóa hoặc phân vùng dữ liệu của slice được mã hóa của ảnh đươc mã hóa trước đó theo những cách sau: frame_num :khác biệt giá trị .Giá trị của frame_num được dùng đề kiểm tra  điều kiện này được xuất hiện trong cú pháp của tiêu đề của slice bất kể giá trị được ngụ ý là 0 cho việc dùng các chuỗi con trong quá trình giải mã vi việc xuất hiện của hoạt động điều khiển quản lí bộ nhớ bằng 5 pic_parameter_set_id khác giá trị field_pic_flag khác giá trị bottom_field_flag khác giá trị nal_ref_idc khác giá trị với nal_ref_idc có giạ trị là 0. pic_order_cnt_type là  0 và pic_order_cnt_lsb khác giá trị hoặc delta_pic_order_cnt_bottom khác giá trị . pic_order_cnt_type   là 1    cho cả 2 ảnh delta_pic_order_cnt[ 0 ]  khác giá trị or delta_pic_order_cnt[ 1 ] .khác giá trị nal_unit_type khác giá trị với đơn vị nal có nal_unit_type  là 5. Điều khiển tốc độ (Rate control) Giới thiệu về điều khiển tốc độ trong H.264 Một bộ mã hoá thực thi việc điều khiển tốc độ như là một công cụ để thay đổi đặc tính tốc độ bit của luồng bit đã được mã hoá nhằm mục đích tạo ra các khung hình mã hoá chất lượng cao ở tốc độ bit mong muốn.Chuẩn mã hoá H.264 được sử dụng chủ yếu cho việc truyền video tại những khu vực mà băng thông hoặc khả năng lưu trữ hạn chế. Một thuật toán điều khiển tốc độ thay đổi các tham số mã hoá, chủ yếu là hệ số lượng tử hoá QP để đạt được tốc độ bit mong muốn. Nó cấp phát một lượng bit cho một nhóm ảnh, một ảnh đơn hoăc một sub-picture (ảnh con) trong một chuỗi video. Điều khiển tốc độ cho phép việc chọn lựa các tham số mã hoá để đạt được chất lượng video tốt nhất trong điều kiện ràng buộc về tốc độ bit và bộ đệm bên giải mã video. Điều khiển tốc độ trong H.264 có thể chia làm 3 mức chính: mức nhóm ảnh. mức ảnh. mức macro-block. Ở tại mỗi mức, thuật toán điều khiển tốc độ sẽ chọn giá trị lượng tử hoá QP- giá trị này quyết định quá trình lượng tử hoá của các hệ số chuyển đổi. Điều khiển tốc độ trong H.264 bao gồm 5 mode khác nhau, 1 mode two-pas (tạm dịch mã hoá 2 lần), 4 mode 1-pass (mã hoá 1 lần). Phân loại ratecontrol Chế độ 2 pass Chế độ1 pass 1 pass ABR Đây là cơ chế điều khiển tốc độ ở chế độ 1 pas tạo ra chất lượng video tương đối ổn định với kích thước file xác định. Vì điều khiển tốc độ được thực hiện mà không biết thong tin của frame tương lai nên ABR cở chế tốc độ bit trung bình không thể tạo ra chính xác kích thước file đích. Các bước thực hiện dưới đây được đánh số tương ứng với các bước trong 2 pass. 1 pass CBR Hình 2. 19: Sơ đồ khối của chế độ CBR CBR (constant  bitrate) là chế đọ 1pass được thiết kế cho truyền thời gian thực.Nó cũng sử dụng cơ chế tính dự đoán độphức tạp cho việc tính toàn cỡbit như ABR. Tỉ lệ thang đo được dùng cho việc đạt kích cơ file được yêu cầu được dựa trên mức trung bình cục bộ(phụ thuộc kích thước bộ đệm VBV) thay cho các khung trong quá khứ. (Overflow compensation) Dự đoán phần dư thừa được chạy sau mỗi hàng của macroblock thay vì trên mỗi khung. 1 pass CRF Hình 2. 20: tốc độ bit đầu ra thay đổi Trong quá trình mã hoá tốc độ bit đầu ra thay đổi VBR (variable bit rate), người dùng cung cấp cho bộ mã hoá 2 tham số đầu vào: nguồn video thô và 1 giá trị QP xác đinh. Tại đầu ra bộ mã hoá chúng ta thu được video đã được mã hoá có chất lượng tương đối ổn định nhưng tốc độ bit thay đổi. Nguyên nhân là do độ phức tạp của ảnh liên tục thay đổi trong thời gian thực. CRF (constant rate factor) là chế độ 1pass được tối ưu khi người dùng không yêu cầu 1 tốc độ bit cụ thể mà thay vào đó làchất lượng. CRF giống với chếđộ ABR(average bitrate) ngoại trừ tỉ lệ đo là 1 hằng số được người dùng định nghĩa và không có bù cho tràn đươc thực hiện. 1 pass CQP Là chế độ 1pass có giá trị QP được tính toán dựa trên khung là I-P hoặc P-B.Trong x264,giá trị QP trong chế độ này không đổi cho cả chuỗi và tùy thuộc vào loại khung (I,P,B) Mô hình điều khiển tốc độ trong H.264 Ratecontrol trong h264 cho phép lựa chọn thông số mã hóa để tối đa chất lượng khi có sự hạn chế về tốc độ bit và dung lượng bộ đêm giải mã.Ratecontrol thực hiện ở mức độ: nhóm ảnh (GOP), ảnh và macroblock. Ở mỗi mức độ, rate control lựa chọn gía trị của QP(quantization parameter),quyết đinh lượng tử hóa cho các hệ số chuyển đổi.Việc tăng giá trị QP sẽ làm tăng bước lượng tử hóa,dẫn đén tốc độ bit đầu ra giảm xuống và ngươc lại Hình 2. 21: Quan hệ giữa giá trị lượng tử hóa và tốc độ bit đầu ra theo lý thuyết Hình 2. 22: Mối quan hệ giữa độ phức tạp nguồn và độ méo Hình 2. 23: mô hình điều khiển tốc độ trong H.264 Do sự hạn chế của băng thông đường truyền và kích thước của bộ giải mã làm cho chúng ta mã hóa video ở gần tốc độ bit không đổi và để làm điều này thì giá trị QP thay đổi dựa trên tính toán độ phức tạp của nguồn (source complexity).Do vậy mỗi bức ảnh sẽ có sự phân phối bit riêng. Mô hình tốc độ méo (Rate-distortion model) Mức độ nhóm ảnh (GOP level) Điều khiển tốc độ cấp độ nhóm ảnh (GOP) tính toán lượng bit tổng cho những ảnh còn lại trong nhóm và giá trị QP khởi đầu cho ảnh IDR (instantaneous decoding refresh) hoặc ảnh mở đầu 1 chuỗi và ảnh lưu trữ đầu tiên Khi ảnh thứ j trong nhóm ảnh thứ i được mã hóa thì lượng bit tổng dành cho những ảnh còn lại trong nhóm ảnh được tính toán như sau : Cho ảnh đầu tiên trong 1 nhóm ảnh,lượng bit tổng cộng được tính toán theo công thức trên.Trong đó f là tốc độ frrame được định nghĩa trước.N là tổng số ảnh của nhóm ảnh thứ i.R(j) và V(j) là tốc độ bit "instant available" và lượng bộ đệm ảo (virtual buffer) khi ảnh thứ j của nhóm ảnh thứ i được mã hóa Với những ảnh khác,tống số bit được tính từ công thức ứng với giá trị j khác 1.b(j-1) là số bit thật sự được tạo ở trong ảnh thứ (j-1).Xem xét trường hợp kênh thay đổi .R(j) có thẻ thay đổi ở các frame và nhóm ảnh khác nhau.Nhưng xét trường hợp R(j) luôn bằng R(j-1).Công thức được đơn giản như  : Mức độ khung (Frame level) Điều khiển tốc độ mức độ khung có 2 giai đoạn: pre-encoding và post-encoding. Pre-encode Mục tiêu của giai đoạn này là tính toán giá trị QP của mỗi bức ảnh.Tùy theo loại ảnh (strored và non-stored) mà áp dụng phương pháp khác nhau: Ảnh không lưu trữ (Non-stored pictures): Giá trị QP của ảnh không lưu trữ được tính bằng phương pháp nội suy đơn giản Giả sử  các ảnh  thứ j và (j+L+1) là ảnh lưu trữ và giá trị QP cho các ảnh này là  và  Giá trị QP của ảnh không lưu trữ được tính toán theo 2 trường hợp sau : Trường hợp 1: khi L=1, có duy nhất 1 ảnh không lưu trữ giữa 2 ảnh lưu trữ .Giá trị QP được tính như sau      Trường hợp 2: khi L>1 có nhiều hơn 1 ảnh không được lưu trữ giữa 2 ảnh được lưu trữ.Giá trị QP được tính bởi Với k =1, …, L, và α được cho bởi Giá trị nằm trong doạn [0,51]. Ảnh lưu trữ (Stored picture) Giá trị QP của ảnh được lưu trữ được tính thông qua 2 bước sau: Bước 1:Xác định số bít mục tiêu cho mỗi ảnh được chứa Xác định cấp độ( level) của bộ đệm mục tiêu cho mỗi ảnh trong nhóm ảnh hiện tại Cấp độ của bộđệm mục tiêu được định nghĩa trước cho mỗi ảnh được lưu trữ tùy thuộc số bit được mã hóa của ảnh IDR đầu tiên và ảnh được lưu trữ đầu tiên và độ phức tạp trung bình của ảnh.Sau khi mã hóa ảnh được lưu trữ bởi nhóm ảnh thứ j, giá trị khởi đầu của cấp độ(level) của bộ đệm mục tiêu được đặt : Cấp độ của bộ đệm mục tiêu cho ảnh được lưu trữ của chuỗi phụ được xác định bới Với  là trọng số phức tạp trung bình của ảnh được tham chiếu , là giá trị trung bình của ảnh không được tham chiếu :  Khi không có ảnh không được lưu trữ giữa 2 ảnh được lưu trữ thì công thức được tính đơn giản như sau  Tính toán lượng bít mong muốn cho ảnh được lưu trữ hiên tại: Lượng bít mong muốn được phân phối cho ảnh được lưu trữ thứ j của nhóm ảnh được xác định dựa trên cấp độ của bộđệm mong muốn,tốc độkhung,băng thông hiệu dụng và sựchiếm dụng của bộ đệm hiện thời Trong đó g là hằng số và giá trịđiển hình  là 0.5 khi không có ảnh không dược lưu trữ và 0.25 cho các trường hợp còn lại is a constant and its typical value is 0.5 when there is no non-stored picture and 0.25 otherwise. Đồng thời ,l ượng bit còn lại cũng nên được xem xét khi lượng bít mong muốn được tính Với và lần lượt là số bít còn lại của ảnh được tham chiếu và ảnh không được tham chiếu Số bít mong muốn được kết hợp có trọng sô của và : Với βlà hằng số có giá trị là 0.5 khii không có ảnh không tham chiếu và bằng 0.9 trong các trường hợp còn lại Để phù hợp với yêu cầu của bộ giải mã HRD ; lượng bít mong muốn được giới hạn bởi : Với    Zi(j) và Ui(j)được tínhbới công thức Trong đó, t(1)là thời gian xóa bỏ của ảnh đầu tiên từ bộ đệm ảnh được mã hóa, là hằng số với giá trị đặc trưng bằng  0.9 Bước 2 :Tính toán giá trị QP và thực hiên RDO(rate-distortion optimization) MAD của ảnh được lưu trữ tạm thời  được dự đoán bởi mô hình tuyến tính sử dụng MAD hiện tại của ảnh lưu trữ trước đó Trong đó a1 và a2 là 2 hệ số.Giá trị khởi đầu của a1 và a2 được đặt lần lượt là 1 và 0.Hai hệ so trên được cập nhật bởi phương pháp hồi quy tuyến tính sau khi mã hóa 1 ảnh hoăc 1 đơn vị cơ bản. Bước lượng tử liên quan tới lượng bít mong muốn được tính theo công thức sau: Trong đó là tổng số bit của tiêu đề và vector chuyển động, và là 2 hệ số. Giá trị QP đúng được tính dựa theo bước lượng tử hóa và tham sô lượng tử của AVC (advance video coding).Để duy trì sự trơn tru chất lượng nhìn thấy giữa các khung hình liên tiếp nhau,giá trị QP được điều chỉnh.        Giá trị Qp cuối cùng dược giới hạn bởi 51 và 0.Tham số lượng tử hóa sau đó được dùng  để thực hiên RDO cho mỗi macroblock của khung hiên tại Post-encode Post-encoding stage Sau khi mã hóa 1 ảnh,tham số a1 và a2 của mô hình dự đoán tuyến tính,và cững như c1 và c2 của mô hình R-D bình phương được cập nhật.Phương pháp hòi quy tuyến tính đươck dung để cập nhật những tham số đấy. Trong khi ấy, luồng bit được tạo ra hiện thời được thêm vào bộ đệm. Để đảm bảo sự chiếm dụng của bộ đệm được cập nhật không quá cao,1 số ảnh có thê được bỏ qua b ằng c ách s ử d ụng ph ư ơng ph át t ư ơng t ự nh ư MPEG-4 Q2 Điều khiển tốc độ ở mức độ cơ bản (Basic unit level rate control) Giả thiết 1 bức ảnh được tạo bởi Nmbpicmacroblock.Môtij đơn vị cơ bản được định nghĩa là 1 nhóm liên tục của macroblock và bao gồm Nmbunit  macroblock với Nmbunit là 1 phần của  Nmbpic.Nếu Nmbunit = Nmbpic ,đây sẽ là điều khiển tốc độ cấp ảnh (picture level).Nếu Nmbunit =1 thì  đây sẽ là điều khiển tốc độ cấp macroblock Tổng số đơn vị cơbản trong 1 khung hình Nunitđược tính toán bởi công thức sau Nếu đơn vị cơ bản không được chọn như là 1 khung hình ,điều khiển tốc đọ cấp đơn vị cơ bản nên được thêm vào Gióng với điều khiển tốc độ cấp đô frame  ,giá trị QP cho ảnh IDR và ảnh không được lưu trữ giống nhau cho tất cả các đơn vị cơ bản trong cùng 1 ảnh và đực tính toán tương tự  cấp khung hình được cung cấp mà và được thay thế bằng giá trị trung bình của QP cho tất cả các đơn vi cơbản trong bức ảnh tương ứng. Điều khiển tốc độ cấp đơn vị cơ bản lựa chọn giá trị QP của tất cảđơn vi cơ bản trong 1 khung hình để tổng số bit được sinh ra gần với đích ngắm đến của khung hình Mô tả theo từng bước của phương pháp Bước 1: Dự doán MAD  của các đơn vịcơ bản còn lại trong ảnh được lưu trữ hiện tại bằng mô hình có sửdụng MAD hiejn tại của ảnh được lưu trữtrước đây Bước 2: Tính toán sốbít dư thừa (texture bit hoăc residual bít) cho đơn vịcơ bản thứ j. Bước này bao gồm 3 bước phụ: Bước 2.1: Tính toán lượng bít mong muốn cho đơn vị cơ bản thứ j Để chỉ số bit còn lại cho khung hình hiện tại và gái trị khởi đầu được đặt là  Số bit mong muốn cho đơn vịcơ bản thứl được tình như sau: Bước2.2:Tính toán lựơng bit tiêu đề trung bình được tạo ra bởi tất cảđơn vịcơ bản được mã hóa Trong đó là sốbít tiêu đềđược tạo ra hiên thời bởi đơn vịcơ bản thứ l trong ảnh được lưu trữ .được tính toán từ tất cảcác đơn vịcơ bản của ảnh tham chiếu hiện tại. Bước 2.3 Tính toán số bit dư thừa cho đơn vịcơ bản thứ l Bước 3 Tính toán bước lượng tử cho đơn vị cơ bản thứ l của ảnh thứ j trong nhóm ảnh thứ i bằng cách sử dụng mô hình R-D,vàđược chuyển thành giá trịQP đúng  .Xét 3 trường hợp sau Trường hợp 1 : Đơn vịđầu tiên của khung hình hiện tại Trong đó  lá giá trị trung bình của gía trị QP cho tất cảcác đươn vịcơ bản của ảnh lưu trữtrước đó Trường hợp 2: Khi lượng bít còn lại ít hơn 0,giá trị QP phải lớn hơn giá trị QP của đươn vịcơ bản trước đấy để tỏng lượng bít được tạo ra gần với lươngk bit yêu cầu Trong đó khoảng biến đổi của giá trịQP đi cùng với  đơn vịcác cơ bản , là 1 nếu lớn hơn 8 và bằng 2 trong cac trường họp còn lại. được cập nhật  sau khi mã hóa 1đơn vịcơ bản                Trong đó là khoảng biến đổi của giá trịQP đi cùng với khung hình và được định nghĩa bởi Trường hợp 3: Còn lại , chúng ta nên tính toán bước lượng tử đầu tiên bằng cách sử dụng mô hình R-D bình phương (quadric R-D model) và chuyển giá trị bước lượng tử thành giá trị QP tương ứng Bước 4Thực hiện RDO cho tất cảcác macroblock trong đơn vịcơ bản hiện tại và mã hóa chúng Bước 5Cập nhật số bit còn lại ,các hệ số của mô hình dựđoán tuyến tính và của mô hình R-D bình phương Dự đoán độ phức tạp Độ dư thừa (Residual): Sự khác biệt giữa ảnh nguồn và ảnh được dự đoán (prediction error).Chuyển đổi theo không gian sau đó được áp dụng tói "Residual" để tạo ra các hệ số được chuyển đổi chứa nhưng chi tiêt về mặt không gian mà không được lấy trong dự đoán (prediction) hoăc bản thân ảnh tham chiếu. MAD : mean absolute Difference of Prediction với giả thiết  xi là giá trị nguồn của pixel thứ i: Khởi tạo giá trị lượng tử (QP initialize) Giá trị QP phải được khởi tạo ở điểm bát đầu của chuỗi video.Giá trị khởi đầu này có thể thiết lập bằng tay hoặc có thể tính từ số bít yêu cầu trên 1 pixel (DemandedBitsPerPixel) DemandedBitsPerPixel = DemandedBitrate / (FrameRate * height * width) Trong đó DemandedBitrate: tốc độ bit được yêu cầu ,giá trị có thể được thiết lập bởi người dùng Height, width: kích thước ảnh FrameRate: tốc độ frame (frame/s) Giá trị QP ứng với các khoảng giá trị của số bítx yêu cầu trên 1 pixel với Trong đó N là số pixel của 1 bức ảnh               f:  tốc độ frame               R tốc độ bít đích (target) Mô hình bộ nhớ ảo Bất cứ bộ giải mã nào được cung cấp 1 bộ đệm để loại bỏ sự biến đỏi tốc đọ và thời gian đến của dữ liệu tới.Bộ mã hóa tương ứn phải tạo ra 1 luông bit thoảm mãn sự hạn chế của bộ mã hóa.Vì vậy mô hình bộ đệm ảo được dùng đẻ mo phỏng đầy đủ bộ đệm của bộ mã hóa thực sự  Sự thay đổi đầy đủ của bộ đẹm ảo là khác biệt giữa lươngj bit tổng cộng được mã hóa thành luồng. Giới hạn Delta QP (Delta QP-limiter) Với những chuỗi video có tốc độ thay đổi sự phức tạp (complexity) nhanh ,giá trị Qp được yêu cầu có thể  thay đổi theo chu kì có thể thấy được .Vì vậy bộ giới hạn tốc độ được áp dụng để giới hạn sự thy đổi giá trị QP không quá ± 2 đơn vị giữa các ảnh Phân bố bit của đơn vị cơ b ản (Basic Unit Allocation) Basic Unit Bit Allocation là khái niệm cơ bản traong điều khiển tốc đọ của h264.Việc điều khiển tốc độ ,được thực hiện ở các mức đọ khác nhau :ảnh,slice,hàng macroblock  hoặc tấp liên tục các macroblock Trong H264,điểm nhấn mạnh là trên việc tính toán giá trị QP  cho mỗi ảnh được lưu trữ(thường là ảnh P mặc dù chuẩn H264 cho phép ảnh B đucowj dùng như làm ảnh tham chiếu nhưng không thông dụng).Giá trị QP cho ảnh không tham chiếu (thường là ảnh B ) sau đó được chèn vào (độ lệch) tù giá trị QP cho các ảnh P bên cạnh.Đầu tiên xem xrét MAD (mean absolute difference )của bức ảnh , quyết định cấp độ đích cho "buffer fullness" Chế độ ratecontrol trong x264 Constant QP X264 khi chạy ở chế độ này thì dùng 1 giá trị QP không đổi trong suốt quá trình mã hóa ảnh.Tùy thuộc loại khung ảnh (I,P,B) mà có giá trị QP tương ứng. Giá trị mặc định là 26, khi tăng giá trị QP thì tỉ sộ nén sẽ tăng lên đồng thời làm cho tốc độ bit đầu ra giảm đi nhưng dồng thời chất lượng ảnh sẽ giảm đi do dữ liệu bị mất đi so với ảnh gốc tăng lên .Nếu ban mong muốn 1 tốc độ bit cụ thể thì không dùng được chế độ này do không thể dự đoán được kích thước cuối cùng của đầu ra Constant rate factor X264 khi chạy ở chế độ này thì dùng 1 giá trị QP trung bình trong suốt quá trình mã hóa ảnh.X264 sẽ tính toán sự khác biệt giữa ảnh chuyển động nhanh và ảnh chuyển động chậm.Ảnh chuyển đông sẽ được mã hóa với lượng bit nhiều hơn còn ảnh chuyển động chậm thì ngược lại.Như vậy chế độ CRF cho chất lượng hình ảnh bằng với chế độ CQP nhưng có tỉ số nén cao hơn.Khoảng giá trị của crf từ 18- 26 cho chất lượng tôt với kích thước file không quá lớn Kết quả thu được mối quan hệ giữa tốc độ bit đầu ra và các tham số điều khiển tốc độ: Bảng 7: Mối quan hệ giữa QP và tốc độ bit đầu ra bộ mã hóa qp fps bitrate 20 20.08 202.18 22 22.56 144.99 24 21.91 103.75 25 23.91 92.33 26 15.32 77.24 28 16.61 57.71 30 17.41 42.83 32 17.55 32.27 34 16.44 25.18 36 17.97 19.59 38 18.52 15.72 40 19.14 13.08 Bảng 8: Mối quan hệ giữa crf và tốc độ bit đầu ra bộ mã hóa crf fps bitrate 20 7.69 202.33 22 13.33 145.04 24 14.44 103.79 25 21.35 92.37 26 16.92 77.29 28 15.16 57.76 30 15.87 42.88 32 16.46 32.31 34 17.79 25.22 36 16.82 19.64 38 18.48 15.77 40 18.88 13.12 Hình 2. 24: quan hệ giữa QP và tốc độ bit đầu ra Hình 2. 25: quan hệ giữa CRF và tốc độ bit đầu ra Hình 2. 26: Đồ thị biểu diễn chất lượng video tương ứng với giá trị QP Nhận xét: Từ những bảng và đồ thị trên ta có một số nhận xét sau: kết quả thực nghiệm giống với lý thuyết. mối quan hệ giữa QP và tốc độ bit đầu ra: QP tăng tương đương với tỷ số nén tăng, bit rate giảm dẫn đến chất lượng video giảm và ngược lại. mối quan hệ giữa CRF và tốc độ bit đầu ra: CRF tăng tương đương với tỷ số nén tăng, bit rate giảm dẫn đến chất lượng video giảm và ngược lại. thực hiện đo psnr của file video mã hoá H.264 với các giá trị QP khác nhau ta thấy được chất lượng video phụ thuộc vào giá trị QP đúng với nhận xét trên. Lệnh transcode sang .264 với các giá trị QP hay CRF khác nhau: với QP =22 ./x264 –q 22 --bframes 2 --ipratio 1.4 --pbratio 1.3 -p 1 akiyo_cif.yuv -o qp22_akiyo_cif.264 352x288 -v --progress MP4Box -hint -add qp22_akiyo_cif.264 qp22_akiyo_cif.mp4 ./ffmpeg –i qp22_akiyo_cif.mp4 qp22_akiyo_cif.ref.264 ./psnr 352 288 420 akiyo_cif.yuv qp22_akiyo_cif_ref.yuv > qp22.txt với QP=20 ./x264 –q 20 --bframes 2 --ipratio 1.4 --pbratio 1.3 -p 1 akiyo_cif.yuv -o qp22_akiyo_cif.264 352x288 -v --progress MP4Box -hint -add qp20_akiyo_cif.264 qp20_akiyo_cif.mp4 ./ffmpeg –i qp20_akiyo_cif.mp4 qp20_akiyo_cif.ref.264 ./psnr 352 288 420 akiyo_cif.yuv qp20_akiyo_cif_ref.yuv > qp20.txt Thiết kế xuyên tầng Hình 2. 27: thiêt kế xuyên tầng GIAO THỨC ĐỊNH TUYẾN OLSR Giới thiệu OLSR là một giao thức định tuyến được phát triển cho mạng di động ad hoc (MANET - Mobile Ad hoc Network). Đây là giao thức tiên tiến, trao đổi thông tin về đường truyền với các nút mạng khác thường xuyên. Olsr là một giao thức định tuyến tiên phong cho mạng vô tuyến ad hoc. Giao thức này kế thừa thuật toán link state và có ưu điểm chọn ra đường đi ngay lập tức khi cần do đặc tính tiên phong của nó. Olsr tối ưu hoá hơn so với giao thức tìm đường link state trước đây và rất hữư ích cho việc định tuyến trong mạng vô tuyến ad hoc. Olsr được thiết kế để làm việc trong môi trường có các nút mạng hoàn toàn rải rác và không phụ thuộc vào bất kỳ một thiết bị trung tâm nào. Giao thức không yêu cầu cơ chế truyền các bản tin điều khiển đáng tin cậy: mỗi nút gửi các bản tin điều khiển có chu kỳ và do đó duy trì một lượng mất gói hợp lý. Sự mất gói diễn ra thường xuyên trong mạng do sự đụng độ hoặc lỗi khi truyền. Một số khái niệm cơ bản: 1-hop neighbor của một node: Node Y được gọi là 1-hop neighbor của node X khi và chỉ khi Y liên kết trực tiếp với X hay nói cách khác Y có thể “nghe” thấy X 2-hop neighbor của một node: Là node lân cận của 1-hopneighbor của node đó, trừ node đó ra. Ví dụ node Z được gọi là 2-hop neighbour của node X khi Z liên kết trực tiếp với Y hay Z có thể “nghe” thấy Y và Z phải khác X Multipoint relay (MPR): Mỗi node sẽ lựa chọn một số node trong 1-hopneighbor của nó làm MPR. Các node MPR sẽ quảng bá tất cả các bản tin mà nó nhận được từ node lựa chọn nó làm MPR. Như vậy có thể thấy MPR là tập hợp con của 1-hopneighbor của một node. MPR sẽ được tính toán lại mỗi khi node phát hiện ra sự thay đổi về kiến trúc mạng của các node nằm trong phạm vi 2 bước nhẩy của nó (1-hopneighbor và 2-hopneighbor ) Multipoint relay selector (MPR selector, MS): Mỗi node sẽ lựa chọn một số node trong 1-hop neighbor của nó làm MPR thì node lựa chọn đó sẽ được gọi là MPR selector của các node làm MPR Symetric link (Liên kết đối xứng): là liên kết hai chiều giữa hai cặp node, hai node này vừa có thể truyền, vừa có thể nhận các gói tin. Hay nói cách khác đây chính là liên kết hai chiều Asymetric link (Liên kết bất đối xứng): là liên kết chỉ có một chiều giữa hai cặp node, tức là chỉ có một node truyền bản tin và một node nhận bản tin mà không có chiều ngược lại Symetric 1-hop neighborhood: Symetric strict 1-hop neighborhood của node X là tập hợp các node mà trong đó có ít nhất một node có liên kết đối xứng với node X Symetric 2-hop neighborhood: Symetric 2-hop neighborhood của node X là tập hợp các node, trong đó bao gồm cả node X có liên kết đối xứng tới 1-hop neighborhood của node X Duplicate Set: là một bộ lưu giữ lại bản sao các bản tin vừa xử lý để tránh lặp lại việc xử lý các bản tin đó OLSR interface: Một thiết bị tham gia vào mạng MANET sử dụng giao thức OLSR thì có thể có một vài giao diện OLSR, mỗi giao diện này sẽ làm việc với một dải IP xác định Hoạt động Optimized Link State Routing (OLSR) hoạt động như là một bảng ghi, giao thức proactive … ,trao đổi thông tin topo mạng với các nút khác thường xuyên.Mỗi nút mạng tự chọn cho mình một MPR (multipoint relay). Trong giao thức định tuyến OLRS, chỉ có những nút mạng được chọn là MPR có trách nhiệm quảng bá các bản tin điều khiển.MPR cung cấp một cơ chế hiệu quả cho việc điều khiển luồng thông tin quảng bá bằng việc giảm đi số lượng các yêu cầu truyền.Các nút được chọn làm MPR có trách nhiệm thông báo thông tin về trạng thái các đường kết nối trong mạng.Thật vây,chỉ có yêu cầu truyền cung cấp đường đi ngắn nhất đến tất cả các nút đích mới được những nút mạng đóng vai trò là MPR thông báo thông tin về trạng thái đường truyền cho chính nút mạng chọn nó làm MPR (MPR selector). Bên cạnh đó, các thông tin trạng thái đường truyền còn được sử dung vào các mục đích khác. Các nút được các nút hàng xóm chọn làm MPR gửi thong tin trạng thái đường truyền một cách đều đặn trong các bản tin điều khiển của chúng. Do đó, một nút gửi các thong tin đến toàn mạng là nút mà tất cả các nút chọn nó là MPR đều có khả năng gửi thong tin đến nó. Trong quá trình tính toán đường đi , các nút MPR được sử dụng để tìm đường đi từ một nút cho trước đến bất kỳ một nút đích nào trong mạng. Ngoài ra, giao thức này sử dung các nút MPR để thực hiện quá trình quảng bá các bản tin điều khiển một cách hiệu quả trong mạng. Một nút lựa chọn ra các MPR tử những nút hang xóm kề cận “đối xứng ” của nó. Do đó, việc chọn đường đi thong qua MPR được thực hiện một cách tự động tránh được các vấn đề về chuyển gói dữ liệu. OLSR được phát triển để hoạt động độc lập từ các giao thức khác. OLSR không hề đưa ra một giả định nào về lớp dưới link-layer. Giao thức định tuyến này thừa kế sự ổn định của thuật toán link-state và có thuận lợi khi luôn có tuyến sẵn có khi cần. Ngoài ra, OLSR cũng thừa kế ý tưởng của forwarding và relaying từ HIPERLAN (giao thức lớp MAC) , một chuẩn của ETSI. Giao thức này được phát triển trong dự án IPANEMA ( một phần của chương trình Euclid ) và trong dự án PRIMA ( một phần của RNRT ) IBSS (IEEE Ad hoc mode) Chuẩn IEEE định nghĩa 2 chế độ cho mạng vô tuyến: Infrastructure mode: Hình 3. 1: Mô hình mạng không dây theo chuẩn IEEE 802.11 infrastructure mode Mạng vô tuyến không dây bao gồm ít nhất một access point (AP) kết nối với mạng có dây và một nhóm các nút mạng không dây (WN- wireless node). Cấu hình này được gọi là “Nhóm dịch vụ cơ bản” - (BSS- Basic Service Set). ESS (Extend Service Set) là một nhóm gồm hai hay nhiều BSS (nhiều tế bào). Ad hoc mode: Hình 3. 2: Mô hình mạng không dây theo chuẩn IEEE 802.11 infrastructure mode Chế độ Ad hoc: thường được gọi là chế độ ad hoc IEEE hay chế độ ngang hang peer-to- peer. Chế độ này được gọi là “chế độ dịch vụ cơ bản không phụ thuộc”- (IBSS- Independent Basic Service Set) - được sử dụng để tạo hệ thống mạng vô tuyến ở những nơi không thể có cơ sở hạ tầng cho mạng vô tuyến bình thường hoặc ở những nơi mà các dịch vụ không dây không cho phép. Vậy tại sao phải dùng OLSR trong khi at đã có IEEE Ad hoc mode: Hình 3. 3: Chế độ IEEE 802.11 ad-hoc không hỗ trợ đa chặng Hình 3. 4: Chế độ IEEE 802.11 ad-hoc truyền đa chặng Thông tin chất lượng đường truyền mở rộng (Link Quality Extension) Debug output: Phân tích bảng thông tin các liên kết: --- 14:28:56.80 ---------------------------------------------------- LINKS IP address       hyst   LQ     lost   total  NLQ    ETX 192.168.0.1      0.000  1.000  0      10     1.000  1.00 Bảng này chứa các liên kết đến hàng xóm. Nó bao gồm các cột sau: IP address - Địa chỉ IP của giao diện liên kết trực tiêp với nút hàng xóm hyst - Giá trị hysteresis của liên kết này. LQ - chất lượng của liên kết được quyết định bởi nút cuối trong liên kết (nút hàng xóm).  lost - số gói mất trong n gói được nút hàng xóm gửi đến gần nhất qua liên kết này. Trong đó n chính là kích thước cửa sổ. total - tổng số gói nhận được cho đến nay.  NLQ - Đây là thông số chất lượng đường truyền cho nút hàng xóm quyết định.Chính là giá trị NLQ chúng at đã định nghĩa trước đây.Giá trị này lấy từ bản tin LQ Hello nhận được từ nút hàng xóm. Chú ý: nếu nút hàng xóm gừng gửi bản tin thì at sẽ không có sự cập nhật cho giá trị này tuy nhiên trong trường hợp đó giá trị LQ sẽ giảm và chất lượng liên kết sẽ giảm theo. ETX -  đây là giá trị ETX cho liên kết này, tính bằng 1 / (NLQ x LQ). Phân tích bảng thông tin các nút hàng xóm --- 14:28:56.80 ------------------------------------------------ NEIGHBORS IP address       LQ     NLQ    SYM   MPR   MPRS  will 10.0.0.6         1.000  1.000  YES   YES   NO    6    Bảng này chứa danh sách tất cả các nút hàng xóm. IP address - địa chỉ IP của nút hàng xóm. LQ and NLQ -  Giá trị LQ và NLQ của liên kết tốt nhất giữa chúng at và hàng xóm. SYM -  Xác định trạng thái của liên kết có ở trạng thái đối xứng hay không dựa vào cơ chế thăm dò của olsr. MPR (multi-point relay) - Giá trị này cho biết chúng at có chọn nút hàng xóm này làm MPR cho mình hay không. MPRS (multi-point relay selector) - Giá trị này cho biết liêu nút hàng xóm có chọn at làm MPR cho nút đấy hay không. will - độ sẵn sàng của nút hàng xóm. Phân tích bảng thông tin về topo mạng --- 14:28:56.80 ------------------------------------------------- TOPOLOGY Source IP addr   Dest IP addr     LQ     ILQ    ETX 10.0.0.6         192.168.0.2      1.000  1.000  1.00 10.0.0.6         10.0.0.5         1.000  1.000  1.00  Bảng này hiển thị thông tin về đồ hình của mạng nhờ việc lấy thông tin của các bản tin TC.Nó cho biết thông tin nút nào gửi bản tin cho nút nào và chất lượng liên kết giữa 2 nút đó.  Source IP addr - địa chỉ IP của nút thông báo liên kết. Dest IP addr - nút đích. LQ (link quality) - chất lượng của liên kết do nút nguồn quyết đinh. Đối với nút nguồn thì đấy là LQ- Link Quality và đối với nút đích thì giá trị này là NLQ- Neighbour link quality. ILQ (inverse link quality) -. chất lượng của liên kết do nút đích quyết định. Giá trị này có chức năng giống hệt như LQ và đối với nút nguồn nó là NLQ, với nút đích nó là LQ. ETX - giá trị ETX của liên kết, tính bằng ETX = 1 / (ILQ x LQ). Phân tích bảng định tuyến tìm đường theo DIJKSTRA --- 14:28:56.80 ------------------------------------------------- DIJKSTRA 10.0.0.6:1.00 (one-hop) 10.0.0.5:2.00 <- 10.0.0.6:1.00 (one-hop) Bảng này hiển thị đường đi tốt nhất mà olsr có thể tìm cho mỗi một nút đích. Địa chỉ IP tận cùng bên trái ở mỗi dòng là địa chỉ của nút đích.Các địa chỉ ip còn lại trong một dòng xác định các nút trung gian trên đường đó. Di chuyển từ địa chỉ nguồn sang bên phải từng địa chỉ ip, chúng ta càng tiến từ đích đến chúng ta từng hop.Ở trong ví dụ trên, chúng ta thấy có những đường đi đến 2 địa chỉ ip 10.0.0.6 và 10.0.0.5. ở dòng đầu tiên, không hề có nút trung gian nào giữa ta và nút đích và ip của nút đích là địa chỉ duy nhất trên dòng này. ở dòng thứ 2, chúng ta có 1 nút trung gian là 10.0.0.6. Do đó, ở dòng 2 miêu tả để đến được 10.0.0.5 ta phải đi qua 10.0.0.6. GIỚI THIỆU VỀ THIẾT KẾ XUYÊN TẦNG Mối liên hệ code giữa vlc, x264 và olsrd Hình 4. 1 Sơ đồ code giữa vlc, x264 và olsr Thiết kế xuyên tầng giữa vlc, x264 và olsrd Hình 4. 2 Thực thi thiết kễ xuyên tầng KẾT QUẢ NGHIÊN CỨU, KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO Test case 1: Thí nghiệm chứng tỏ etx là giá trị cần truyền cho vlc Thí nghiệm 1: Hình 5. 1: Thí nghiệm 1 Hình 5. 2: thí nghiệm 2 +) thí nghiệm: + hình 5.1 : chụp tại embedded board armadillo300 +) hình 5.2: chụp tại máy laptop có ip add là 192.168.10.102 +) 2 hình được capture tại cùng 1 thời điểm . +) nhận xét: Qua thí nghiệm thấy rằng: tỷ số LQ/Lost giữa 2 máy là khác nhau mặc dù cùng 1 điều kiệm môi trường và thời gian. +)Nguyên nhân: do công suất phát gói tin ở các nút mạng là khác nhau. Thí nghiệm 2: Hình 5. 3: Thí nghiệm 2 có 3 máy với IP add là: 192.168.10.100 192.168.10.101 192.168.10.102 (đặt trong phòng)‏ (hình vẽ được chụp từ máy .101)‏ Vì các thiết bị đặt trong vùng phủ sóng của nhau nên trong bảng two-hop neighbors: .101 đến .102 thông qua .100 nên .102 là 2-hop neigbor và .100 là 1-hop neighbor Tương tự cho quãng đường còn lại. Có thể thấy chúng tạo thành 1 tam giác. Trong khi đó tỷ số LQ/lost Từ .100 đến .101 (đỏ) khác với .101 đến .100 Từ .101 đến .102 (xanh) bằng .102 đến .101 ETX=1/(LQ x ILQ) và giá trị total (tại bảng Links)=1/(LQ x lost)‏ Nhận xét: Etx là giá trị đánh giá chất lượng đường truyền cả 2 chiều. Etx cho biết số gói tin cần thiết để truyền thành công 1 gói tin. Kết quả thu được: Thực thi thiết kế xuyên tầng thành công: Hình 5. 4: VLC thực hiện quá trình lấy địa chỉ IP nguồn và địa chỉ IP đích Hình 5. 5: OLSR nhận địa chỉ từ vlc Hình 5. 6: OLSR hiển thị bảng định tuyến của liên kết vừa thiết lập Hình 5. 7: OLSR thường xuyên cập nhật giá trị etx Hình 5. 8: Tốc độ bit đầu ra khi đã có điều khiển tốc độ Hình 5. 9: Video truyền đi Kết luận Đồ án xây dựng hoàn chỉnh cơ chế giao tiếp xuyên tầng từ tầng định tuyến OLSR lên tầng transport và application VLC bằng IPC bộ nhớ chung , xử lý thông tin đưa lên và điều khiển tốc độ luồng video truyền đi.Việc thay đổi tốc độ thời gian thực đã thực hiện được thành công đạt được mục đích đã đề ra điều khiển tốc độ mã hoá video tương thích với đường truyền mạng Ad hoc. Đồ án đã thực hiện thành công điều khiển 2 tham số điều khiển tốc độ QP và CRF, và đã thực hiện việc truyền mạng ad hoc đa chặng qua các nút trung gian. Tuy nhiên việc sử dụng bộ nhớ ngoài cho giao tiếp IPC chưa tối ưu khi hệ thống được triển khai trên các thiết bị nhúng có tài nguyên hạn chế. Ngoài ra, việc cập nhật tham số etx 2 giây một lần khá thưa thớt chưa đủ để cho thực hiện cơ chế điều khiển tốc độ tối ưu do đó còn cần phối hợp với bản tin feedback. Hướng nghiên cứu tiếp theo: Tìm hiểu cơ chế giao tiếp IPC dung bộ nhớ trong Nghiên cứu thuật toán tìm đường của olsr để đưa ra danh sách tuyến đi Tính giá trị etx, NLQ của nút đầu cuối Phát triển them cơ chế điều khiển tốc độ dung tốc độ bit trung bình dưới ảnh hưởng của tốc độ truyền khung. Thiết kế giao diện riêng của olsr bằng tiếng Việt thân thiện với người dung với thư viện GTK. TÀI LIỆU THAM KHẢO Iain E. G. Richardson , “H.264 and MPEG-4 Video Compression Video Coding for Next-generation Multimedia “, John Willey & Son 2003 Tien Pham Van, “Proactive ad hoc devices for relaying real-time video packets”, Doctor of Philosophy Dissertation 2007 ITU-T Recommendation H.264 Advanced video coding for generic audiovisual services: Advanced video coding for generic audiovisual services 2006 Colin Perkin, “RTP: Audio and Video for the Internet”, Addison Wesley 2003 S. Wenger M.M. Hannuksela, T. Stockhammer , Request for Comments 3984: RTP Payload Format for H.264 Video,2005 David Austerberry, “The Technology of Video and Audio Streaming”, Focal press 2005 Victor Ramamoorthy ,”A ρ-domain Rate Control Algorithm for the H.264 Encoder “,CA 94566 2004 László Czúni, Gergely Császár, Attila Licsár,”Estimating the Optima Quantization Parameter in H.264”, Pannon University, Veszprém, Hungary 2006 M. Mahdi Ghandi and Mohammed Ghanbari ,”A lagrangian optimized rate control algorithm for the h.264/avc encoder”,Department of Electronic Systems Engineering, University of Essex 2007 Thomas Wiegand et al, .Overview of the H.264/AVC video coding standard,. IEEE Trans. on circuits and systems for video technology, Vol. 13, No. 7, pp. 560-576, July 2003 Thomas Wiegand et al, .Rate-Constrained Coder Control and Comparison of Video Coding Standards,.IEEE Trans. on circuits and systems for video technology,Vol. 13, No. 7, pp. 688-703, July 2003 Thomas schierl and Thomas wiegand.“H.264/avc rate adaptation for Z. Li et al., "Proposed Draft of Adaptive Rate Control," JVT-H017, 8th Meeting: Geneva, May 2003 RFC 3626- request for comments

Các file đính kèm theo tài liệu này:

  • docFinal Thesis-Le Huy Binh.doc