Mở đầu
Công nghệ số từ khi ra đời đã ngày càng thể hiện tính ưu việt và thay thế dần công nghệ tương tự vốn không hiệu quả và lỗi thời. Ngày nay việc số hóa được thực hiện trên mọi dạng thức của dữ liệu, từ văn bản tới hình ảnh và âm thanh. Các mạch điện tử tích hợp được nghiên cứu chế tạo ngày càng nhiều có hiệu năng tính toán ngày càng cao, độ tin cậy ngày càng chính xác làm cho công nghệ số ngày càng phát triển.
Trong xu hướng số hóa mọi dạng dữ liệu như trên thì việc số hóa tín hiệu video là một sự tất yếu. Tuy nhiên tín hiệu video được số hóa có dung lượng quá lớn dẫn đến việc lưu trữ và truyền dẫn hầu như không thể thực hiện được. Do đó nảy sinh nhu cầu nén tín hiệu video. Nhiều chuẩn nén được ra đời là kết tinh công sức của các chuyên gia, các nhà khoa học hàng đầu trên thế giới. Trong số các chuẩn nén đó thì chuẩn MPEG là chuẩn nén phổ biến nhất, có ứng dụng rộng rãi nhất. Chuẩn nén này đã được nghiên cứu, phát triển trong nhiều năm và đã giải quyết tốt bài toán nén tín hiệu video, kết quả là có thể đáp ứng một cách rất đa dạng các yêu cầu trong thực tế.
Một thành phần quan trọng bậc nhất trong chuẩn nén MPEG là dòng truyền tải MPEG (MPEG Transport Stream). Nhờ có dòng truyền tải mà dữ liệu có thể được đưa từ nơi phát tới nơi thu một cách dễ dàng, chính xác và an toàn. Hơn nữa dòng truyền tải còn rất mềm dẻo và linh hoạt, vừa hỗ trợ tốt cho các ứng dụng hiện tại vừa đảm bảo dễ dàng cho sự phát triển trong tương lai.
Nhằm mục đích tìm hiểu một cách sâu sắc về cấu tạo và hoạt động của dòng truyền tải MPEG, em đã chọn đề tài này với mong muốn có được sự hiểu biết về một chuẩn nén có ứng dụng rộng rãi nhất trong thực tế.
Em xin chân thành cảm ơn thầy Ngô Thái Trị, người đã tận tình chỉ bảo và giúp đỡ em trong quá trình làm luận văn, thầy đã chỉ cho em phương pháp nghiên cứu và cách trình bày luận văn một cách khoa học. Em cũng xin cảm ơn các thầy cô trong Khoa Điện tử viễn thông đã chỉ bảo cho em trong suốt quá trình học tập. Em xin cảm ơn gia đình và bạn bè đã giúp đỡ để em có thể hoàn thành luận văn này.
Tóm tắt nội dung
Luận văn được trình bày trong 3 chương :
Chương 1: Giới thiệu tổng quát nhất về chuẩn nén MPEG, lý do cần phải nén dữ liệu, các nguyên tắc cơ bản được sử dụng trong chuẩn nén MPEG áp dụng cho dữ liệu hình ảnh cũng như âm thanh, giới thiệu những đặc điểm chung nhất của các chuẩn nén MPEG1, 2, 4 và 7, chương này cũng chỉ ra cách hình thành dòng bit MPEG.
Chương 2: Mô tả cách thức hình thành, cấu trúc của dòng cơ sở ES, lý do cần thiết phải chia dòng cơ sở thành các gói, cách thức tạo ra các gói cơ sở đóng gói PES đồng thời phân tích cấu tạo của một gói PES.
Chương 3: Phân tích cách tạo thành dòng truyền tải MPEG, hoạt động của dòng truyền tải, phân tích chi tiết cấu tạo và nhiệm vụ của từng trường trong gói truyền tải, cuối cùng là chỉ ra những đặc điểm ưu việt của dòng truyền tải MPEG làm cho chuẩn nén này có những ứng dụng rộng rãi trong thực tế.
69 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2903 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Khóa luận Phân tích dòng chuyển tải MPEG, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i mã có thể suy ra nhãn thời gian cho mọi ảnh trong dòng bít.
Hình 2.8 chỉ ra rằng một số gói PES có thể được gom lại thành một cụm (pack) mà tiêu đề của nó có chứa phần đồng bộ và một mã tham chiếu đồng hồ hệ thống (system clock reference code) cho phép bộ giải mã tái tạo lại đồng hồ của bộ mã hóa.
Tiêu đề cụm PES chứa SCR
Video
Audio
Video
Audio
Video
Gói PES
Cụm
Hình 2.8: Một số các gói PES tạo thành một cụm, phần tiêu đề cụm có chứa tham chiếu đồng hồ (clock reference)
Cú pháp dòng cơ sở đóng gói
STREAM ID(1BYTE)
PESHEADER
PES PACKETLENGTH (2 BYTE)
STUFFING BYTES
PES START CODEPREFIX (3 BYTE)
PES PACKETDATA
PESSCRAMBLINGCONTROL(2 BIT)
PESPRIORITY(1 BIT)
DATAALIGNMENTINDICATOR(1 BIT)
COPYRIGHT(1 BIT)
ORIGINALOR COPY(1 BIT)
7 FLAGS(8 BIT)
PES HEADERDATA LENGTH(8 BIT)
“10”(2 BIT)
OPTIONALFIELDS
ESCR(48 BIT)
ES RATE(24 BIT)
PESEXTENSION
PTSDTS(40 BIT)
ADDITIONALCOPY INFO(8 BIT)
DSMTRICK MODE(8 BIT)
PES CRC(16 BIT)
5 FLAGS
OPTIONALFIELDS
PESPRIVATE DATA
PACK HEADERFIELD
PROGRAM PACKET
SEQ COUNTER(16 BIT)
P- STDBUFFER(16 BIT)
PESEXTENSIONFIELD
Hình 2.9: Cú pháp gói PES
Mã tiền tố khởi đầu (PES start code prefix): đây là mã 24-bit có giá trị là 0x000001. Mã này xác định điểm bắt đầu của một gói PES.
Nhận dạng dòng (stream ID): mã 8-bit xác định loại của dữ liệu chứa trong dòng cơ sở.
Độ dài gói PES (PES packet length): trường 16-bit, chỉ ra số byte của gói cơ sở đóng gói đi sau trường này.
Các byte tiêu đề và đệm PES:
Các byte đệm (stuffing bytes): có giá trị cố định là 0xFF, được bộ mã hóa chèn thêm vào gói PES, đến bộ giải mã các byte này được bỏ qua.
Điều khiển đảo mã PES (PES scrambling control): trường 2-bit. Giá trị và ý nghĩa được cho theo bảng sau:
Giá trị
Ý nghĩa
00
Không đảo mã
01
Người dùng tự định nghĩa
10
Người dùng tự định nghĩa
11
Người dùng tự định nghĩa
Ưu tiên PES (PES priority): trường 1 bit, chỉ thị mức ưu tiên của tải tin ở trong gói PES này. Những gói có giá trị trường này là “1” sẽ được ưu tiên hơn những gói có giá trị “0”.
Chỉ thị sắp xếp dữ liệu (data alignment indicator): trường cờ 1 bit. Khi cờ này có giá trị “1” nghĩa là có sự sắp xếp dữ liệu, giá trị “0” nghĩa là không có sự sắp xếp.
Bản quyền tác giả (copy right): trường 1 bit. Giá trị “1” có nghĩa là dữ liệu trong gói được bảo vệ bởi quyền tác giả, giá trị “0” có nghĩa là không được bảo vệ.
Bản gốc hay là bản sao (original or copy): trường 1 bit. Khi trường này mang giá trị “1” nghĩa là nội dung của phần tải tin trong gói PES này là bản gốc. Còn khi có giá trị “0” thì có nghĩa là nội dung trong đó là bản sao.
Các giá trị cờ (flags):
Cờ nhãn thời gian (PTS DTS flags): trường 2-bit.
Giá trị “10”: nhãn thời gian trình diễn (PTS – presentation time stamp) có trong tiêu đề của gói PES.
Giá trị “11”: cả nhãn thời gian trình diễn PTS và nhãn thời gian giải mã (DTS – decode time stamp) đều có trong tiêu đề của gói PES.
Giá trị “00”: cả hai nhãn thời gian đều không có.
Giá trị “01”: bị cấm dùng.
Cờ ESCR (Elementary Stream Clock Reference Flag): trường 1 bit. Khi được đặt là “1” có nghĩa là giá trị của ESCR có trong tiêu đề của gói PES. Giá trị trường là “0” có nghĩa là không có ESCR trong tiêu đề của gói PES này.
Cờ RATE (ES rate flag): trường 1 bit, thể hiện sự có mặt hay không của trường ES rate trong tiêu đề của gói PES.
Cờ TM (DSM trick mode flag): cờ 1 bit, thể hiện sự có mặt của trường 8-bit mô tả hoạt động của Phương tiện lưu trữ số (DSM – Digital Storage Media).
Cờ ACI (additional copy information flag): cờ 1 bit, thể hiện sự có mặt của trường thông tin thêm về loại dữ liệu (bản gốc hay là bản sao).
Cờ CRC (PES CRC flag) : cờ 1 bit, thể hiện sự có mặt của trường kiểm tra dư thừa vòng CRC (Cyclic Redundancy Check) trong tiêu đề của gói PES.
Cờ EXT (PES extension flag): cờ 1 bit, thể hiện sự có mặt của trường mở rộng (extension field) trong tiêu đề của gói PES.
Chiều dài dữ liệu tiêu đề (PES header data length): trường 8-bit, chỉ định số byte của trường tùy chọn và các byte đệm trong tiêu đề của gói PES này.
Trường tùy chọn (optional field):
Nhãn thời gian trình diễn (PTS – Presentation Time Stamp): được sử dụng để xác định thời điểm một đơn vị dữ liệu được thể hiện ở máy thu.
Nhãn thời gian giải mã (DTS – Decode Time Stamp): được sử dụng để xác định thời điểm một đơn vị dữ liệu được đưa đến bộ giải mã.
Chuẩn đồng hồ dòng cơ sở (ESCR – Elementary Stream Clock Reference): trường 48-bit, trong đó 42-bit được dùng để biểu diễn các trường ESCR cơ sở (ESCR base) và ESCR mở rộng (ESCR extension).
Tốc độ dòng cơ sở (ES rate - Elementary Stream Rate): trường 24-bit, cho biết tốc độ nhận byte của gói PES khi đến bộ giải mã. Đơn vị đo của trường này là 50 bytes/giây. Giá trị trường này của các gói PES khác nhau có thể thay đổi.
Trường DSM Trick Mode: trường 8-bit, gồm có:
Điều khiển phương thức kĩ xảo (trick mode control): cho biết thông tin về kĩ xảo sử dụng trong dòng bit tương ứng như sau:
Giá trị
Mô tả
000
Chạy đi nhanh (Fast forward)
001
Chuyển động chậm (Slow motion)
010
Đông khung hình (Freeze frame)
011
Chạy ngược nhanh (Fast reverse)
100
Chạy ngược chậm (Slow reverse)
101 tới 111
Dự phòng
Nhận dạng mành (field id): trường 2-bit, chỉ thị những mành nào được thể hiện trên màn ảnh.
Giá trị
Mô tả
00
Chỉ thể hiện mành 1
01
Chỉ thể hiện mành 2
10
Thể hiện cả 2 mành
11
Dự phòng
Phục hồi lát trong ảnh (intra slice refresh): trường 1-bit. Khi trường này mang giá trị “1” có nghĩa là có thể có những macroblocks bị thiếu trong dữ liệu video của gói PES này. Lúc này bộ giải mã sẽ thay những macroblock bị thiếu bởi macroblock tương ứng của hình được giải mã trước đó. Giá trị “0” có nghĩa là không bị thiếu.
Cắt tần số (frequency truncation): trường 2-bit, chỉ thị sự hạn chế các hệ số tần số được sử dụng trong mã hóa dữ liệu hình ảnh.
Giá trị
Mô tả
00
Chỉ có hệ số 1 chiều là khác 0
01
Chỉ 3 hệ số đầu tiên khác 0
10
Chỉ 6 hệ số đầu tiên khác 0
11
Tất cả các hệ số đều có thể khác 0
Trường thông tin cộng thêm (additional copy info): trường 7-bit chứa những dữ liệu cá nhân liên quan đến thông tin về bản quyền tác giả.
PES CRC: trường 16-bit, mang thông tin về mã sửa sai (mã kiểm tra dư thừa vòng – Cyclic Redundancy Check) của dòng PES.
Trường mở rộng (PES extension):
Các trường cờ (5 flags):
Cờ dữ liệu cá nhân (PES private data flag): thể hiện sự có mặt hay không của dữ liệu cá nhân.
Cờ trường tiêu đề cụm (pack header field flag): thể hiện sự có mặt hay không của tiêu đề cụm (pack header).
Cờ đếm thứ tự gói chương trình (program packet sequence counter): Khi trường này mang giá trị “1” thì trong gói PES này sẽ có các trường sau: program packet sequence counter, MPEG1 MPEG2 identifier, và trường original stuff length. Nếu giá trị là “0” thì sẽ không có các trường nêu trên.
Cờ đệm hệ thống giải mã dòng chương trình (P-STD buffer flag - Program stream system target decoder buffer flag): cờ 1 bit, khi mang giá trị “1” nghĩa là các trường sau có trong gói PES: P-STD buffer size và P-STD buffer scale.
Cờ mở rộng PES (PES extension flag): cờ 1-bit, khi đặt giá trị “1” nghĩa là trong gói PES có trường PES extension field length và các trường có liên quan.
Trường tùy chọn (optional field)
Dữ liệu cá nhân (PES private data): trường 16-bit mang dữ liệu cá nhân.
Trường tiêu đề cụm (pack header field).
Bộ đếm thứ tự gói chương trình (program packet sequence counter): trường 7-bit có chức năng đếm các gói PES. Giá trị trường này sẽ trở về “0” sau khi đạt chỉ số lớn nhất.
Bộ đệm hệ thống giải mã dòng chương trình (P-STD buffer - Program stream system target decoder buffer ).
Trường mở rộng PES (PES extension field).
Cấu trúc chi tiết từng trường và số bit có thể tham khảo theo bảng sau:
Cú pháp
Số bit
PES_packet() {
packet_start_code_prefix
stream_id
PES_packet_length
if (stream_id != program_stream_map
&& stream_id != padding_stream
&& stream_id != private_stream_2
&& stream_id != ECM
&& stream_id != EMM
&& stream_id != program_stream_directory
&& stream_id != DSMCC_stream
&& stream_id != ITU-T Rec. H.222.1 type E stream) {
'10'
PES_scrambling_control
PES_priority
data_alignment_indicator
copyright
original_or_copy
PTS_DTS_flags
ESCR_flag
ES_rate_flag
DSM_trick_mode_flag
additional_copy_info_flag
PES_CRC_flag
PES_extension_flag
PES_header_data_length
if (PTS_DTS_flags = = '10') {
'0010'
PTS [32..30]
marker_bit
PTS [29..15]
marker_bit
PTS [14..0]
marker_bit
}
if (PTS_DTS_flags = = '11') {
'0011'
PTS [32..30]
marker_bit
PTS [29..15]
marker_bit
PTS [14..0]
marker_bit
'0001'
DTS [32..30]
marker_bit
DTS [29..15]
marker_bit
DTS [14..0]
marker_bit
}
if (ESCR_flag = = '1') {
reserved
ESCR_base[32..30]
marker_bit
ESCR_base[29..15]
marker_bit
ESCR_base[14..0]
marker_bit
ESCR_extension
marker_bit
}
if (ES_rate_flag = = '1') {
marker_bit
ES_rate
marker_bit
}
if (DSM_trick_mode_flag = = '1') {
trick_mode_control
if ( trick_mode_control = = fast_forward ) {
field_id
intra_slice_refresh
frequency_truncation
}
else if ( trick_mode_control = = slow_motion ) {
rep_cntrl
}
else if ( trick_mode_control = = freeze_frame ) {
field_id
reserved
}
else if ( trick_mode_control = = fast_reverse ) {
field_id
intra_slice_refresh
frequency_truncation
}
else if ( trick_mode_control = = slow_reverse ) {
rep_cntrl
}
Else
reserved
}
if ( additional_copy_info_flag = = '1') {
marker_bit
additional_copy_info
}
if ( PES_CRC_flag = = '1') {
previous_PES_packet_CRC
}
if ( PES_extension_flag = = '1') {
PES_private_data_flag
pack_header_field_flag
program_packet_sequence_counter_flag
P-STD_buffer_flag
reserved
PES_extension_flag_2
if ( PES_private_data_flag = = '1') {
PES_private_data
}
if (pack_header_field_flag = = '1') {
pack_field_length
pack_header()
}
if (program_packet_sequence_counter_flag = = '1') {
marker_bit
program_packet_sequence_counter
marker_bit
MPEG1_MPEG2_identifier
original_stuff_length
}
if ( P-STD_buffer_flag = = '1') {
'01'
P-STD_buffer_scale
P-STD_buffer_size
}
if ( PES_extension_flag_2 = = '1') {
marker_bit
PES_extension_field_length
for (i = 0; i < PES_extension_field_length; i++) {
reserved
}
}
}
}
For ( i = 0 ; i < N1 ; i++){
stuffing_byte
}
for (i = 0; i <N2; i++++) {
PES_packet_data_byte
}
}
else if ( stream_id = = program_stream_map
|| stream_id = = private_stream_2
|| stream_id = = ECM
|| stream_id = = EMM
|| stream_id = = program_stream_directory
|| stream_id = = DSMCC_stream
|| stream_id = = ITU-T Rec. H.222.1 type E stream ) {
for (i = 0; i < PES_packet_length; i++++) {
PES_packet_data_byte
}
} else if ( stream_id = = padding_stream) {
for (i = 0; i < PES_packet_length; i++++) {
padding_byte
}
}
}
24
8
16
2
2
1
1
1
1
2
1
1
1
1
1
1
8
4
3
1
15
1
15
1
4
3
1
15
1
15
1
4
3
1
15
1
15
1
2
3
1
15
1
15
1
9
1
1
22
1
3
2
1
2
5
2
3
2
1
2
5
5
1
7
16
1
1
1
1
3
1
128
8
1
7
1
1
6
2
1
13
1
7
8
8
8
8
8
Các gói PES này được ghép kênh với nhau tạo ra dòng truyền tải (Transport Stream) hoặc dòng chương trình (Program Stream). Dòng chương trình (Program Stream) được thiết kế để truyền đi trong môi trường không có tạp nhiễu và sai lầm, ví dụ như trong các ứng dụng CD-ROM. Còn với môi trường truyền dẫn, phát sóng thực tế luôn có lỗi, trong trường hợp này ta cần phải sử dụng dòng truyền tải (Transport Stream).
DỮ LIỆU
VIDEO
DỮ LIỆU
VIDEOPES
AUDIO
ES
ES
AUDIOPES
( TRANSPORTSTREAM )
DÒNG TRUYỀNTẢI
( PROGRAM STREAM )
DÒNG CHƯƠNGTRÌNH
AUDIO PES
VIDEO PES
VIDEO PES
AUDIO PES
MÃ HOÁVIDEO
ĐÓNGGÓI
GHÉPKÊNHDÒNGTRUYỀNTẢI
GHÉP KÊNHCHƯƠNGTRÌNH
MÃ HOÁAUDIO
ĐÓNGGÓI
Hình 2.10: Sơ đồ mạch mã hóa MPEG
Chương 3: Dòng truyền tải
Giới thiệu chung về dòng truyền tải:
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. Dòng truyền tải được xây dựng từ những phần tử cơ bản là các gói có kích thước cố định là 188 bytes để thuận tiện cho việc ghép kênh và sửa lỗi. Những gói truyền tải là nhỏ và có kích thước cố định, khác với gói PES là những gói lớn và có chiều dài khác nhau .
Header
Payload
Header
Payload
Header
Payload
…
…
…
TRANSPORTERRORINDICATOR(1 BIT)
TRANSPORTPRIORITY(1 BIT)
CONTINUITYCOUNTER(4 BIT)
STARTINDICATOR(1BIT)
ADAPTATIONFIELDCONTROL(2 BIT)
PID(13BIT)
SYNCBYTE(8 BIT)
SCRAMBLINGCONTROL(2 BIT)
ADAPTATIONFIELD
PAYLOAD
DISCONTINUITYINDICATOR(1 BIT)
RANDOM ACCESSINDICATOR(1 BIT)
ELEM STREAMPRIORITYINDICATOR(1 BIT)
5 FLAGS(5 BIT)
ADAPTATIONFIELD LENGHTH(1 BYTE)
OPTIONALFIELDS
STUFFINGBYTES
PCR(48 BIT)
OPCR(48 BIT)
SPLICECOUNTDOWN(8 BIT)
ADAPTATIONFIELDEXTENSION(40 BIT)
TRANSPORTPRIVATEDATA(40 BIT)
Hình 3.1: Cấu trúc gói truyền tải
Gói truyền tải luôn bắt đầu bởi phần tiêu đề (header), phần còn lại mang dữ liệu gọi là phần tải tin (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.
Phần tiêu đề bắt đầu bởi byte đồng bộ (syncbyte) được nhận biết bởi bộ giải mã. Trong dòng truyền tải có thể mang rất nhiều dòng cơ sở, mỗi dòng cơ sở sẽ được mang một mã nhận dạng 13-bit duy nhất là PID (Packet Identification Code). Nhờ có mã này mã bộ giải mã có thể nhận diện từng gói truyền tải là của dòng cơ sở tương ứng nào.
Trong việc ghép kênh có trường hợp xảy ra là đang có một chuỗi các gói của dòng cơ sở này được truyền thì lại chuyển sang một chuỗi các gói của dòng cơ sở khác. Vì vậy để trợ giúp cho bộ giải mã thì trong phần tiêu đề của gói truyền tải có một bộ đếm liên tục (continuity count). Bộ đếm này sẽ tăng ứng với một gói tiếp theo của một dòng cơ sở được truyền đi.
Từ cách làm việc của dòng truyền tải cho thấy: dòng truyền tải không đảm bảo một tốc độ bit cố định cho một dòng cơ sở, tổng tốc độ của các dòng cơ sở trong dòng truyền tải sẽ được hạn chế để không vượt quá giá trị lớn nhất, tốc độ của dòng truyền tải sẽ được giữ không đổi nhờ chèn thêm các byte đệm hoặc các gói rỗng (null packet).
Chuẩn đồng hồ (clock references)
Dòng truyền tải là sự kết hợp của một số các chương trình truyền hình với nhau, những chương trình này được lấy từ những nguồn khác nhau. Sẽ là ảo tưởng nếu cho rằng tất cả các chương trình này đồng bộ với nhau, vì thế dòng truyền tải phải được thiết kế cho các chương trình không đồng bộ. Cơ chế để tách các chương trình không đồng bộ trong dòng truyền tải gọi là chuẩn đồng hồ chương trình PCR (Program Clock Reference).
Với dòng chương trình (program stream), thì tất cả các chương trình yêu cầu phải được đồng bộ, do đó chỉ cần một đồng hồ ở bộ giải mã. Trong trường hợp này cơ chế đồng bộ gọi là chuẩn đồng hồ hệ thống SCR (System Clock Reference).
Hình 3.2 mô tả cách thức mà hệ thống PCR/SCR làm việc. Mục tiêu là tái tạo lại đồng hồ 27MHz ở bộ giải mã đồng bộ với bộ mã hóa. Tại bộ mã hóa, đồng hồ chuẩn 27MHz được đưa đến bộ đếm tiến 48-bit.
Bộ hợp kênh dòng truyền tải sẽ lấy mẫu theo chu kì trạng thái của bộ đếm và đặt giá trị này vào phần tiêu đề của gói truyền tải. Đó chính là giá trị PCR. Bộ giải mã chỉ chọn những gói có PID phù hợp với chương trình mà nó được yêu cầu để giải mã. Từ những gói này, bộ giải mã sẽ tách ra giá trị PCR. Với dòng chương trình thì giá trị được chèn vào phần tiêu đề không phải là PCR mà là SCR.
Hình 3.2: Sử dụng tham chiếu đồng hồ chương trình hoặc tham chiếu đồng hồ hệ thống (PCR/SCR) để tái tạo đồng hồ ở bộ giải mã
Giá trị PCR/SCR được dùng để điều khiển vòng khóa số NLL (numerically locked loop). NLL có chứa một bộ 27 MHz VCXO (voltage controlled crystal oscillator). Bộ VCXO này điều khiển một bộ đếm 48-bit giống như bộ mã hóa. Giá trị của bộ đếm này được so sánh với giá trị của PCR/SCR, sự sai khác này được sử dụng để điều chỉnh tần số của bộ VCXO. Sau một thời gian điều chỉnh, giá trị của bộ đếm sẽ trùng với giá trị PCR/SCR, khi đó bộ VCXO sẽ được giữ cố định không thay đổi nữa. Trên thực tế thì do ảnh hưởng của kênh truyền mà vẫn có sự sai pha trong vòng lặp. Lỗi này được loại bỏ bởi bộ lọc vòng (loop filter) để làm cho bộ VCXO vẫn làm việc hiệu quả với lỗi pha.
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
NIT - Network Information Table
Null packets – PID = 8191
Hình 3.3:Cấu trúc bảng xác định chương trình PSI
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 3.3 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ì đầu tiên máy thu sẽ tìm ra PMT của chương trình đó. Từ đó tách ra các gói của dòng cơ sở tương ứng để đưa đi giải mã.
Chương trình số 0 mang thông tin về mạng NIT (Network Information Table). Nó mang thông tin về các dòng truyền tải khác đang hiện hữu. Ví dụ như trong quảng bá vệ tinh, bảng thông tin mạng NIT sẽ mang thông tin về vị trí quĩ đạo, sự phân cực, tần số sóng mang, và phương thức điều chế. Sử dụng bảng NIT, máy thu có thể chuyển đổi tự động giữa các dòng truyền tải.
Những gói có PID bằng 1 được dùng để mang thông tin về bảng truy cập có điều kiện CAT (Conditional Access Table). Đây là cơ chế điều khiển truy cập hỗ trợ cho những dịch vụ mà cần trả phí thì mới có thể giải mã được chương trình.
Phân tích cú pháp dòng truyền tải
Bảng 3.1 : Dòng truyền tải
Cú pháp
Số bit
MPEG_transport_stream() {
do {
transport_packet()
} while (nextbits() = = sync_byte)
}
Bảng 3.2: Cấu trúc gói truyền tải
Cú pháp
Số bit
transport_packet(){
sync_byte
transport_error_indicator
payload_unit_start_indicator
transport_priority
PID
transport_scrambling_control
adaptation_field_control
continuity_counter
if(adaptation_field_control = = '10' || adaptation_field_control = = '11'){
adaptation_field()
}
if(adaptation_field_control = = '01' || adaptation_field_control = = '11') {
for (i = 0; i < N ; i++++){
data_byte
}
}
}
8
1
1
1
13
2
2
4
8
Phần header có độ dài tối thiểu là 4 bytes và chứa những thông tin sau:
Byte đồng bộ (Sync Byte): byte này được nhận biết bởi bộ giải mã. Byte này được cố định giá trị là 0x47.
Chỉ thị lỗi truyền tải (Transport Error Indication) : Có độ dài 1bit .Chỉ thị này thông báo khi tỉ lệ lỗi bít BER vượt quá giá trị cho phép. Khi giá trị này được đặt là ‘1’ nó chỉ thị rằng có ít nhất 1 lỗi không thể sửa được trong gói truyền tải, và sẽ không thể đặt lại thành giá trị ‘0’ chừng nào mà các lỗi chưa được sửa hết.
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’.
Khi đây là gói trống (null packet) thì bit này được đặt là ‘0’
Ưu tiên truyền tải (Transport Priority): Khi được đặt là ‘1’, bit này chỉ thị rằng gói này có độ ưu tiên cao hơn các gói khác có cùng PID mà bit này có giá trị ‘0’. Cơ chế này cho phép xác lập mức ưu tiên của dữ liệu trong bản thân một dòng cơ sở. Phụ thuộc từng ứng dụng mà trường này có thể được mã hóa theo cách không cần quan tâm đến các PID hay là chỉ xét trong 1 PID duy nhất. Trường này thì có thể bị thay đổi bởi bộ mã hóa hoặc giải mã của tùy từng kênh truyền.
Nhận dạng gói (Packet Identification - PID): trường 13-bit chỉ ra loại dữ liệu chứa trong phần tải tin. 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
01
Dự phòng
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. Trong trường hợp gói rỗng (gói có PID bằng 0x1FFF) thì byte dữ liệu có thể mang 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ó:
Bảng 3.3: Trường thích nghi
Cú pháp
Số bit
adaptation_field() {
adaptation_field_length
if (adaptation_field_length > 0) {
discontinuity_indicator
random_access_indicator
elementary_stream_priority_indicator
PCR_flag
OPCR_flag
splicing_point_flag
transport_private_data_flag
adaptation_field_extension_flag
if (PCR_flag = = '1') {
program_clock_reference_base
reserved
program_clock_reference_extension
}
if (OPCR_flag = = '1') {
original_program_clock_reference_base
reserved
original_program_clock_reference_extension
}
if (splicing_point_flag = = '1') {
splice_countdown
}
if (transport_private_data_flag = = '1') {
transport_private_data_length
for (i = 0; i < transport_private_data_length; i++++) {
private_data_byte
}
}
if (adaptation_field_extension_flag = = '1') {
adaptation_field_extension_length
ltw_flag
piecewise_rate_flag
seamless_splice_flag
reserved
if (ltw_flag = = '1') {
ltw_valid_flag
ltw_offset
}
if (piecewise_rate_flag = = '1') {
reserved
piecewise_rate
}
if (seamless_splice_flag = = '1') {
splice_type
DTS_next_AU[32..30]
marker_bit
DTS_next_AU[29..15]
marker_bit
DTS_next_AU[14..0]
marker_bit
}
for (i = 0; i < N; i++) {
reserved
}
}
for (i = 0; i < N; i++) {
stuffing_byte
}
}
}
8
1
1
1
1
1
1
1
1
33
6
9
33
6
9
8
8
8
8
1
1
1
5
1
15
2
22
4
3
1
15
1
15
1
8
8
Độ 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:
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).
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).
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).
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.
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).
Trường này được mã hóa thành 2 phần. Phần thứ nhất là trường 33-bit ‘program clock reference base’. Phần thứ hai là trường 9-bit ‘program clock reference extension’. Các trường này có giá trị tính theo công thức sau:
PCR(i) = PCR_base(i) × 300 + PCR_ext(i)
PCR_base(i) = ((system_clock_ frequency × t(i)) DIV 300) % 233
PCR_ext(i) = ((system_clock_ frequency × t(i)) DIV 1) % 300
Trong đó:
t(i) là thời gian byte thứ i của dòng truyền tải tới bộ giải mã.
DIV là phép chia làm tròn về hướng âm vô cùng.
% là toán tử lấy phần dư
6-bit còn lại của trường này được dùng để dự phòng.
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 này cũng được mã hóa thành 2 phần tương ứng với trường PCR. Nó cũng gồm có phần cơ sở (original program clock reference base) và phần mở rộng (original program clock reference extension). Sự có mặt của trường này được quyết định bởi cờ OPCR (OPCR flag). Trường này chỉ được mã hóa ở những gói truyền tải mà có mặt của trường PCR. Trường này được cho phép ở cả dòng truyền tải đơn chương trình và đa chương trình.
Trường OPCR giúp cho việc tái tạo lại một dòng truyền tải đơn chương trình từ một dòng truyền tải khác. Khi tái tạo lại một chương trình đơn, trường OPCR có thể được sao chép thành trường PCR. Chỉ khi nào toàn bộ một dòng truyền tải đơn chương trình được tái tạo lại hoàn chỉnh thì giá trị PCR này mới được coi là hợp lệ. Trong trường hợp có ít nhất một gói PSI hoặc gói dữ liệu cá nhân (private data packets) nào đó trong dòng chương trình đơn gốc này thì có thể sẽ cần một sự sắp xếp nào khác nữa mang tính cá nhân. Điều này cũng có nghĩa là trường OPCR phải là một bản sao nguyên gốc của trường PCR trong dòng truyền tải đơn chương trình tương ứng.
Trường OPRC được tính theo công thức sau:
OPCR(i) = OPCR_base(i) × 300 + OPCR_ext(i)
trong đó:
OPCR_base(i) = ((system_clock_ frequency × t(i)) DIV 300) % 233 OPCR_ext(i) = ((system_clock_ frequency × t(i)) DIV 1) % 300
t(i) là thời gian byte thứ i của dòng truyền tải tới bộ giải mã.
DIV là phép chia làm tròn về hướng âm vô cùng.
% là toán tử lấy phần dư
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 (Splice Point).
Đây là trường 8-bit mô tả một giá trị có thể là dương hoặc âm. Một giá trị dương sẽ mang ý nghĩa là còn bao nhiêu gói truyền tải nữa (mà có cùng chỉ số PID) thì sẽ tới điểm nối (splicing point). Những gói truyền tải kiểu bản sao (duplicate packet) hoặc gói truyền tải mà chỉ chứa trường tùy chọn sẽ bị loại trừ. Điểm nối được định vị ngay tại vị trí sau byte cuối cùng của gói truyền tải mà có giá trị trường này bằng 0. Byte cuối cùng trong phần payload của gói truyền tải này sẽ chứa byte cuối cùng của một khung audio hoặc một hình đã được mã hóa. Những gói truyền tải có cùng chỉ số PID sau đó có thể chứa đựng dữ liệu từ một dòng cơ sở khác cùng loại.
Phần payload của gói truyền tải tiếp theo mà có cùng PID sẽ bắt đầu bằng byte đầu tiên của một gói cơ sở đóng gói (PES packet). Trong trường hợp dữ liệu âm thanh, phần payload của gói PES sẽ bắt đầu bằng một điểm truy cập (an access point). Trong trường hợp dữ liệu hình ảnh, phần payload của gói PES sẽ bắt đầu bằng một điểm truy cập, hoặc một mã kết thúc chuỗi (sequence end code) theo sau đó là một điểm truy cập. Sau điểm nối có thể vẫn còn trường đếm lùi điểm ghép nối. Khi ấy giá trị của trường này là một giá trị âm ‘–n’ nó chỉ ra rằng gói truyền tải này là gói thứ n sau điểm nối.
Điểm truy cập được định nghĩa như sau:
Với dữ liệu hình: đó là byte đầu tiên của tiêu đề chuỗi hình ảnh (video sequence header).
Với dữ liệu âm thanh: đó là byte đầu tiên của khung âm thanh (audio frame).
Trường dữ liệu riêng truyền tải (Transport Private Data) : chiếm 5 byte.
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 5 byte.
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ó).
ltw_flag (legal time 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
piecewise_rate_flag: cờ 1 bit, thể hiện sự có mặt hay không của trường piecewise_rate.
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’. Khi mà cờ này được đặt là ‘1’ trong một gói truyền tải mà có chỉ số ‘splice countdown’ là số dương, thì các gói truyền tải tiếp theo có cùng PID cũng sẽ có giá trị cờ này là ‘1’, cho tới khi nào mà gói truyền tải có chỉ số ‘splice countdown’ lùi về đến 0 (bao gồm cả gói truyền tải hiện tại). Khi cờ này được đặt, nếu dòng cơ sở trong đó là dòng dữ liệu âm thanh, thì trường ‘splice type’ sẽ được đặt là ‘0000’. Nếu dòng cơ sở trong đó chứa dữ liệu hình ảnh thì nó phải thỏa mãn những điều kiện đặt ra tùy theo giá trị của trường ‘splice type’
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.
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. Trong đó fs là tần số đồng hồ hệ thống. Giá trị của trường được tính theo công thức sau:
offset = t1(i) – t(i)
ltw_offset = offset//1
trong đó i là chỉ số của byte đầu tiên của gói truyền tải, ‘offset’ là giá trị được mã hóa ở trường này, t(i) là thời gian đến của byte i ở bộ giải mã (T-STD Transport Stream System Target Decoder), t1(i) là giới hạn trên của khoảng thời gian của cửa sổ thời gian hợp lệ tương ứng với gói truyền tải này.
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’.
Giả thiết byte đầu tiên của gói truyền tải này và N gói tiếp theo có cùng PID, có các chỉ số tương ứng là Ai, Ai + 1, ..., Ai + N. N gói tiếp sau này không có giá trị được mã hóa trong trường ‘legal time window offset’. Khi đó giá trị của t1(Ai + j) được tính theo công thức sau:
t1(Ai + j) = t1(Ai) + j × 188 × 8-bits/byte /R
với j trong khoảng từ 1 đến N.
Tất cả các gói nằm giữa gói này và gói tiếp theo có cùng PID mà có chứa trường ‘legal time window offset’ sẽ được xử lí nếu nó có giá trị :
offset = t1(Ai) – t(Ai)
Giá trị của trường này sẽ không được xác định trong những gói truyền tải mà không có trường ‘legal time window offset’.
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ị. Nếu dòng cơ sở trong đó là âm thanh thì trường này có giá trị ‘0000’. Nếu dòng cơ sở trong đó là dòng dữ liệu hình ảnh thì giá trị của trường này sẽ chỉ ra các điều kiện cần phải tôn trọng khi thực hiện ở điểm nối. Những điều kiện này được chỉ ra trong các bảng từ 3.4.1 đến 3.4.14.
Nhãn thời gian giải mã đơn vị truy cập kế tiếp DTS_next_AU (decoding time stamp next access unit): trường 33-bit, mã hóa thành 3 phần. Trong trường hợp giải mã liên tục và theo chu kì thì trường này chỉ ra thời gian giải mã của đơn vị truy cập ngay sau điểm nối. Thời gian giải mã này được mô tả trong cơ sở thời gian hợp lệ trong gói truyền tải có giá trị ‘splice countdown’ là 0. Trường này sẽ giữ nguyên giá trị trong các gói truyền tải, có cùng PID, tiếp theo cho tới khi giá trị của trường ‘splice countdown’ giảm tới 0.
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ã.
Bảng 3.4.1 – Splice parameters Table 1
Simple Profile Main Level, Main Profile Main Level, SNR Profile Main Level (both layers), Spatial Profile High-1440 Level (base layer),
High Profile Main Level (middle + base layers), Multi-view Profile Main Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 15.0 × 106 bit/s
0001
splice_decoding_delay = 150 ms; max_splice_rate = 12.0 × 106 bit/s
0010
splice_decoding_delay = 225 ms; max_splice_rate = 8.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 7.2 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.2 – Splice parameters Table 2
Main Profile Low Level, SNR Profile Low Level (both layers), High Profile Main Level (base layer),
Multi-view Profile Low Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 115 ms; max_splice_rate = 4.0 × 106 bit/s
0001
splice_decoding_delay = 155 ms; max_splice_rate = 3.0 × 106 bit/s
0010
splice_decoding_delay = 230 ms; max_splice_rate = 2.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 1.8 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.3 – Splice parameters Table 3
Main Profile High-1440 Level, Spatial Profile High-1440 Level (all layers), High Profile High-1440 Level (middle + base layers),
Multi-view Profile High-1440 Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 60.0 × 106 bit/s
0001
splice_decoding_delay = 160 ms; max_splice_rate = 45.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 30.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 28.5 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.4 – Splice parameters Table 4
Main Profile High Level, High Profile High-1440 Level (all layers), High Profile High Level (middle + base layers),
Multi-view Profile High Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 80.0 × 106 bit/s
0001
splice_decoding_delay = 160 ms; max_splice_rate = 60.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 40.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 38.0 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.5 – Splice parameters Table 5
SNR Profile Low Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 115 ms; max_splice_rate = 3.0 × 106 bit/s
0001
splice_decoding_delay = 175 ms; max_splice_rate = 2.0 × 106 bit/s
0010
splice_decoding_delay = 250 ms; max_splice_rate = 1.4 × 106 bit/s
0011 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.6 – Splice parameters Table 6
SNR Profile Main Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 115 ms; max_splice_rate = 10.0 × 106 bit/s
0001
splice_decoding_delay = 145 ms; max_splice_rate = 8.0 × 106 bit/s
0010
splice_decoding_delay = 235 ms; max_splice_rate = 5.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 4.7 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.7 – Splice parameters Table 7
Spatial Profile High-1440 Level (middle + base layers) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 40.0 × 106 bit/s
0001
splice_decoding_delay = 160 ms; max_splice_rate = 30.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 20.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 19.0 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.8 – Splice parameters Table 8
High Profile Main Level (all layers), High Profile High-1440 Level (base layer) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 20.0 × 106 bit/s
0001
splice_decoding_delay = 160 ms; max_splice_rate = 15.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 10.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 9.5 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.9 – Splice parameters Table 9
High Profile High Level (base layer),
Multi-view Profile Main Level (both layers) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 25.0 × 106 bit/s
0001
splice_decoding_delay = 165 ms; max_splice_rate = 18.0 × 106 bit/s
0010
splice_decoding_delay = 250 ms; max_splice_rate = 12.0 × 106 bit/s
0011 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.10 – Splice parameters Table 10
High Profile High Level (all layers),
Multi-view Profile High-1440 Level (both layers) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 100.0 × 106 bit/s
0001
splice_decoding_delay = 160 ms; max_splice_rate = 75.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 50.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 48.0 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.11 – Splice parameters Table 11
4:2:2 Profile Main Level Video
Splice type
Điều kiện
0000
splice_decoding_delay = 45 ms; max_splice_rate = 50.0 × 106 bit/s
0001
splice_decoding_delay = 90 ms; max_splice_rate = 50.0 × 106 bit/s
0010
splice_decoding_delay = 180 ms; max_splice_rate = 50.0 × 106 bit/s
0011
splice_decoding_delay = 225 ms; max_splice_rate = 40.0 × 106 bit/s
0100
splice_decoding_delay = 250 ms; max_splice_rate = 36.0 × 106 bit/s
0101 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.12 – Splice parameters Table 12
Multi-view Profile Low Level (both layers) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 115 ms; max_splice_rate = 8.0 × 106 bit/s
0001
splice_decoding_delay = 155 ms; max_splice_rate = 6.0 × 106 bit/s
0010
splice_decoding_delay = 230 ms; max_splice_rate = 4.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 3.7 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.13 – Splice parameters Table 13
Multi-view Profile High Level (both layers) Video
Splice type
Điều kiện
0000
splice_decoding_delay = 120 ms; max_splice_rate = 130.0 × 106 bit/s
0001
splice_decoding_delay = 150 ms; max_splice_rate = 104.0 × 106 bit/s
0010
splice_decoding_delay = 240 ms; max_splice_rate = 65.0 × 106 bit/s
0011
splice_decoding_delay = 250 ms; max_splice_rate = 62.4 × 106 bit/s
0100 – 1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Bảng 3.4.14 _ Splice parameters Table 14
4:2:2 Profile High Level Video
Splice type
Điều kiện
0000
splice_decoding_delay = 45 ms; max_splice_rate = 300.0 × 106 bit/s
0001
splice_decoding_delay = 90 ms; max_splice_rate = 300.0 × 106 bit/s
0010 – 0011
Dự trữ
0100
splice_decoding_delay = 250 ms; max_splice_rate = 180.0 × 106 bit/s
0101-1011
Dự trữ
1100-1111
Người dùng tự định nghĩa
Đặc điểm dòng truyền tải MPEG
Dòng truyền tải MPEG được cấu tạo từ các gói truyền tải độ dài cố định, thể hiện những ưu điểm nổi bật sau:
Dung lượng cấp phát cho các kênh truyền có thể thay đổi được: Các gói TS với độ dài cố định tạo khả năng linh hoạt trong việc cấp phát dung lượng kênh giữa các số liệu video, audio, cũng như các số liệu phụ. Những gói truyền tải của các dòng cơ sở khác nhau có thể được nhận ra bởi PID. Dung lượng toàn bộ của kênh cũng có thể được cấp phát lại khi phân phối số liệu. Khả năng này có thể được ứng dụng để phân phối các khóa mã trong từng giây đến người xem trong các chương trình truyền hình có thu phí.
Khả năng co giãn: Một kênh truyền có dải thông lớn có thể được khai thác tối đa nhờ ghép nhiều nhất có thể các dòng cơ sở ES vào kênh truyền, hoặc ghép thêm dòng cơ sở mới vào một bộ ghép kênh thứ hai. Tính chất này có giá trị khi phân phối trên mạng cũng như cung cấp khả năng liên vận hành. Tại mức truyền tải, khả năng liên vận hành của dòng bit truyền hình là một đặc tính quan trọng của hệ thống truyền hình số. Khả năng liên vận hành thể hiện ở hai điểm:
Dòng truyền tải MPEG có thể được truyền trên tất cả các hệ thống thông tin.
Hệ thống truyền tải MPEG cũng có thể truyền các dòng bit đã được tạo ra bởi các hệ thống thông tin khác.
Khả năng mở rộng: Cấu trúc của dòng truyền tải cho phép cung cấp các dịch vụ mới trong tương lai mà không làm ảnh hưởng tới cấu trúc hiện tại. Khi đó có nhu cầu tạo ra một loại dòng cơ sở mới, việc duy nhất cần làm là cấp phát thêm một chỉ số PID mà không hề làm thay đổi cấu trúc phần cứng của thiết bị. Tính tương thích vẫn được đảm bảo. Các thiết bị giải mã hiện tại vẫn có khả năng giải mã các gói có chỉ số PID đã biết và bỏ qua các gói có chỉ số PID mới. Khả năng này có thể được ứng dụng để đưa vào “các dạng thức 1000 dòng quét liên tục” hay “3D-HDTV” bằng cách gửi thêm số liệu theo tín hiệu cơ bản.
Khả năng chống lỗi và đồng bộ: Các gói TS có độ dài không đổi tạo nền tảng cho việc kiểm soát lỗi gây ra bởi đường truyền và việc khôi phục lại đồng bộ. Trong dòng truyền tải, các chương trình khác nhau có thể được sắp đặt ở những vị trí khác nhau và không nhất thiết phải đồng bộ với nhau. Kết quả dòng truyền tải cần phải có những hệ thống đồng bộ riêng biệt cho mỗi chương trình. Phương pháp đồng bộ này còn được gọi là Program Clock Reference – PCR.
Thiết bị thu rẻ tiền: Các gói TS có độ dài không đổi cũng sẽ cho phép chế tạo bộ giải mã hệ thống đơn giản, rẻ tiền.
Tính linh hoạt của dòng truyền tải:
Dòng truyền tải MPEG rất linh hoạt thể hiện ở hai khía cạnh sau:
Các chương trình được định nghĩa như là bất kì sự kết hợp nào của dòng bít sơ cấp. Một dòng bít sơ cấp có thể xuất hiện ở trong một hoặc nhiều chương trình khác nhau. Ví dụ 2 dòng bít video khác nhau có thể kết hợp với 1 dòng bit audio để tạo ra 2 chương trình khác nhau. Các chương trình cũng có thể sửa đổi phù hợp với một số yêu cầu đặc biệt. Ví dụ cùng một chương trình truyền hình nhưng phần âm thanh có thể là nhiều ngôn ngữ khác nhau.
Nhiều chương trình khác nhau có thể được ghép kênh trong cùng một hệ thống truyền tải. Tại phía thu, từng chương trình riêng rẽ có thể được tách ra một cách dễ dàng.
Hình 3.4: Ghép kênh 2 chương trình
Với những đặc điểm và tính ưu việt của dòng truyền tải MPEG đã cho phép có nhiều ứng dụng của chuẩn MPEG trong truyền hình số. Chính vì vậy các thiết bị truyền hình theo chuẩn MPEG đang ngày càng trở nên phổ biến, đáp ứng được nhu cầu hiện tại cũng như sự phát triển trong tương lai của truyền hình số.
Kết luận
Yêu cầu quan trọng nhất của việc nén dữ liệu là loại bỏ được càng nhiều dữ liệu dư thừa càng tốt, sao cho đạt được tỉ lệ nén cao mà chất lượng suy giảm không đáng kể. Ngoài ra thì việc vận chuyển dữ liệu sau khi nén từ nơi phát tới nơi thu là một việc cũng rất quan trọng. Với chuẩn MPEG nhiệm vụ này được thực hiện bởi dòng truyền tải.
Dữ liệu sau khi qua bộ nén, được gọi là dòng cơ sở, sẽ được đóng gói thành dòng cơ sở đóng gói PES. Dòng cơ sở đóng gói lại được đóng gói một lần nữa để cho ra dòng truyền tải.
Dòng truyền tải MPEG được tạo nên từ các gói truyền tải có kích thước cố định là cơ sở cho việc phân phối dữ liệu an toàn và chính xác. Đồng thời cũng nhờ có đặc điểm cấu tạo như trên mà dòng truyền tải hết sức mềm dẻo và linh hoạt, dễ dàng trong việc ghép kênh, tách kênh cũng như cấp phát dung lượng. Dòng truyền tải được chuẩn hóa giúp cho việc chế tạo thiết bị trở nên dễ dàng.
Dòng truyền tải có cấu tạo vừa đảm bảo tính chặt chẽ và an toàn cho dữ liệu được vận chuyển, lại vừa đảm bảo tính mở rộng trong tương lai. Đây là một yêu cầu thực tế thường thấy trong sự phát triển của công nghệ.
Do khuôn khổ của luận văn và điều kiện khách quan không cho phép nên em mới chỉ nghiên cứu trên lý thuyết mà chưa có điều kiện phân tích, đo đạc một dòng truyền tải thực tế. Vì lý do đó những kiến thức em trình bày ở trên không tránh khỏi thiếu sót và hạn chế, em rất mong nhận được sự chỉ bảo của các thầy cô và các bạn.
Hà Nội, 5/2008
Sinh viên: Trần Văn Hoan
Tài liệu tham khảo:
Tiếng Anh
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8] John Watkinson, The MPEG handbook.
[9] John Watkinson, Convergence in Broadcast and Communications Media.
[10] ISO/IEC 13818-1 Information technology — Generic coding of moving pictures and associated audio information: Systems.
Tiếng Việt
[11] Ngô Thái Trị, Truyền hình số mặt đất, Nhà xuất bản Bưu điện 2005.
[12] Đỗ Hoàng Tiến – Vũ Đức Lý, Truyền hình số, Nhà xuất bản Khoa học và kỹ thuật 2001.
Các file đính kèm theo tài liệu này:
- Phân tích dòng chuyển tải MPEG.DOC