Một chương trình TV thường gồm có thông tin về hình ảnh, âm thanh và các dữ liệu khác liên quan. Mặc dù một dòng truyền tải chỉ mang một chương trình đơn cũng được cho phép nhưng mục đích chính khi thiết kế dòng truyền tải là để ghép nhiều chương trình truyền hình vào một dòng truyền tải duy nhất.
Audio PES
PID (n-1)
()
Elementary stream map (Program_map_table) Transport Stream Mux Transport Stream (TS) Video PES Audio PES Video PES Data PID 1 PID 2 PID (n-3) () PID (n-2) () PID (n) ()
Nếu chia các gói PES có độ dài khác nhau thành các gói TS có độ dài không đổi (mỗi gói TS được bắt đầu bằng TS header và thường có chiều dài 188 bytes) và truyền các gói này đi sau khi đã cộng với dòng bit điều khiển dùng để mô tả chương trình (cũng được đóng gói thành các gói truyền tải), ta sẽ có dòng truyền tải TS.
Hình 2: Dòng Truyền Tải
Trong dòng truyền tải , các gói PES từ các dòng gói sơ cấp khác nhau được phân nhỏ và gán vào phần payload của gói tần số. Quy trình này phải thỏa mãn 2 điều kiện:
- Byte đầu tiên của mỗi gói PES phải trở thành byte đầu tiên của phần payload của gói TS.
- Bất kỳ gói TS nào cũng chỉ mang phần dữ liệu lấy từ cùng một gói PES.
PES Header Audi o Video Vide o Audio Vide o TS Header Gói TS Audio
Header của PES Payload PES
Hình 3: Chia các gói PES thành các gói TS
Mỗi gói PES không thể phân chia dữ liệu của nó một cách chính xác vào một số nguyên gói TS.
Thường gặp trường hợp không đủ số liệu để lấp đầy vào payload của gói TS cuối cùng.
Để thỏa mãn hai điều kiện trên, người ta độn thêm phần Adaptation Field với độ dài thích hợp. có thể giảm thiểu độ dài Adaptation Field này bằng cách lựa chọn chiều dài gói PES hợp lý.
Gói PES cũng thường được chọn đủ dài để điểm ảnh số các gói TS được lấp đầy bởi số liệu có ích lấy từ các gói PES. ( hình 3)
Tất cả các dòng gói sơ cấp PES ghép kênh chung với nhau tạo nên một hay nhiều chương trình sẽ được chuyển thành các gói TS theo cùng một cách thức nêu trên.
Các gói TS sẽ được sắp xếp tuần tự tạo ra dòng truyền tải.
Các gói TS chứa thông tin dịch vụ cũng như các gói TS rỗng được sử dụng để lấp đầy kênh truyền.
Thứ tự các gói TS có thể sắp xếp tùy ý miễn sao đảm bảo được điều kiện các gói TS của cùng một dòng sơ cấp đóng gói PES phải được truyền theo thứ tự thời gian.
2. Cấu trúc gói truyền tải
SVTH :Ngọc Bình – Minh Nhật – Thu Hà – Kiều Loan 31
Header Payload … Header Payload … Header Payload …
TRANSPORT ERROR INDICATOR (1 BIT) TRANSPORT PRIORITY (1 BIT) CONTINUITY COUNTER (4 BIT) START INDICATOR (1BIT) ADAPTATION FIELD CONTROL (2 BIT) PID (13 BIT) SYNC BYTE (8 BIT) SCRAMBLING CONTROL (2 BIT) ADAPTATION FIELD PAYLOAD DISCONTINUITY INDICATOR (1 BIT) RANDOM ACCESS INDICATOR (1 BIT) ELEM STREAM PRIORITY INDICATOR (1 BIT) 5 FLAGS (5 BIT) ADAPTATION FIELD LENGHTH (1 BYTE) OPTIONAL FIELDS STUFFING BYTES
Đồ án: Truyền Dẫn Tín Hiệu Truyền Hình Số GVHD: Thầy Lê Nghĩa Lâm
Hình 4 :Cấu trúc gói truyền tải
Gói truyền tải có kích thước cố định và bằng 188 bytes, chia thành dữ liệu tiêu đề (header) và phần tải tin (payload). (payload). Để cho việc truyền tải có hiệu quả thì kích thước phần tiêu đề thường là nhỏ, nhưng nhằm thực hiện một số mục đích đặc biệt thì phần tiêu đề có thể được mở rộng. Khi ấy phần tải tin sẽ được thu hẹp lại để đảm bảo kích thước của gói truyền tải vẫn là không đổi.
Dữ liệu tiêu đề có độ dài tối thiểu bằng 4 bytes và chứa những thông tin sau:
• Sync Byte (8 bit): Byte đồng bộ mang giá trị không đổi bằng 0x47 dùng để đồng bộ các gói TS, byte này sẽ được nhận biết bởi một bộ giải mã.
• Transport Error Indication (1 bit): Bit này dùng để báo hiệu có lỗi gói xảy ra trên đường truyền – khi tỉ lệ lỗi bit (BER) vượt quá giá trị cho phép. Giá trị 1 chỉ thị rằng đang có lỗi không thể sửa được trong gói TS hiện hành, vì vậy không nên sử dụng phần payload trong gói TS này.
• Chỉ thị bắt đầu đơn vị dữ liệu (Payload Unit Start Indicator): trường cờ 1 bit mang thông tin về gói PES hoặc dữ liệu PSI trong gói truyền tải.
Khi mà phần tải tin của gói truyền tải mang dữ liệu của các gói PES thì bít này có ý nghĩa như sau: bit có giá trị ‘1’ nếu phần payload của gói truyền tải này chứa byte đầu tiên của gói PES, có giá trị ‘0’ nếu không phải như vậy.
Khi mà phần tải tin của gói truyền tải mang dữ liệu PSI thì bit này được đặt là ‘1’ nếu gói này có chứa byte đầu tiên của PSI, nếu không phải vậy thì bit này sẽ có giá trị ‘0’.
EXTENSION (40 BIT) DATA
• Transport priority (1 bit): Giá trị 1 chỉ thị gói TS này có quyền ưu tiên hơn các gói khác. Nếu hệ thống truyền hình số không hỗ trợ việc phân phối tín hiệu có ưu tiên thì bit này sẽ được bỏ qua ở tất cả phía thu.
• Packet Identification code hay PID (13 bit): Đây là thông tin để nhận dạng gói TS thuộc một dòng sơ cấp đóng gói PES hay thuộc về một PSI cụ thể nào đó. Trong 213 giá trị có thể có, 17 giá trị được dành riêng cho các mục đích đặc biệt. Còn lại 8175 giá trị được dùng để gán cho các dòng gói sơ cấp PES hay PSI khác nhau. Như vậy, có thể ghép tối điểm ảnh đến 8000 dòng gói sơ cấp vào một dòng truyền tải. Sau đây là bảng các giá trị PID:
Giá trị Mô tả
0x0000 Bảng liên kết chương trình(Program Association Table) 0x0001 Bảng truy nhập có điều kiện (Conditional Access Table) 0x0002 Transport Stream Description Table
0x0003 - 0x000F Dự phòng 0x00010 … 0x1FFE
Có thể được gán cho network_PID, Program_map_PID, elementary_PID hoặc các mục đích khác.
0x1FFF Gói rỗng (Null packet)
• Điều khiển đảo mã truyền tải (Transport Scrambling Control): trường 2-bit chỉ ra kiểu xáo trộn dữ liệu trong tải tin của gói truyền tải. Phần tiêu đề (header) và phần thích nghi (adaptation field) trên thực tế không được xáo trộn. Trong trường hợp gói rỗng giá trị của trường này được đặt là ‘00’. Sau đây là bảng giá trị của trường này:
Giá trị Mô tả
00 Không xáo trộn
10 Bị xáo trộn bởi khóa ‘chẵn’ 11 Bị xáo trộn bởi khóa ‘lẻ’
• Điều khiển trường thích nghi (Adaptation Field Control): cho biết thông tin về trường thích nghi (Adaptation Field):
Giá trị Mô tả
00 Dự phòng
01 Không có trường thích nghi, chỉ có payload 10 Chỉ có trường thích nghi, không có payload 11 Có trường thích nghi, sau đó là payload
• Bộ đếm liên tục (Continuity Counter): đây là bộ đếm 4-bit, đếm các gói có cùng PID. Khi đạt giá trị lớn nhất (0xF) thì sẽ quay về 0. Bộ đếm này sẽ không thực hiện đếm nếu giá trị của Adaptation Field Control là ‘00’ hoặc ‘10’.
Trong dòng truyền tải, một gói có thể được gửi thành hai lần. Trong đó gói thứ hai là bản sao của gói thứ nhất (duplicate packet). Trong trường hợp này thì giá trị của bộ đếm liên tục sẽ không tăng. Hai gói này sẽ có các byte tương ứng giống nhau y hệt trừ giá trị của trường chuẩn đồng hồ chương trình (program clock reference) nếu có thì sẽ được thay bằng giá trị thích hợp.
Giá trị này được tăng lên 1 đơn vị so với giá trị trong gói truyền tải trước đó mà có cùng giá trị PID, hoặc không tăng trong trường hợp trường Adaptation Field Control có giá trị là ‘00’ hoặc ‘10’ như đã mô tả ở trên. Bộ đếm này có thể bị gián đoạn nếu giá trị của trường chỉ thị bất liên tục (discontinuity indicator) được đặt là “1”. Trong trường hợp gói rỗng, giá trị của Continuity Counter chưa được định nghĩa.
• Byte dữ liệu (data byte): Đây là những byte mang dữ liệu của các gói PES, thông tin của PSI, của các byte dữ liệu riêng (private data) hoặc các byte đệm.
bất kì giá trị nào. Số byte dữ liệu N bằng 184 trừ đi số byte của trường thích nghi được mô tả ngay sau đây.
• Trường thích nghi (Adaptation Field): gồm có:
Độ dài trường thích nghi (Adaptation Field Length): trường 8-bit chỉ thị có bao nhiêu byte trong trường thích nghi đi ngay sau trường này. Giá trị độ dài trường thích nghi bằng ‘0’ có nghĩa là chèn thêm 1 byte đệm vào gói truyền tải. Khi giá trị của trường điều khiển trường thích nghi (Adaptation Field Control) là ‘11’, có nghĩa là trong gói truyền tải có cả trường thích nghi và có cả phần tải tin, thì giá trị của trường này sẽ trong khoảng 0-182. Khi giá trị của Adaptation Field Control là ‘10’, nghĩa là trong gói truyền tải chỉ có trường thích nghi không có phần tải tin,giá trị của trường này sẽ là 183. Khi mà dòng truyền tải mang gói PES thì việc chèn byte đệm là cần thiết khi mà kích thước của phần gói PES cần gửi đi không đủ để làm đầy một gói truyền tải vốn được định sẵn là có kích thước cố định. Trường hợp này sẽ được giải quyết bằng cách đặt giá trị của trường độ dài trường thích nghi nhiều hơn phần dữ liệu mà thực sự nó có sao cho phần còn lại vừa đủ để chứa dữ liệu của gói PES. Phần dư ra trong trường thích nghi sẽ được đặt vào đó bằng các byte đệm (stuffing byte).Phương pháp này cho phép dòng truyền tải có thể vận chuyển các gói PES có độ dài thay đổi.
Chỉ thị không liên tục (Discontinuity Indicator): trường 1 bit chỉ thị sự không liên tục của gói truyền tải hiện tại. Có giá trị ‘1’ nếu mà không liên tục. Chỉ thị này cho biết hoặc là đồng hồ chuẩn (system time-base) hoặc bộ đếm liên tục (Continuity Counter) không liên tục.
Chỉ thị truy cập ngẫu nhiên (Random Access Indicator): trường 1-bit chỉ thị rằng gói truyền tải hiện tại, hoặc có thể các gói sau nữa mà có cùng PID, có chứa dữ liệu với chức năng như một điểm truy cập ngẫu nhiên. Chính xác là khi trường này được đặt là ‘1’ thì gói PES tiếp theo được mang trong gói truyền tải có cùng chỉ số PID hiện tại sẽ chứa byte đầu tiên của tiêu đề chuỗi video (trong trường hợp dòng cơ sở là dòng cơ sở video) hoặc sẽ chứa byte đầu tiên của một khung audio (trong trường hợp dòng cơ sở là audio). Đồng thời trong gói PES đó cũng sẽ mang nhãn thời gian trình diễn PTS của dữ liệu tương ứng.
Chỉ thị ưu tiên dòng cơ sở (Elementary Stream Priority Indicator): Chỉ thị mức ưu tiên của dòng dữ liệu. Giá trị ‘1’ chỉ thị gói có mức ưu tiên cao hơn gói có giá trị ‘0’. Trong trường hợp gói truyền tải mang dữ liệu hình ảnh thì trường này chỉ được đặt là ‘1’ nếu gói truyền tải này mang thông tin của ảnh I (intra-coded picture).
Các trường cờ bao gồm:
o PCR-flag: cờ 1-bit. Giá trị là ‘1’ cho biết có sự có mặt của chuẩn đồng hồ chương trình (Program Clock Reference).
o OPCR-flag: cờ 1-bit. Giá trị là ‘1’ cho biết sự có mặt của đồng hồ chương trình gốc (Original Program Clock Reference).
o Splicing Point Flag: Cờ hiệu điểm ghép nối độ dài 1bit, chỉ ra sự có mặt của trường đếm ngược điểm ghép nối (Splice Countdown).
o Transport Private Data Flag: cờ 1 bit. Có giá trị ‘1’ nếu trong trường thích nghi có chứa một hoặc nhiều hơn một byte dữ liệu cá nhân (private data byte), có giá trị ‘0’ nếu không chứa byte nào.
o Adaptation Field Extension Flag: cờ 1bit chỉ sự có mặt của phần mở rộng của trường thích nghi. Có giá trị ‘1’ nếu có phần mở rộng này, có giá trị ‘0’ nếu không có.
Trường tùy chọn (Optional Field): Bao gồm:
- PCR (Program Clock Reference): có 48-bit. Đây là chuẩn đồng hồ chương trình được dùng để đồng bộ quá trình giải mã hệ thống. Trường này có thể được sửa đổi trong quá trình truyền (PCR được truyển tổi thiểu 1 lần/100 ms).
- OPRC (Original Program Clock Reference): có 48-bit. Đây là chuẩn đồng hồ chương trình gốc, không được sửa đổi trong quá trình truyền, chỉ có thể sử dụng để ghi và phát lại chương trình đơn.
Trường OPCR sẽ được bỏ qua tại bộ giải mã. Và trường này thì không thể bị thay đổi bởi bất kì bộ ghép kênh hoặc bộ giải mã nào.
- Trường đếm lùi điểm ghép nối (Splice Countdown): chiếm 8-bit. Trường này chỉ thị số gói truyền tải (TS Packet) còn lại cho đến khi gặp điểm nối
Byte dữ liệu cá nhân (Private data byte): những byte này không được định trước bởi ITU-T | ISO/IEC mà thay đổi tùy theo người dùng.
Chiều dài dữ liệu cá nhân (transport private data length): trường 8 bit, chỉ ra số byte dữ liệu cá nhân đi ngay sau trường này.
- Mở rộng trường thích nghi (Adaptation Field Extention): chiếm 8 bit
o Chiều dài mở rộng trường thích nghi (adaptation field extension length): trường 8-bit. Chỉ ra số byte của trường thích nghi mở rộng đi sau trường này (bao gồm cả những byte dự phòng nếu có).
o ltw_flag (legaltime window_flag): trường cờ 1 bit. Khi được đặt giá trị ‘1’ thì có nghĩa là có mặt của trường ltw_offset
o piecewise_rate_flag: cờ 1 bit, thể hiện sự có mặt hay không của trường piecewise_rate.
o seamless splice flag: cờ 1 bit. Khi cờ này được đặt giá trị ‘1’ thì sẽ có các trường ‘splice_type’ và ‘DTS_next_AU’. Nếu giá trị của cờ này là ‘0’ thì cả hai trường trên đều không có. Trường này không thể được đặt là ‘1’ trong những gói truyền tải mà cờ ‘splicing point flag’ không được đặt là ‘1’.
o ltw_valid_flag (legal time window_valid_flag): trường 1 bit. Khi được đặt là ‘1’ có nghĩa là giá trị của ‘ltw_offset’ là hợp lệ. Còn nếu là ‘0’ có nghĩa là giá trị của trường ‘ltw_offset’ không xác định.
o ltw_offset (legal time window offset): cửa sổ thời gian hợp lệ, trường 15-bit. Giá trị của trường này chỉ được xác định khi giá trị của cờ ‘ltw_valid’ được đặt là ‘1’. Đơn vị của trường này là 300/fs giây.
o piecewise rate: trường 22-bit. Giá trị của trường này chỉ có ý nghĩa khi mà cả 2 cờ ‘ltw_flag’ và ‘ltw_valid_flag’ được đặt lên ‘1’. Khi ấy, giá trị này là một số ngyên dương chỉ ra một tỉ lệ bit giả thiết là R được sử dụng để định nghĩa cửa sổ thời gian hợp lệ của những gói truyền tải,có cùng chỉ số PID, đi sau gói này nhưng lại không có trường ‘legal time window offset’.
o Loại điểm ghép nối (splice type) : trường 4-bit. Trong tất cả các gói truyền tải, có cùng PID, mà giá trị của trường ‘splice countdown’ giảm dần từ giá trị lớn nhất về 0, thì trường loại điểm ghép nối sẽ có cùng giá trị.
• Các byte đệm (Stuffing Bytes): Mỗi byte có giá trị cố định là 0xFF, được chèn thêm vào bởi bộ mã hóa và các byte này sẽ được bỏ qua tại bộ giải mã.
3. Giải mã dòng truyền tải
Program 0 18 Program 1 35 Program 2 50 . . Stream 1 V 51 Stream 2 A 53 Stream 3 A 54 Stream 4 A 56 Stream 5 A 60 Stream 6 D 65 Stream 1 V 17 Stream 2 A 36 Stream 3 A 38 Stream 4 D 41 PAT (PID = 0) NIT (PID = 18) PMT 1 PID = 35 PMT 2 PID = 50 PAT - Program Association
Table
CAT - Conditional Access Table
Trong dòng truyền tải có rất nhiều dòng cơ sở của nhiều chương trình khác nhau. Mỗi dòng cơ sở đều có một giá trị PID khác nhau. Nhưng bộ giải mã phải được cho biết dòng cơ sở video nào kết hợp với dòng cơ sở audio nào thì mới có thể giải mã được. Nhiệm vụ này là của PSI (Program Specific Information). Hình 5 chỉ ra cấu trúc của PSI.
Khi bộ giải mã được khởi động, nó hoàn toàn không biết gì về dòng truyền tải sắp phải giải mã. Việc đầu tiên là nó nhận các gói có PID = 0. Những gói này mang thông tin về bảng liên kết chương trình PAT (Program Association Table). PAT được truyền đi ở những thời khoảng xác định, nó mang thông tin về tất cả các chương trình có trong dòng truyền tải. Các chương trình thì được mô tả chi tiết hơn bởi bảng bản đồ chương trình PMT (Program Map Table). Những giá trị PID của PMT được mang trong bảng liên kết chương trình PAT.
Hình trên cũng chỉ ra rằng PMT cho phép xác định đầy đủ một chương trình. Trong đó chứa đựng PID của các dòng cơ sở video, audio và dữ liệu tương ứng của một chương trình. Do đó, khi người dùng chọn một kênh chương trình nào đó thì