Khóa luận Phân tích dòng chuyển tải MPEG

Mục lục

Trang phụ bìa

Tóm tắt nội dung i

Mục lục ii

Bảng các kí hiệu viết tắt iv

Mở đầu 1

Chương 1 : Tổng quan về MPEG 2

1.1. Giới thiệu 2

1.2. Ứng dụng của nén dữ liệu: 4

1.3. Mã hóa không tổn hao và mã hóa dự đoán được. 5

1.4. Nguyên lí cơ bản của nén. 7

1.5. Nén video 9

1.5.1. Nén trong ảnh. 11

1.5.2. Nén liên ảnh. 11

1.5.3. Giới thiệu về phép bù chuyển động. 12

1.6. Giới thiệu về MPEG-1 13

1.7. MPEG-2 cùng với các Profile và Level 14

1.8. Giới thiệu về MPEG -4 16

1.9. Giới thiệu về MPEG-7 18

1.10. Nén âm thanh 18

1.11. Dòng bit MPEG 20

Chương 2: Dòng cơ sở (elementary stream) và dòng cơ sở đóng gói (packetized elementary stream) 22

2.1. Dòng cơ sở (elementary stream). 22

2.2. Dòng cơ sở đóng gói (packetized elementary stream) 24

2.2.1. Giới thiệu chung về dòng cơ sở đóng gói 24

2.2.2. Cú pháp dòng cơ sở đóng gói 27

2.2.3. Cấu trúc chi tiết 32

Chương 3: Dòng truyền tải 38

3.1. Giới thiệu chung về dòng truyền tải: 38

3.2. Chuẩn đồng hồ (clock references) 39

3.3. Giải mã dòng truyền tải 41

3.4. Phân tích cú pháp dòng truyền tải 43

3.5. Đặc điểm dòng truyền tải MPEG 60

3.6. Tính linh hoạt của dòng truyền tải: 61

Kết luận 62

Tài liệu tham khảo 63

 

