Tải bản đầy đủ

Đồng bộ tích hợp audio video

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────

BÁO CÁO
MÔN: XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN

Đề 18: ‘Đồng bộ tích hợp dữ liệu audio - video’

Sinh viên thực hiện:

Nguyễn Việt Anh

20121230 CNTT-TT 1.01 K57

Nguyễn Hoàng Tùng

20122745 CNTT-TT 1.02 K57

Vũ Quang Đại


20121475 CNTT-TT 1.02 K57

Giáo viên hướng dẫn: PGS.TS Nguyễn Thị Hoàng Lan

Hà Nội, tháng 4 năm 2016


1

PHÂN CÔNG CÔNG VIỆC

Vũ Quang Đại

Tìm hiểu chung về kĩ thuật đồng bộ tích hợp dữ liệu
audio – video trong định dạng file video

Nguyễn Hoàng Tùng

Tìm hiểu cấu trúc file : *.avi
Giải thích đồng bộ tích hợp dữ liệu audio – video
trong cấu trúc file *.avi

Nguyễn Việt Anh

Tìm hiểu một thuật toán đồng bộ audio – video trình diễn
file *.avi thời gian thực và thử nghiệm đánh giá kết quả


2

MỤC LỤC
Nội dung
TÌM HIỂU ĐỒNG BỘ TÍCH HỢP AUDIO – VIDEO TRONG FILE VIDEO ................................................... 3

I.
1.

TỔNG QUAN VỀ ĐỒNG BỘ ĐA PHƯƠNG TIỆN ....................................................................................................................... 3
1.1. Khái niệm chung…………………………………………………………………………………………………………………...3
1.2. Phân loại...................................................................................................................................................................... 3


2.

CÁC NGUYÊN TẮC ĐỒNG BỘ .................................................................................................................................... 4
2.1. VỀ PHƯƠNG DIỆN THỜI GIAN ......................................................................................................................................... 4
2.2. Về phương diện cảm thụ .............................................................................................................................................. 4
CÁC MÔ HÌNH ĐỒNG BỘ ............................................................................................................................................ 5

3.

3.1. MÔ HÌNH DÒNG THỜI GIAN (TIMELINE) .....................................................................................................5
3.2. Mô hình điểm tham chiếu (Reference point)…………………………………………………………………………………...5
3.3. Đồng bộ dựa trên sự kiện ………………………………………………………………………………………………………..5
3.4. Đồng bộ audio -video thời gian thực tại nơi nhận…………………………………………………………………………….6

3.5.Tích hợp audio –video ..........................................................................................................................6
4. DÒNG CƠ SỞ ĐÓNG GÓI (PACKETIZED ELEMENTARY STREAM) .........................................................6
4.1. DÒNG CƠ SỞ ( ELEMENTARY STREAM)......................................................................................................6
4.2. Giới thiệu chung về dòng cơ sở đóng gói ..................................................................................................8
II.

TIM HIỂU CẤU TRUC FILE *.AVI ................................................................................................18

1.

RIFF FILE FORMAT ..............................................................................................................................18

2.

AVI RIFF FORM ...............................................................................................................................19

3.

AVI MAIN HEADER

4.
5.
6.
7.
III.

.........................................................................................................................20
AVI Stream Headers ......................................................................................................................20
Stream data (‘movi’ list) ................................................................................................................21
AVI Index Entries ..........................................................................................................................22
Các cấu trúc....................................................................................................................................23
TIM HIỂU CONG CỤ VA THỬ NGHIỆM .......................................................................................32

1.

PHẦN MỀM AUDIO VIDEO SYNCHRONIZER ................................................................................................32

2.

GIAO DIỆN CHÍNH VÀ CÁC BƯỚC ĐỒNG BỘ AUDIO-VIDEO VỚI AUDIO VIDEO SYNCHRONIZER ................................32

IV.

TAI LIỆU THAM KHẢO ..............................................................................................................38


3

I.

Tìm hiểu đồng bộ tích hợp audio – video trong file Video

1. Tổng quan về đông bộ đa phương tiện
1.1.

Khái niệm chung

