Mục lục
Lời nói đầu 1
Tóm tắt đồ án 2
Abstract 3
Lời cảm ơn 4
Mục lục 5
Danh sách hình vẽ 7
Thuật ngữ viết tắt 9
Thuật ngữ viết tắt 9
Chương 1 Giới thiệu chung 11
1.1 Mục đích thiết kế 11
1.2 Phương pháp nghiên cứu 12
Chương 2 Chuẩn nén video H.264 14
2.1 Giới thiệu chung về bộ codec h264 14
2.1.1 Encoder 14
2.1.2 Decoder 15
2.2 Cấu trúc của H264 16
2.2.1 Định dạng video (video format) 16
2.2.2 Định dạng dữ liệu được mã hóa 16
2.2.3 Slice 17
2.2.4 Macroblock 18
2.2.5 Ảnh tham chiếu (reference picture) 18
2.2.6 Profile 20
2.3 Lớp mạng trừu tượng 21
2.3.1 Cấu trúc của NAL unit 22
2.3.2 Tập tham số (parameter set) 26
2.3.3 Trật tự của các NALU và liên kết tới các ảnh được mã hóa,đơn vị truy cập và chuỗi video 28
2.4 Điều khiển tốc độ (Rate control) 34
2.4.1 Tham số lượng tử (QP) 34
2.4.2 Mô hình rate control trong h264 35
2.4.3 Phân loại ratecontrol 46
Chương 3 Giao thức truyền tải thời gian thực RTP 48
3.1 Giao thức truyền dữ liệu RTP 48
3.2 Giao thức điều khiển luồng RTCP 53
3.2.1 RTCP RR: Receiver Reports 56
3.2.2 RTCP SR: Sender Reports 57
3.3 Tải dữ liệu của RTP cho h264 59
3.3.1 Đơn vị NAL đơn (single nal unit) 60
3.3.2 Gói tích lũy đơn thời gian (STAP) 61
3.3.3 Gói tích lũy đa thời gian (Multi time aggregate packet hay MTAP) 62
3.3.4 Đơn vị phân đoạn (Fragmentation Unit hay FU) 64
Chương 4 Cross-layer design cho mạng adhoc 67
4.1 Giới thiệu về cross-layer 67
4.2 Sơ đồ thiết kế 68
4.2.1 Module transcode 69
4.2.2 Module transport 73
4.2.3 Module routing 83
Chương 5 Kết quả nghiên cứu, kết luận và hướng nghiên cứu tiếp theo 85
5.1 Test case 85
5.1.1 Test case 1: Streaming server không thay đổi tham số mã hóa khi hoạt động 85
5.1.2 Test case 2: Streaming server thay đổi tham số trong thời gian thực khi truyền thành công 50 gói RTP liên tiếp 86
5.1.3 Test case 3: Streaming server thay đổi tham số trong thòi gian thực khi nhận thông tin từ phản hồi từ client 87
5.2 Kết quả thu được 88
5.2.1 Test report 88
5.2.2 Khi không thay đổi tham số mã hóa trong thời gian thực 90
5.2.3 Khi thay đổi tham số mã hóa 90
5.2.4 Danh sách gói mất tại phía phát và phía thu 95
5.3 Kết luận 96
5.4 Hướng nghiên cứu tiếp theo 97
Tài liệu tham khảo 99
99 trang |
Chia sẻ: lethao | Lượt xem: 1834 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Truyền video đa chặng trong mạng AD HOC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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)
Tham số lượng tử (QP)
Công thức cơ bản của lượng tử hóa thuận:
Trong đó:
là hệ số chuyển đổi ,QStep là độ lớn của bước lượng tử hóa và là hệ số được lương tử.
Rounding ở đây không không cần làm tròn tới sô nguyên gần nhất mà "round" hướng it tới số nguyên nhỏ hơn có thể đạt được sự cải thiện về chất lượng nhìn thấy đươc
Tổng số 52 giá trị của bước lượng tử được đánh chỉ số bỏi 1 tham số lượng tử (QP).QStep tăng gấp đôi giá trị khi QP tăng lên 6 đơn vị. độ lớn
Phạm vi của độ lớn của bước lượng tử làm cho nó có thể chấp nhận đươc cho 1 bộ mã hóa để điều khiển chính xác và linh hoạt sự cân bằng giữa tốc độ bit và chất lương.Giá trị của QP có thể khác biệt đối với độ chói và độ sai khác màu
Hinh 216: Bảng lượng tử
Mô hình rate control trong h264
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
Hinh 217: Quan hệ giữa QP và tốc độ
Hinh 218: Quan hệ giữa độ phức tạp nguồn và độ méo
Hinh 219: Mô hình ratectrol trong h264
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 at mã hóa video ở gần tốc độ bit không đổi,và để thực hiện đ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)
a)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 :
(2-1)
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ư :
b)Mức độ khung (Frame level)
Điều khiển tốc đôj mức độ ảnh có 2 giai đoạn : pre-encoding và post- encoding.
1)Giai đoạn 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
(2-2)
-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
(2-3)
Với k =1, …, L, và α được cho bởi
(2-4)
Giá trị nằm trong đoạn [0, 51].
+Ảnh được 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ữ ở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
(2-5)
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 :
(2-6)
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
(2-7)
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:
(2-8)
Trong đó g là hằng số và giá trị điển hình là 0.5 khi không có ảnh không được lưu trữ và 0.25 cho các trường hợp còn lại..
Đồ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
(2-9)
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à :
(2-10)
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 :
(2-11)
Với Zi(j) và Ui(j) được tính bởi công thức
(2-12)
(2-13)
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 đó
(2-14)
Trong đó a1 và a2 là 2 hệ sô. Gái trị khởi đầu của a1 và a2 được đặt lần lượt là 1 và 0 .Hai hệ số 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 bit mong muốn đuocj tính theo công thức sau
(2-15)
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
Gía trị QP cuối cùng dược giới hạn bởi 0 và 51.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
2)Giai đoạn post-encode
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
3)Điều khiển tốc độ mức độ đơn vị 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
(2-16)
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à, được thay thế bằng giá trị trung bình cho các đơn vị 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 hiện tại của ảnh được lưu trữ trước đây
+Bước 2:Tinh 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ước2.1: Tính toán lượng bít mong muốn cho dơn vịcơ bản thứ j
Để chỉ số bit còn lại cho khung hình hiện tại và gía 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:
(2-17)
-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:
(2-18)
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
(2-19)
+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
(2-20)
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 để trong lượng bít được tạo ra gần với lượng bit yêu cầu
(2-21)
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 các trường họp còn lại. được cập nhật sau khi mã hóa 1đơn vị cơ bản:
(2-22)
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 :
(2-23)
-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
(2-24)
+Bước 4:Thự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 5:Cậ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.
Tính toán độ phức tạp (Complexity Estimation)
Độ 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 độ dư thừa để 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
(2-25)
với giả thiết xi là giá trị nguồn của pixel thứ i:
Bộ khởi tạo QP (QP initializer)
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
(2-27)
với
(2-27)
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 (Virtual bufer model
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ượng 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ự thay đổi giá trị QP không quá ± 2 đơn vị giữa các ảnh
Phân bố bít của đơn vị cơ bản (Basic Unit Bit Allocation)
Đơn vị cơ bản là khái niệm cơ bản trong đ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 được 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 xét MAD (mean absolute difference ) của bức ảnh , quyết định cấp độ đích cho mức đầy bộ đệm
Phân loại ratecontrol
1pass VBR
Hinh 220: Chế độ tốc độ biến đổi
VBR (variable bitrate) là chế độ 1pass được thiết kế cho truyền thời gian thực.Nó cũng có tình toà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ứ.Bù quá tràn (overflow compensation) được chạy sau mỗi hàng của macroblock thay vì trên mỗi khung
1pass CBR
Hinh 221: Chế độ tốc độ không đổi
CBR (constant bitrate) 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.CBR 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
1pass constant QP: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)
1pass ABR:Đây là kịch bản 1-pass khi diều khiển tốc độ phải được thực hiện mà không biết khung sau này.Vì vậy,ABR không thể đạt được kích thước file mong muốn môt cách chính xác.Chế độ này sử dụng SATD(Sum of Absolute Hadamard Transformed Differences) của độ dư thừa như là độ phức tạp
1pass constant QP: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)
Giao thức truyền tải thời gian thực RTP
Giao thức truyền dữ liệu RTP
Hinh 31: Tiêu đề gói RTP
Payload type
Chỉ định loại media nào được truyền đi trong các gói RTP. Các ứng dụng bên nhận kiểm tra trường này để quyết định cách thức xử lý dữ liệu.
Tất cả các định dạng dữ liệu đều được đăng ký theo chuẩn MIME (MIME type registration). Các định dạng mới hơn được định nghĩa trong đặc tả của chúng; Một nhóm đăng ký cho các định dạng cũ hơn đang được phát triển. Toàn bộ danh sách
Trong chuẩn MIME được lưu trực tuyến tại địa chỉ :
Dù kiểu dữ liệu được chỉ định là tĩnh hay động, điều cần thiết là phải mô tả được phiên hiện thời tới ứng dụng sao cho ứng dụng đó hiểu được những loại dữ liệu nào dang được sử dụng. Một trong các giao thức dùng để mô tả phiên đó là SDP (Session Description Protocol). Một ví dụ về một bản ghi SDP như sau:
v=0
o=bloggs 2890844526 2890842807 IN IP4 10.45.1.82
s=-
e=j.bloggs@example.com(Joe Bloggs)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 98
a=rtpmap:98 H263-1998/90000
Ví dụ trên mô tả 2 phiên RTP, audio được gửi tới một nhóm IPv4 multicast 224.2.17.12 qua cổng 49170, Time-To-Live là 127, video được gửi tới cùng nhóm multicast nói trên qua cổng 51372. Cả audio và video đều sử dụng giao thức RTP/AVP làm giao thức chuyển vận.
Sequence number
Là số không dấu 16 bit dùng để phân biệt các gói,và được dùng để sắp xếp gói theo đúng trật tự ở phía thu và phát hiện mất gói.Tuy nhiên nó không được dùng để đặt lịch playout của các gói tin
Giá trị của số thứ tự được khởi đầu ngẫu nhiên để tăng tính bảo mật của dòng dữ liệu (khó cho các cuộc tấn công khi không biết phiên bắt đầu từ gói nào).
Giá trị của số thứ tự tăng lên 1 sau mỗi gói và khi giá trị của số thứ tự tăng tới giá trị tối đa (65535) thì trở về 0.Và giá trị của số thứ tự tăng đều liên tục không nhảy lại phía sau trừ trưòng hợp quay vòng (wrap-around).
Tùy theo ứng dụng người ta có thể dùng thêm số thứ tự mở rộng theo công thức sau:
extended_sequence_number = sequence_number + (65535 * wrap_around_count)
Timestamp
Nhãn thời gian chỉ khoảng thời gian lấy mẫu của octet đầu tiên của dữ liệu media ở trong 1 gói, đựoc dùng để đặt lịch của dữ liệu media
Nhãn thời gian là số nguyên 32 bit không dấu tăng tuỳ theo tốc độ của media,và trở về không khi giá trị đạt cực đại.Giá trị bắt đầu là ngẫu nhiên làm cho các cuộc tấn công vào dòng dữ liệu khó khăn hơn
Nhãn thời gian không phải là duy nhất trong 1 phiên,2 gói dữ liệu khi có cùng nhãn thời gian có nghĩa là chúng có cùng thời gian lấy mẫu.Cụ thể hơn,trong trưòng hợp truyền 1 khung video có kích thước lớn,khung sẽ chia thành các mảnh nhỏ hơn và được đóng trong các gói có số thứ tự khác nhau nhưng có cùng nhãn thời gian
Hinh 32: Quá trình đóng gói khung video thành các gói RTP có cùng nhãn thời gian
SSRC
Được sử dụng để định danh các bên tham gia trong một phiên RTP. Giá trị của nó chỉ có ý nghĩa trong một phiên và được ánh xạ tới một định danh phiên (long- lived canonical name) CNAME thông qua giao thức điều khiển RTCP.
SSRC là một số nguyên 32 bit có giá trị ngẫu nhiên được chọn bởi các bên tham gia khi tham gia vào phiên. Bởi SSRC được chọn ngẫu nhiên từ phía host nên sẽ có thể xảy ra trường hợp 2 bên tham gia có cùng giá trị này. Những xung đột kiểu như vậy có thể được phát hiện khi một ứng dụng nhận được một gói từ một bên tham gia khác có số SSRC trùng với số SSRC của nó, phương pháp phát hiện xung đột này đảm bảo SSRC là duy nhất cho mỗi bên tham gia trong một phiên.
Tất cả các gói có cùng SSRC tạo, bên nhận cần phải nhóm các gói theo SSRC để thực hiện quá trình playback. Nếu một bên tham gia nào đó tạo ra nhiều luồng media trong một phiên RTP thì với mỗi luồng sẽ phải có một số SSRC khác nhau để các bên nhận có thể phân biệt gói nào thuộc luồng nào.
CSRC
Trong các trường hợp thông thường, các gói RTP được tạo ra chỉ bởi một nguồn duy nhất, nhưng khi có nhiều luồng RTP đi qua một bộ mixer hoặc translator, các dữ liệu từ nhiều nguồn này có thể được góp vào một gói RTP. Trong danh sách CSRC chứa thông tin của các bên tham gia có dữ liệu nằm trong gói RTP nhưng không chứa các thông tin liên quan đến thời gian và đồng bộ. Mỗi mã nhận dạng nguồn là một số nguyên 32 bit mang thông tin chính là SSRC của bên tham gia có dữ liệu nằm trong gói. Chiều dài của danh sách CSRC được chỉ định trong trường CC của RTP Header.
Các gói chứa danh sách CSRC được tạo ra bởi bộ RTP Mixer, khi nhận được một gói chứa danh sách CSRC, các số SSRC sẽ được sử dụng để nhóm các gói và xử lý một cách bình thường và mỗi CSRC được thêm vào danh sách các bên tham gia đã biết. Mỗi bên tham gia xác định bởi một CSRC sẽ có một luồng giao thức điều khiển gói RTP tương ứng mang đầy đủ thông tin về bên tham gia.
Maker
Bit đánh dấu Marker trong header của RTP được sử dụng để đánh dấu các sự kiện trong một luồng media, giá trị của nó quyết định bởi đặc tả RTP và định dạng media được sử dụng.
Đối với các luồng dữ liệu audio sử dụng đặc tả RTP cho dữ liệu audio và video với cấu hình tối thiểu, bit Marker được đặt là 1 khi gói đầu tiên được gửi sau một khoảng lặng, còn lại được đặt là 0. Bit Marker được đặt là 1 là dấu hiệu cho các ứng dụng biểt được lúc nào nên điều chỉnh thời lượng chơi bởi một chút thay đổi trong độ dài khoảng lặng thường người nghe khó nhận ra.
Đối với các luồng dữ liệu video sử dụng đặc tả RTP cho dữ liệu audio và video với cấu hình tối thiểu, bit Marker được đặt là 1 khi đó là gói cuối cùng chứa dữ liệu của một frame video, các gói khác được đặt bằng 0. Bit Marker được đặt là 1 là dấu hiệu cho các ứng dụng biết thời điểm nào bắt đầu giải mã frame đó thay vì chờ đợi một gói có timestamp khác (cũng là một cách nhận biết) để xác định dữ liệu đầy đủ cho một frame.
Trong mọi trường hợp, bit Marker chỉ là dấu hiệu cho các ứng dụng. Với luồng audio, thông thường có thể nhận biết điểm kết thúc của một khoảng lặng nhờ mối quan hệ giữa sequence number và timestamp thay đổi. Điểm bắt đầu của một frame video có thể được phát hiện bởi sự thay đổi timestamp. Một ứng dụng có thể sử dụng các nhận biết này để hoạt động tốt nhưng làm giảm khả năng thi hành nếu gói chứa bit Marker bị mất.
Version
Mỗi gói RTP chứa một số chỉ phiên bản hiện hành của RTP là trường V trong header RTP. Phiên bản hiện thời là 2, phiên bản cũ không còn được sử dụng rộng rãi. Mục đích duy nhất của trường này là kiểm tra tính hợp lệ của gói.
Padding
Bit Padding trong header RTP được sử dụng để chỉ thị rằng có một đoạn dữ liệu bổ sung ở phía sau dữ liệu chính. Khi bit P được đặt bằng 1, octet cuối cùng của phần dữ liệu sẽ chỉ kích thước (số lượng octet) của phần dữ liệu bổ sung. Phần dữ liệu bổ sung này ít khi được sử dụng nhưng đôi khi cần thiết trong một số phương thức mã hóa, sửa lỗi hoặc để điều chỉnh kích thước gói cho phù hợp với dung lượng kênh.
Header extension
RTP cho phép một phần header mở rộng được báo hiệu bằng bit X trong header RTP. Khi bit X được đặt là 1, sau phần header cố định của RTP và trước phần dữ liệu của gói sẽ có một header mở rộng, chiều dài của header này không cố định nhưng đều bắt đầu bằng 16 bit chỉ kiểu và 16 bit chỉ chiều dài (không bao gồm 32 bit này), cho phép các ứng dụng có thể loại bỏ nếu không đọc được thông tin trong header này.
Header mở rộng này được cung cấp khi ứng dụng cần nhiều thông tin hơn những gì có trong header cố định của RTP. Chúng rất ít khi được sử dụng. Thông thường thay vì sử dụng header mở rộng, chúng ta sẽ lưu các thông tin bổ sung bên trong phần dữ liệu của gói như là một header của phần dữ liệu.
Giao thức điều khiển luồng RTCP
Giao thức điều khiển RTCP gửi các thông tin phản hồi từ bên nhận một cách tuần hoàn, các thông tin đó bao gồm phản hồi về chất lượng, xác nhận các bên tham gia, thông tin mô tả nguồn, cảnh báo về sựthay đổi về các thành viên trong phiên, và các thông tin về đồng bộ các luồng. Cấu trúc của gói điều khiển RTCP được thể hiện trong Hình 3-3.
Hinh 33: Cấu trúc gói điều khiển RCTP
Version (V):
Kích thước 2 bit luôn có giá trị bằng 2 thể hiện phiên bản của RTP. Do hiện chưa có kế hoạch cho việc phát triển các phiên bản tiếp theo và các phiên bản cũ không còn sử dụng rộng rãi.Thường được sử dụng để kiểm tra tính hợp lệ của gói.
Padding (P):
bit P được đặt bằng 1 khi có một hay nhiều octet được bổ sung vào cuối gói, octet cuối cùng lưu thông tin về sốlượng octet được bổ sung. Mục đích sử dụng tương tự như trong gói RTP. Sử dụng sai bit P có thể gây ảnh hưởng tới hoạt động của giao thức RTCP.
Item count (IC):
Một số kiểu gói RTCP chứa một danh sách các phần tử. Trường này được sử dụng để chỉ số lượng phần tử được đặt trong gói. Số phần tử tối đa là 31, nếu cần hơn 31 phần tử thì cần tạo ra nhiều gói RTCP. IC có thể bằng 0, nghĩa là gói không chứa phần tử nào. Các kiểu gói không sửdụng đến số lượng phần tử có thể dùng trường này vào mục đích khác.
Packet type (PT):
Chỉ định kiểu thông tin chứa trong gói. Có 5 kiểu gói chuẩn được định nghĩa trong đặc tả của RTP. Các kiểu khác có thể được định nghĩa trong tương lai.
Chiều dài (length):
Chỉ chiều dài của phần dữ liệu theo sau phần header chung. Đơn vị của nó là 32 bit (4 octet) bởi kích thước của gói RTCP luôn là số nguyên lần của 32 bit. Giá trị độ dài có thể bằng 0 nghĩa là gói chỉ chứa 4 octet header.
Theo sau header RTCP là phần dữ liệu và phần dữ liệu bổ sung nếu có.
Gói RTCP không bao giờ được truyền đi một cách riêng lẻ, thay vào đó chúng luôn được gộp lại với nhau tạo thành một nhóm gói (compound packets) để cùng truyền đi. Mỗi nhóm gói được đặt trong một gói ở lớp thấp hơn, thông thường là gói UDP/IP để truyền đi. Nếu nhóm gói được mã hóa, nhóm gói sẽ bắt đầu bằng một trường 32 bit có giá trị ngẫu nhiên.
Hinh 34: Cấu trúc gói SR
RTCP RR: Receiver Reports
Một trong những chức năng chủ yếu của RTCP là ghi nhận về chất lượng đường truyền, chức năng này được thực hiện thông qua gói RR được gửi bởi tất cả các bên tham gia có nhận dữ liệu.
Cấu trúc một gói RR được thể hiện qua Hình 3-5. Một gói RR có thông tin về kiểu gói là 201, ngoài ra nó còn chứa số SSRC của bên tham gia đã gửi gói RR này và theo sau đó là các khối báo cáo nếu có được định lượng bằng trường RC.
Hinh 35: Cấu trúc gói SR
Mỗi khối thông tin mô tả về chất lượng dữ liệu nhận của một bên tham gia đang nhận dữ liệu RTP trong quá trình báo cáo. Tổng số có thể có đến 31 khối báo cáo trong một gói RR. Nếu có hơn 31 bên tham gia trong phiên thì cần phải tạo ra nhiều gói RR và gộp chúng vào trong một nhóm gói. Mỗi khối thông tin có 7 trường và có kích thước tổng cộng là 24 octet.
Loss fraction: Tỷ lệ gói bị mất mát là số gói