Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Поперешняк, Звукові карти.rtf
Скачиваний:
3
Добавлен:
22.07.2019
Размер:
375.23 Кб
Скачать

2.8 Mpeg: Загальна інформація

Стандарт стискування MPEG розроблений Експертною групою кінематографії(Moving Picture Experts Group - MPEG). MPEG це стандарт на стискування звукових і відео файлів в зручніший для завантаження або пересилки, наприклад через інтернет, формат.

Існують різні стандарти MPEG(як їх ще іноді називають фази - phase) : MPEG - 1, MPEG - 2, MPEG - 3, MPEG - 4, MPEG - 7.

MPEG складається з трьох частин: Audio, Video, System(об'єднання і синхронізація двох інших).

MPEG - 1

За стандартом MPEG - 1 потоки відео і звукових даних передаються з коростью 150 кілобайт в секунду -- з такою ж швидкістю, як і одношвидкісний CD - ROM програвач -- і управляються шляхом вибірки ключових відео кадрів і заповненням тільки областей, що змінюються між кадрами. До нещастя, MPEG - 1 забезпечує якість відеозображення нижче, ніж відео, що передається за телевізійним стандартом.

MPEG - 1 був розроблений і оптимізований для роботи з дозволом 352 ppl(point per line -- точок на лінії) * 240(line per frame -- ліній в кадрі) * 30 fps(frame per second -- кадрів в секунду), що відповідає швидкості передачі CD звуку високої якості. Використовується колірна схема - YCbCr(де Y - яскравісна площина, Cb і Cr - колірні площини).

Як MPEG працює:

Залежно від деяких причин кожен frame(кадр) в MPEG може бути наступного виду:

  • I(Intra) frame - кодується як звичайна картинка.

  • P(Predicted) frame - при кодуванні використовується інформація від попередніх I або P кадрів.

  • B(Bidirectional) frame - при кодуванні використовується інформація від одного або двох I або P кадрів(один передуючий даному і що один, що йде за ним, хоча може і не безпосередньо, см Рис.1)

Послідовність кадрів може бути наприклад така: IBBPBBPBBPBBIBBPBBPB...

Послідовність декодування : 0312645...

Треба помітити, що перш ніж декодувати B кадр вимагається декодувати два I або P кадру. Існують різні стандарти на частоту, з якою повинні наслідувати I кадри, приблизно 1-2 в секунду, соответствуюшие стандарти є і для P кадрів(кожен 3 кадр має бути P кадром). Існують різні відносні дозволи Y, Cb, Cr площин(Таблиця 1), зазвичай Cb і Cr кодуються з меншим дозволом чим Y.

Вид Формату

Стосунки дозволів по горизонталі(Cb/Y) :

Відношення дозволів по вертикалі(Cb/Y) :

4:4:4

1:1

1:1

4:2:2

1:2

1:1

4:2:0

1:2

1:2

4:1:1

1:4

1:1

4:1:0

1:4

1:4

Для застосування алгоритмів кодування відбувається розбиття кадрів на макроблоки кожен з яких складається з певної кількості блоків(розмір блоку - 8*8 пікселів). Кількість блоків в макроблоку в різних площинах різне і залежить від використовуваного формату:

Техніка кодування :

Для більшого стискування в B і P кадрах використовується алгоритм пророцтва руху(що дозволяє сильно зменшити розмір P і B кадрів -- Таблиця 2) на виході якого виходить:

  • Вектор зміщення(вектор руху) блоку який треба передбачити відносно базового блоку.

  • Різниця між блоками(яка потім і кодується).

Оскільки не будь-який блок можна передбачити на підставі інформації про попередніх, то в P і B кадрах можуть знаходитися I блоки(блоки без пророцтва руху).

Вид кадру

I

P

B

Середній розмір

Розмір кадру для стандарту SIF(kilobit)

150

50

20

38

Метод кодування блоків(або різниці, що отримується при методі пророцтво руху) містить в собі:

  • Discrete Cosine Transforms(DCT - дискретне перетворення косинусів).

  • Quantization(перетворення даних з безперервної форми в дискретну).

  • Кодування отриманого блоку в послідовність.

DCT використовує той факт, що пікселі у блоці і самі блоки пов'язані між собою(тобто коррелированны), тому відбувається розбиття на частотні фурье компоненти(у результаті виходить quantization matrix - матриця перетворень даних з безперервної в дискретну форму, числа в якій являються величиной амплітуди відповідної частоти), потім алгоритм Quantization розбиває частотні коефіцієнти на певну кількість значень. Encoder(кодувальник) вибирає quantization matrix яка визначає те, як кожен частотний коефіцієнт у блоці буде розбитий(людина чутливіша до дискретності розбиття для малих частот чим для великих). Оскільки в процесі quantization багато коефіцієнтів виходять нульовими те застосовується алгоритм зигзага для отримання довгих послідовностей нулів.