Đồng bộ đa phương tiện bao gồm việc định nghĩa và thiết lập mối quan hệ
về thời gian giữa các kiểu phương tiện. Nó được áp dụng trong các lĩnh vực phim
ảnh, ghi băng từ, đĩa, trình diễn và đặc biệt là trong các ứng dụng truyền thông đa
phương tiện như hội nghị truyền hình, đào tạo điện tử… Khi các dòng được kết
hợp với nhau, ràng buộc về mặt thời gian là rất chặt chẽ.
Ví dụ:
Bộ trộn tín hiệu audio số đòi hỏi các mẫu phải đến trùng với xung nhịp đồng hồ.
Trong quá trình thể hiện, các ràng buộc là kém chặt chẽ hơn do giới hạn cảm
thụ của con người vì vậy cho phép có sai số nhất định về mặt thời gian. Sai số cho
phép này trong quá trình tạo, trình diễn hoặc chuyển đổi gọi là khả năng chiu lỗi
của các thành phần. Một điểm đáng chú ý là khả năng chịu lỗi trong quá trình trình
diễn phụ thuộc vào kiểu phương tiện và nội dung.
Ví dụ:
Lỗi định thời trong dòng audio sẽ dễ nhận ra hơn so với trong dòng video và khả
năng chịu lỗi của dòng audio sẽ kém hơn khi audio được kết hợp với các nội dung
trực quan khác như video hoặc đồ hoạ.
1.2.

Phân loại

Có 2 kiểu đồng bộ :
- Đồng bộ liên tục: đồng bộ bám liên tục theo thời gian, ta phải luôn luôn
theo dõi, điều chỉnh luồng dòng.


4

- Đồng bộ điểm : đồng bộ các khối dữ liệu tại các thời điểm tham chiếu.
2. Các nguyên tắc đồng bộ
2.1.

Về phương diện thời gian

Ràng buộc về mặt thời gian là thuộc tính vốn có (ví dụ tốc độ lấy mẫu ảnh
hưởng đến việc định thời dòng audio ) hoặc là kết quả của quá trình kết hợp nhiều
phương tiện khác nhau.
Vấn đề đặt ra đối với đồng bộ đa phương tiện là làm sao thoả mãn phần:
cung cấp (producer), tiếp nhận (consumer) và biến đổi (transformer). Như vậy, môt
hệ thống đa phương tiện là sự kết hợp của các thành phần được kết nối với nhaumột mạng các thành phần (component network) - trong đó các kết nối mang các
giá trị phương tiện (media value) từ thành phần này sang thành phần khác.
Dùng khung nhìn (view) này đối với hệ đa phương tiện, ta có thể liên hệ
đồng bộ với các số đo định thời trên các thành phần mạng. Số đo được lấy khi môt
thành phần phương tiện đơn lẻ (một khung hình hoặc một mẫu…) đến hoặc rời
cổng (port). Mỗi số đo bao gồm một nhãn thời gian (timestamp) cho phần tử ở
cổng và một giá trị tham chiếu (reference value).
Giá trị đầu tiên được lấy ra từ bản thân dòng, giá trị thứ hai là từ một tín hiệu
tham chiếu (reference signal) gắn với cổng. Trong thực tế, nhãn thời gian có thể
đặt được bằng cách đo lường (sử dụng bộ đếm byte, đếm số phần tử) hoặc căn cứ
vào mã thời gian(time code) được nhúng trong các dòng trong khi các giá trị tham
chiếu thường được lấy từ các nguồn bên ngoài như đồng hồ hệ thống…
2.2.

Về phương diện cảm thụ

Đồng bộ đa phương tiện đảm bảo làm trơn các hiệu ứng trễ và điều khiển
phối hợp thời gian trình diễn đồng thời các dòng dữ liệu đa phương tiện để thỏa
mãn độ cảm thụ audio-video.


5

3. Các mô hình đồng bộ
3.1.

Mô hình dòng thời gian (Timeline)

Các hành động được xác định bởi thời điểm bắt đầu, thực hiện đồng bộ bám
theo thời gian tồn tại của đối tượng. Mô hình sử dụng 1 dòng thời gian tổng thể.
Đồng bộ bám liên tục theo dòng thời gian, vì vậy yêu cầu cần phải có đồng bộ
đồng hồ. Mô hình này cho chất lượng cao nhưng có các yêu cầu chi phí cao.
3.2.

Mô hình điểm tham chiếu (Reference point)

Trong mô hình này thì các thời điểm tham chiếu hay điểm đồng bộ được xác
định bên trong thời gian tồn tại của đối tượng đa phương tiện, tại thời điểm đó thực
hiện đồng bộ thời gian giữa các dòng dữ liệu đa phương tiện để trình diễn (player).
Mô hình sẽ dùng nhãn thời gian đánh dấu bên trong các đối tượng tại các
thời điểm cần đồng bộ. Tuy nhiên nếu thời điểm cần đồng bộ không phải là điểm
bắt đầu hay kết thúc của đối tượng mà là nằm ở giữa thì các đối tượng có thể bị
phân mảnh.
3.3.