doc69 trang | Chia sẻ: lethao | Lượt xem: 2024 | Lượt tải: 2download
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
g rẽ, rồi được tổng hợp lại trên cơ sở đánh giá mức năng lượng và độ nhạy của HAS với từng băng. Nén không tổn hao Nén không tổn hao cho phép khôi phục lại một cách y hệt dòng bit trước khi nén. Cách nén này loại bỏ những dư thừa thống kê, những thông tin trong tín hiệu có thể dự đoán từ các mẫu trước đó. Cách nén này có ưu điểm là chất lượng âm thanh tốt nhưng hệ số nén đạt được lại quá thấp, thường chỉ giới hạn ở tỉ lệ 2:1 tùy thuộc vào độ phức tạp của dữ liệu nguồn. Nén không tổn hao thường sử dụng các kỹ thuật sau đây: Thuật toán vi phân: Độ sai khác giữa các mẫu tín hiệu liền nhau thường nhỏ hơn nhiều so với bản thân độ lớn của mẫu tín hiệu. Do vậy có một độ dư thừa thông tin lớn. Kĩ thuật DPCM lợi dụng đặc điểm này. DPCM mã hóa phần khác nhau giữa các tín hiệu chứ không mã hóa bản thân mẫu tín hiệu. Hệ thống ADPCM thì lại mã hóa phần khác nhau giữa mẫu thực với mẫu dự đoán cho hiệu quả nén tốt hơn nữa so với hệ thống DPCM. Mã hóa với từ mã có độ dài thay đổi làm tăng tính hiệu quả của việc mã hóa thông tin. Nén có tổn hao Nén có tổn hao lợi dụng đặc điểm của hệ thống HAS là không thể phân biệt một thành phần tần số nào đó khi có một tần số gần đó với biên độ lớn hơn được phát. Bằng cách nén này hệ số nén đạt được trong khoảng từ 2:1 đến 10:1 tùy thuộc vào quá trình mã hóa và yêu cầu chất lượng của tín hiệu sau nén. Nguyên lí cơ bản của nén có tổn hao là loại bỏ đi những thành phần nằm dưới đường cong ngưỡng âm. Vì lý do này nén có tổn hao được gọi là làm mất các thành phần âm. Nén có tổn hao thường sử dụng kết hợp các kỹ thuật sau đây: Kỹ thuật ‘che’ (masking) đối với các thành phần tín hiệu trong miền thời gian và miền tần số. Số bit lượng tử dùng để mã hóa cho mỗi băng là khác nhau. Chặn mức tạp âm lượng tử cho từng âm độ của tín hiệu âm thanh bằng cách đưa ra số bit để đảm bảo mức nhiễu lượng tử nằm dưới mức giá trị cần chặn. Mã hóa nối: sử dụng tính dư thừa trong hệ thống âm thanh đa kênh. Người ta nhận thấy rằng có nhiều thành phần tín hiệu giống nhau trên các kênh của một hệ thống đa kênh. Do đó những thành phần chung này được mã hóa riêng ra và được chỉ thị giải mã lặp lại trên tất cả các kênh. Dòng bit MPEG Bộ nén Đóng gói Bộ nén Đóng gói Bộ nén Đóng gói Bộ nén Đóng gói Video 1 Ghép kênh dòng chương trình Ghép kênh dòng truyền tải Ghép kênh dòng truyền tải Video 2 Audio 1 Audio 2 Dòng cơ sở Dòng cơ sở đóng gói Dòng chương trình Dòng truyền tải đơn chương trình (SPTS) Dòng truyền tải Hình 1.11: Cấu trúc dòng bit MPEG MPEG hỗ trợ một số loại dòng bit cho nhiều mục đích khác nhau được mô tả ở hình 1.11. Đầu ra của một bộ nén được gọi là dòng cơ sở (elementary stream). Nhiều dòng cơ sở có thể được trộn lại để thành một dòng truyền tải (transport stream). Việc ghép kênh này đòi hỏi những khối hoặc gói có kích thước cố định. Cấu trúc của dòng truyền tải là phức tạp vì nó cần cho biết để kết hợp với một dòng cơ sở hình ảnh thì cần dòng cơ sở âm thanh và dòng dữ liệu phụ thuộc nào. Tất nhiên là có thể có dòng truyền tải đơn chương trình (single program transport stream) chỉ mang dòng cơ sở của một chương trình TV. Với một số ứng dụng nhất định thì việc sử dụng dòng truyền tải trở nên không phù hợp. Mỗi gói truyền tải có kích thước nhỏ, cộng với việc nó phải có phần tiêu đề làm cho tốn dung lượng. Ở trường hợp này ta dùng dòng chương trình (program stream). Một dòng chương trình là dòng bit ghép tín hiệu hình ảnh và âm thanh cho một chương trình vào với nhau. Không giống như dòng truyền tải, các khối của dòng chương trình thường lớn và có kích thước không phải là cố định. Cấu trúc chi tiết của dòng cơ sở, dòng cơ sở đóng gói và dòng truyền tải sẽ được mô tả chi tiết trong các chương sau. Chương 2: Dòng cơ sở (elementary stream) và dòng cơ sở đóng gói (packetized elementary stream) Dòng cơ sở (elementary stream). Tín hiệu video số dạng thức CCIR-601 sau khi nén MPEG có dạng một dòng dữ liệu video cơ sở (Elementary Stream - ES). Dòng ES chỉ chứa những thông tin cần thiết để khôi phục lại hình ảnh ban đầu. Tương tự, tín hiệu audio số dạng thức AES/EBU (Tần số lấy mẫu 48kHz, 24bit/mẫu, tốc độ bít 1152kbps) được mã hóa thành dòng cơ sở audio (audio ES). Dòng cơ sở về cơ bản là tín hiệu gốc tại đầu ra của bộ mã hóa và chỉ chứa những thông tin cần thiết để giúp bộ giải mã tái tạo lại hình ảnh, âm thanh ban đầu. Mã hóa Video Mã hóa audio (AES/EBU) (REC 601) Dữ liệu video Dữ liệu audio Dòng cơ sở Elementary Stream ES Dòng cơ sở Elementary Stream ES Hình 2.1: Dòng cơ sở Hình 2.2 sau đây mô tả cách thức tạo ra dòng cơ sở. Tín hiệu video sau khi qua bộ mã hóa hai chiều, cho kết quả là các thông tin về các vector chuyển động, bảng lượng tử, và các dữ liệu về không gian. Những dữ liệu này sau khi được mã hóa bằng các phương thức khác nhau sẽ được trộn vào thành một dòng cơ sở duy nhất. Dữ liệu sau bộ ghép (mux) nhiều hay ít là tùy vào lượng thông tin có trong ảnh. Nhưng tốc độ bit của dòng cơ sở là không đổi nhờ qua một bộ đệm. Bộ đệm này có khả năng cảm nhận tốc độ dữ liệu đi ra để điều khiển tốc độ mã hóa dữ liệu đầu vào. Tốc độ của dòng đi ra được qui định bởi thiết bị đồng hồ yêu cầu (demand clock). Đồng hồ này là do kênh truyền hoặc thiết bị lưu trữ quyết định. Mã hóa 2 chiều Mã hóa entropy và mã hóa độ dài từ mã thay đổi Mã hóa vi sai Bộ ghép Bộ đệm Tín hiệu Video Đồng hồ yêu cầu Vector chuyển động Điều khiển tốc độ Slice Dữ liệu không gian Bảng lượng tử Dòng cơ sở Hình 2.2: Hình thành dòng cơ sở. Cấu trúc dòng cơ sở được mô tả như sau: Khối các hệ số DCT Macro block Slice Ảnh Nhóm ảnh Video sequence x n x n x n x n x n Vector chuyển động Tín hiệu đồng bộ I/P/B Tín hiệu định thời Mở/ Đóng Cỡ ảnh Tỉ lệ khuôn hình Đồng bộ Quét liên tuc/ xen kẽ Loại mẫu Tín hiệu ra Tốc độ ảnh Ma trận lượng tử Level Profile Hình 2.3: Cấu trúc dòng cơ sở Đầu tiên là một tập hợp hợp các hệ số biểu diến khối DCT. Sáu hoặc tám khối DCT tạo nên một macro block. Ở ảnh B và ảnh P mỗi macro block sẽ tương ứng với một vector bù chuyển động. Một số macro block sẽ tạo thành một lát ảnh (slice) biểu thị sọc ngang của hình ảnh từ trái sang phải. Tập hợp các lát ảnh tạo thành một ảnh, ảnh này thì cần biết giá trị cờ I/P/B để biết được loại ảnh tương ứng. Một số ảnh tạo thành một nhóm ảnh (GOP - Group of Picture). Một nhóm ảnh bắt đầu bằng ảnh I, giữa hai ảnh I liền nhau là một số ảnh P và có thể có thêm ảnh B. Một tập hợp các nhóm ảnh tạo thành đoạn dữ liệu video. Bắt đầu mỗi chuỗi video đều có phần tiêu đề chứa những thông tin quan trọng hỗ trợ cho bộ giải mã. Dòng cơ sở đóng gói (packetized elementary stream) Giới thiệu chung về dòng cơ sở đóng gói Do dòng dữ liệu cơ sở là liên tục, có chiều dài tùy thuộc vào lượng dữ liệu đưa vào bộ mã hóa, để có thể truyền đi với độ tin cậy cao, dòng ES được đóng gói thành dòng cơ sở đóng gói ( Packetized Elementary Stream - PES ). Mỗi gói PES gồm một tiêu đề và dữ liệu của dòng cơ sở. Đóng gói Đóng gói (Audio ES) (Video ES) Dòng cơ sở video Dòng cơ sở audio Video PES Audio PES Hình 2.4: Dòng cơ sở đóng gói Start code Stream ID PTS DTS Data Hình 2.5: Cấu trúc gói PES Dòng cơ sở video là dòng bit liên tục mang thông tin về hình ảnh. Trong việc lưu trữ và truyền dẫn thì sẽ thích hợp hơn nhiều nếu sử dụng những khối dữ liệu rời rạc, do vậy dòng cơ sở được đóng gói tạo thành dòng cơ sở đóng gói PES (packetized elementary stream). Tương tự như vậy, dữ liệu audio cũng cần được đóng gói. Cấu trúc của một gói được mô tả trong hình 2.5. Gói được bắt đầu bằng phần tiêu đề chứa một mã bắt đầu gói và một mã để phân biệt loại dữ liệu chứa trong gói. Ngoài ra có thể có thêm một số nhãn thời gian để đồng bộ với bộ giải mã hình ảnh trong thời gian thực và đồng bộ với âm thanh. Hình 2.6 chỉ ra rằng nhãn thời gian thực chất là lấy mẫu trạng thái của một bộ đếm được điều khiển bởi đồng hồ 90kHz. Đồng hồ này có được nhờ chia tần một đồng hồ chủ 27MHz cho 300. Có hai loại nhãn thời gian là nhãn thời gian trình diễn PTS (presentation time stamp) và nhãn thời gian giải mã DTS (decode time stamp). Nhãn thời gian trình diễn được dùng để xác định khi nào thì hình ảnh sẽ được thể hiện trên màn ảnh, còn nhãn thời gian giải mã xác định khi nào hình ảnh được giải mã. Trong mã hóa hai chiều, những nhãn thời gian này có thể không khác nhau. 27 MHz : 300 90 kHz 33-bit count Encoder clock Time stamp Hình 2.6: Nhãn thời gian Gói dữ liệu âm thanh chỉ có nhãn thời gian trình diễn. Vì khi có sự đồng bộ âm thanh, thì dòng dữ liệu audio và video phải được gán nhãn từ cùng một bộ đếm. Một minh họa được cho ở hình 2.7. Nhóm ảnh được bắt đầu bởi ảnh I, sau đó ảnh P được gửi trước ảnh B1 và B2. Ảnh P phải được giải mã trước khi B1 và B2 giải mã. Tại một thời điểm chỉ có một ảnh được giải mã, ảnh I được giải mã ở thời điểm N nhưng phải tới thời điểm N+1 thì nó mới được thể hiện trên màn ảnh. Khi ảnh I được thể hiện thì ảnh P1 được giải mã. P1 sẽ được lưu giữ trong RAM. Tại thời điểm N+2, ảnh B1 được giải mã và thể hiện ngay trên màn hình. Vì lí do này mà nó không cần nhãn thời gian giải mã. Tại thời điểm N+3, thì ảnh B2 được giải mã và thể hiện. Tại N+4, thì ảnh P1 mới được thể hiện. Ta thấy P1 có sự khác nhau nhiều nhất của hai nhãn thời gian. Cùng thời điểm này thì ảnh P2 được giải mã và lưu trữ để giải mã ảnh B3. Quá trình giải mã và trình diễn cứ thế tiếp tục. Khi truyền N+4 N+2 N+3 N+7 N+5 N+1 N+1 - - N+4 - N P1 B1 B2 P2 B3 I B1 B2 P1 B3 I PTS DTS Khi giải mã Khi trình diễn I P1 B1 B2 P2 B3 N N+1 N+2 N+3 N+4 N+5 N+1 N+2 N+3 N+4 N+5 Hình 2.7: Sử dụng nhãn thời gian PTS/DTS trong việc đồng bộ giải mã 2 chiều. Trên thực tế, khoảng thời gian giữa các hình ảnh đến bộ giải mã thường là không đổi, do vậy sẽ là thừa nếu gói nào cũng gán thêm nhãn thời gian PTS/DTS. Nhãn thời gian có thể chiếm một khoảng 700ms trong dòng chương trình (program stream) và 100ms trong dòng truyền tải (transport stream). Vì lí do đó mà không phải mọi gói đều có nhãn PTS/DTS. Vì trong dòng bit, mỗi loại ảnh (I, B hoặc P) đều được gán một cờ để xác định, do đó bộ giả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) PES HEADER PES PACKET LENGTH (2 BYTE) STUFFING BYTES PES START CODE PREFIX (3 BYTE) PES PACKET DATA PES SCRAMBLING CONTROL (2 BIT) PES PRIORITY (1 BIT) DATA ALIGNMENT INDICATOR (1 BIT) COPYRIGHT (1 BIT) ORIGINAL OR COPY (1 BIT) 7 FLAGS (8 BIT) PES HEADER DATA LENGTH (8 BIT) “10” (2 BIT) OPTIONAL FIELDS ESCR (48 BIT) ES RATE (24 BIT) PES EXTENSION PTS DTS (40 BIT) ADDITIONAL COPY INFO (8 BIT) DSM TRICK MODE (8 BIT) PES CRC (16 BIT) 5 FLAGS OPTIONAL FIELDS PES PRIVATE DATA PACK HEADER FIELD PROGRAM PACKET SEQ COUNTER (16 BIT) P- STD BUFFER (16 BIT) PES EXTENSION FIELD 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 VIDEO PES AUDIO ES ES AUDIO PES ( TRANSPORT STREAM ) DÒNG TRUYỀN TẢI ( PROGRAM STREAM ) DÒNG CHƯƠNG TRÌNH AUDIO PES VIDEO PES VIDEO PES AUDIO PES MÃ HOÁ VIDEO ĐÓNG GÓI GHÉP KÊNH DÒNG TRUYỀN TẢI GHÉP KÊNH CHƯƠNG TRÌNH MÃ HOÁ AUDIO ĐÓNG GÓ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 … … … 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 PCR (48 BIT) OPCR (48 BIT) SPLICE COUNTDOWN (8 BIT) ADAPTATION FIELD EXTENSION (40 BIT) TRANSPORT PRIVATE DATA (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ộ t

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

  • docPhân tích dòng chuyển tải MPEG.DOC
Tài liệu liên quan