Đồng bộ dựa trên sự kiện

Ở đây các hành động, thao tác được bắt đầu và kết thúc tại những thời điểm
xác định.
Ví dụ: trong một ứng dụng tương tác, việc ấn một nút, kích hoạt một menu
sẽ làm hiển thị lên màn hình một ảnh và chơi một đoạn audio số…Ở đây ta muốn
hình ảnh xuất hiện cùng một lúc khi âm thanh được phát.


6

3.4.

Đồng bộ audio -video thời gian thực tại nơi nhận

Mô hình này sẽ thiết lập lại quan hệ thời gian giữa các gói dữ liệu audio –
video để trình diễn liên tục, cảm thụ trung thực tại nơi nhận so với nguồn, là kỹ
thuật đồng bộ tín hiệu audio và video.
3.5.

Tích hợp audio –video

Sự kết hợp, bổ sung vào hệ thống hiện có các loại dữ liệu, các ứng dụng và
trình diễn thể hiện đa phương tiện (tích hợp trong định dạng file, vào định dạng
Web, tích hợp vào CSDL…).
4. Dòng cơ sở đóng gói (packetized elementary stream)
4.1.

Dòng cơ sở ( Elementary Stream)

Tín hiệu video số dạng thức CCIR-601 (tiêu chuẩn truyền hình số cơ bản)
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.


7

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.
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.

Hình thành dòng cơ sở


8

Cấu trúc dòng cơ sở được mô tả như sau:
Đầ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
4.2.

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ở.

Dòng cơ sở video

Đóng gói

Video PES

Đóng gói

Audio PES

(Video ES)
Dòng cơ sở audio
(Audio ES)

Hình 2.1: Dòng cơ sở đóng gói

Start code

Stream ID

PTS

DTS

Hình 2.2: Cấu trúc gói PES

Data


9

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.2. 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.3 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
Encoder
clock

: 300

90 kHz

33-bit
count

Time stamp

Hình 2.3: 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.4. 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.


10

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
I

P1

B1

B2

P2

B3

PTS

N+1

N+4

N+2

N+3

N+7

N+5

DTS

N

N+1

-

-

N+4

-

Khi giải mã
N

N+1

N+2

N+3

N+4

N+5

I

P1

B1

B2

P2

B3

I

B1

B2

P1

B3

N+3
N+4
Khi trình diễn

N+5

N+1

N+2

Hình 2.4: 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.


11

PES START CODE
PREFIX (3 BYTE)

‘10’
(2 BIT)

PES
SCRAMBLING
CONTROL
(2 BIT)

STREAM ID
(1BYTE)

PES
PRIORITY
(1 BIT)

PTS
DTS
(40 BIT)

DATA
ALIGNMENT
INDICATOR
(1 BIT)

ESCR
(48 BIT)

PES PACKET
LENGTH (2 BYTE)

COPYRIGHT
(1 BIT)

ES RATE
(24 BIT)

PES
HEADER

ORIGINAL
OR COPY
(1 BIT)

DSM
TRICK MODE
(8 BIT)

7 FLAGS
(8 BIT)

ADDITIONAL
COPY INFO
(8 BIT)

5 FLAGS

PES
PRIVATE
DATA

PACK
HEADER
FIELD

PROGRAM PACKET
SEQ COUNTER
(16 BIT)

STUFFING
BYTES

PES PACKET
DATA

PES HEADER
DATA
LENGTH
(8 BIT)

PES CRC
(16 BIT)

OPTIONAL
FIELDS

PES
EXTENSION

OPTIONAL
FIELDS

P- STD
BUFFER
(16 BIT)

PES
EXTENSION
FIELD

Hình 2.5: Cú pháp gói PES

1.
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.
2.
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ở.
3.
Độ 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.
4.

Các byte tiêu đề và đệm PES:

4.1. 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.


12

4.2. Đ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:
4.3. Ư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’.
4.4. 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.
4.5. 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ệ.
4.6. 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.
4.7.

Các giá trị cờ (flags):

4.7.1. 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.
4.7.2. 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


13

PES này.
4.7.3. 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.
4.7.4. 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).
4.7.5. 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).
4.7.6. 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.
4.7.7. 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.
4.8. 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.
4.9.

Trường tùy chọn (optional field):

4.9.1. 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.
4.9.2. 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ã.
4.9.3. 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).


14

4.9.4. 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.
4.9.5. Trường DSM Trick Mode: trường 8-bit, gồm có:
4.9.5.1. Đ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)

4.9.5.2. 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

4.9.5.3.
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.
4.9.5.4.

Cắt tần số (frequency truncation): trường 2-bit, chỉ thị sự hạn


15

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

4.9.6. 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ả.
4.9.7. 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.
4.9.8. Trường mở rộng (PES extension): 4.9.8.1. Các trường cờ (5 flags):
- 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à PSTD 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.


16

4.9.8.2. 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á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).


17

DỮ LIỆU

MÃ HOÁ

ES

VIDEO
PES
ĐÓNG
GÓI

VIDEO
VIDEO

GHÉP
KÊNH
CHƯƠNG
TRÌNH

AUDIO
PES
DỮ LIỆU

MÃ HOÁ
AUDIO

AUDIO

VIDEO PES
AUDIO PES

ES

DÕNG CHƯƠNG
TRÌNH

( PROGRAM
STREAM )

ĐÓNG

DÕNG TRUYỀN

GÓI

TẢI
GHÉP
KÊNH
DÒNG
TRUYỀN
TẢI

VIDEO PES
AUDIO PES

Hình 2.6: Sơ đồ mạch mã hóa MPEG

( TRANSPORT
STREAM )


18

II. Tìm hiểu cấu trúc file *.avi
Microsoft AVI (Audio Video Interleave - âm thanh hình ảnh xen kẽ) file là 1 loại
RIFF file được sử dụng trong những ứng dụng thu, sửa, xem lại audio-video kết hợp.
Nhìn chung, AVI file chứa nhiều dòng của những kiểu dữ liệu khác nhau. Hầu hết các
file avi đều sử dụng cả dòng dữ liệu tiếng lẫn dòng dữ liệu hình.
1. RIFF file format
File avi được dựa trên định dạng tài liệu RIFF (resource interchange file format).
Một file RIFF bao gồm 1 phần mở đầu (riff header) tiếp theo là không hoặc những
danh sách thêm và cuối cùng là các chunks.
- Phần mở đầu (riff header):
Khuôn dạng: ‘RIFF’ filesize filetype (data) . ‘RIFF’ là mã FOURRCC
của ‘RIFF’, filesize có độ dài 4 byte là giá trị của độ dài dữ liệu (data)
trong file, filetype là 1 FOURCC định danh loại của file. Giá trị của
filesize bao gồm cả đồ dài của filetype cộng với phần dữ liệu nhưng
không bao gồm độ dài của phần ‘RIFF’ và filesize. Phần dữ liệu bao gồm
những khúc (chunks) và danh sách (lists), bất kể thứ tự nào.
- Khuôn dạng của một chunk:
ckID, ckSize, ckData.
ckID là 1 FOURCC định danh dữ liệu chứa trong chunk.
ckSize có độ dài 4byte là giá trị độ dài của ckData. ckSize bao gồm dữ
liệu có hiệu lực trong chunk ko bao gồm phần thêm vào, độ dài của ckID
và ckSize.
ckData rỗng hoặc chứa các byte dữ liệu.
- Khuôn dạng của một danh sách:
‘LIST’, listSize, listType, listData.
‘LIST’ là mã FOURCC của ‘LIST’.
listsize có độ dài 4byte là giá trị độ dài của danh sách.
listtype là 1 mã FOURCC.


19

listdata bao gồm các chunk hoặc list,bất kể thứ tự nào. Giá trị của listsize
bằng độ dài của listtype cộng độ dài của listdata.
Phần còn lại của bài này sử dụng kí pháp sau để mô tả RIF chunk: ckID ( ckData )
(chunk size được ngầm định)
Kí pháp để thể hiện LIST : ‘LIST’ ( listType ( listData ) )
Những yếu tố tùy chọn được đặt trong ngoặc vuông [ optional element ]
2. AVI RIFF FORM
File AVI được định danh bởi 1 FOURCC ‘AVI’ trong phần RIFF header. Tất cả
các file avi đều bao gồm 2 phần LIST chunk bắt buộc, nó định nghĩa dạng của các
dòng (streams) và các dòng dữ liệu (stream data) tương ứng. File avi có thể cũng bao
gồm chỉ số chunk, nó chỉ ra vị trí của những dữ liệu chunk trong file. File avi với
những thành phần của nó được biểu diễn ở dạng sau:

Danh sách ‘hdrl’ định nghĩa dạng của dữ liệu và là danh sách chunk được yêu cầu
đầu tiên. Danh sách ‘movi’ bao gồm dữ liệu cho AVI sequence và là danh sách chunk
thứ 2 được yêu cầu. ‘idx1’ bao gồm chỉ số. file avi phải có 3 thành phần trong chuỗi
chính (proper sequence). Chú ý: phần mở rộng OpenDML định nghĩa loại chỉ số khác,
định danh bởi FOURCC ‘index’.
Danh sách ‘hdrl’ và ‘movi’ sử dụng những chunk con trong dữ liệu của chúng. Ví
dụ sau chỉ ra AVI RIFF form được mở rộng với những chunk cần thiết để hoàn thành
những danh sách này.


20

3. AVI main header
Danh sách ‘hdrl’ bắt đầu với phần mở đầu chính, nó được chứa trong chunk ‘avih’.
Nó chứa các thông tin toàn cục cho toàn bộ file avi, như là số lượng các dòng
(streams) trong file và độ rộng độ cao của chuỗi hình ảnh. Nó bao gồm một cấu trúc
AVIMAINHEADER.
4. AVI Stream Headers
Một hoặc nhiều danh sách ‘strl’ theo sau phần mở đầu. Một danh sách ‘strl’ được
yêu cầu cho mỗi một dong dữ liệu. Nó chứa các thông tin về một dòng (stream) trong
file, và phải chứa một chunk mở đầu dòng (stream header chunk) ‘strh’ và một chunk
dạng mẫu dòng (stream format chunk) ‘strf’. Thêm nữa, ‘strl’ có thể chứa một chunk
dữ liệu mở đầu dòng (Stream-header data chunk) ‘strd và 1 chunk tên dòng (stream
name chunk) ‘strn’.
Chunk mở đầu dòng (‘strh’) bao gồm một cấu trúc AVISTREAMHEADER.
Chunk dạng mẫu dòng (‘strf’) phải theo sau chunk mở đầu dòng (‘strh’).nó mô tả


21

dạng của dữ liệu trong dòng. Dữ liệu chứa trong chunk này phụ thuộc vào loại dòng
(stream type ). Trong dòng hình ảnh, thông tin là một cấu trúc BITMAPINFO, bao
gồm thông tin bảng mầu nếu thích hợp. trong dòng âm thanh, thông tin là một cấu trúc
WAVEFORMATEX.
Nếu chunk dữ liệu dòng mở đầu (‘strd’) được thể hiện, nó theo sau chunk dạng
mẫu dòng. Định dạng và nội dung của chunk này được định nghĩa bởi bộ điều vận mã
hóa/giải mã ( codec driver ). Tiêu biểu, bộ điều vận sử dụng thông tin này để lập câu
hình. Những ứng dụng đọc hay ghi file avi không cần biên dịch thông tin này; chúng
đơn giản là chuyển nó đến bộ điều vận như một khối nhớ.
Phần mở đầu dòng trong ‘hdrl’ được liên kết với dữ liệu dòng trong danh sách
‘movi’ theo sự sắp xếp của những chunk ‘strl’. Chunk ‘strl’ đầu tiên đặt là stream 0,
cái thứ 2 là stream 1,…
5. Stream data (‘movi’ list)
Theo sau phần thông tin mở đầu là danh sách ‘movi’, nó chứa dữ liệu thực sự trong
những dòng,đó là các khung hình ảnh và mẫu âm thanh. Những chunk dữ liệu có thể
lưu trực tiếp trong danh sách ‘movi’, hoặc chúng có thể được nhóm lại bên trong
những danh sách ‘rec’. việc nhóm vào trong ‘rec’ có mục đích là sẽ đọc tất cả những
chunk được nhóm từ ổ đĩa.
FOURCC định danh cho mỗi chunk dữ liệu mã hóa từ 2 chữ số chỉ số thứ tự của
dòng theo sau là 2 kí tự định nghĩa loại thông tin trong chunk.
Các mã 2 kí tự:
db : khung hình ảnh không nén (uncompressed video frame)
dc : khung hình ảnh đã nén (compressed video frame)
pc : thay đổi bảng màu wb : dữ liệu âm thanh
Ví dụ : nếu stream 0 chứa dữ liệu âm thanh, chunk dữ liệu của dòng này sẽ có mã
FOURCC ‘00wb’. Nếu dòng 1 chứa hình ảnh, những chunk dữ liệu của dòng này phải
sẽ có mã FOURCC ‘01db’ hoặc ‘01dc’. Chunk dữ liệu hình ảnh cũng có thể định


22

nghĩa những giá trị bảng màu mới để cập nhật bảng màu trong một chuỗi avi. Mỗi
chunk có sự thay đổi màu (‘xxpc’) chứa một cấu trúc AVIPALCHANGE. Nếu môt
dòng chứa những sự thay đổi màu, cờ AVISF_VIDEO_PALCHANGES trong
dwFlags thành phần của cấu trúc AVISTREAMHEADER được đặt giá trị để báo hiệu
trong dòng đó.
Những dòng văn bản có thể sử dụng tùy ý 2 kí tự mã hóa.
6. AVI Index Entries
Avi 1.0 index
Một chunk chỉ số tùy chọn (‘idx1’) có thể theo sau danh sách ‘movi’. Chỉ số chứa
một danh sách của những chunk dữ liệu và vị trí của chúng trong file. Nó bao gồm
một cấu trúc AVIOLDINDEX với nhiều mục cho mỗi chunk dữ liệu, kể cả ‘rec’
chunk. Nếu file chứa chỉ số, đặt giá trị của cờ dwFlags trong cấu trúc
AVIMAINHEADER là AVIF_HASINDEX.
Avi 2.0 index
Chỉ số trong avi 2.0 có thể xuất hiện như một chunk đơn. Ngoài ra, những đoạn chỉ
số có thể đươc đan xen trong chunk ‘movi’. Nếu đoạn chỉ số được đặt trong chunk
‘movi’, một siêu chỉ số chứa một chỉ số của đoạn chỉ số đó. Cấu trúc
AVIMETAINDEX là cấu trúc của cả đoạn chỉ số và siêu chỉ số.
7. Các cấu trúc
 AVIMAINHERDER : định nghĩa những thông tin toàn cục của một file avi


23

- ffc : là 1 mã FOURCC . giá trị phải là ‘avih’.
- cb : chỉ ra kicks thước của cấu trúc, ko bao gồm 8byte đầu tiên.
- dwMicroSecPerFrame : số micro giây giữa mỗi khung hình. Giá trị này
chỉ ra thời gian tổng thể của tệp tin.
- dwMaxBytesPerSec : chỉ định tốc độ tối đa gần đúng của tệp tin. Chỉ ra
số byte trong 1 giây mà hệ thống phải xủ lý để thể hiện một chuỗi avi
theo quy định của các biến khác trong chunk main header và stream
header.
- dwPaddingGranularity : Specifies the alignment for data, in bytes. Pad
the data to multiples of this value.
- dwFlags : chứa 1 kết hợp đảo bit của 0 hoặc nhiều cờ theo sau.các giá trị:
AVIF_COPYRIGHTED : chỉ ra các tệt tin avi có bản quyền về dữ liệu và
phần mềm. Khi cờ này được sử dụng, phần mềm sẽ không cho phép dữ
liệu được nhân bản.
- AVIF_HASINDEX :chỉ ra tệp avi có một chỉ số.
- AVI_ISINTERLEAVED : chỉ ra các tệt tin avi được đan xen.


24

- AVIF_MUTSUSEINDEX :chỉ ra rằng ứng dụng nên sử dụng chỉ số hơn
là sắp xếp các chunk trong tệp tin để xác định thứ tự trình bày của dữ
liệu.
- AVIF_WASCAPTUREFILE : chỉ ra file avi là 1 file đặc biệt được chỉ
định để thu video thời gian thực. ứng dụng nên cảnh báo người dùng
trước khi ghi lên file với cờ này vì người sử
- dwInitialFrames : xác định khung hình ban đầu của tệt tin được xen kẽ.
tệp tin ko xen kẽ nên để giá trị là 0. Nếu bạn đang tạo ra những tệp tin
xen kẽ, định rõ số khung hình trước khi tới khung hình ban đầu.
- dwStreams : số Stream trong tệp tin.
- dwSuggestedBufferSize : chỉ định kích thước bộ đệm đề nghĩ để đọc file
này.
- dwWidth : Chỉ định chiều rộng của các tập tin AVI theo pixel.
- dwHeight : Chỉ định chiều cao của các tập tin AVI theo pixel.
- dwReserved : được dành riêng. Thiết lập mảng này không.


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×