H.264

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

H.264/MPEG-4 AVC — міжнародний стандарт відеокомпресії. Розроблений групою фахівців організації ITU (Study Group 16, фахівці з відео-кодування) під назвою H.26L. У 2001 році група ITU об'єдналась зі MPEG-Visual і розробку стандарту було продовжено в спільній команді Joint Video Team (JVT). Метою проекту було розробити методи стиснення відеоданих, що гарантували б, у порівнянні з існуючими, щонайменше вдвічі менший бітрейт зі збереженням рівня якості як для мобільних приладів, так і для телебачення. У 2003 році обидві організації затвердили стандарт. Назва стандарту ITU: H.264. Стандарт ISO/IEC має назву MPEG-4/AVC (Advanced Video Coding) і є десятою частиною стандарту MPEG-4 (MPEG-4/Part 10, ISO/IEC 14496-10).

З прийняттям розширення Scalable Video Coding (SVC) до стандарту було додано три профілі, що відповідають базовим, з доданням можливості включати потоки з нижчою роздільною здатністю.

  • Scalable Baseline Profile
  • Scalable High Profile
  • Scalable High Intra Profile

Додання розширення Multiview Video Coding (MVC) принесло ще два додаткових профілі:

  • Stereo High Profile — розрахований на стереоскопічне 3D-відео (два зображення).
  • Multiview High Profile — підтримує два або кілька зображень (каналів) у потоці з використанням як міжкадрового, так і міжканального стиснення, але не підтримує деяких можливостей MVC.

Історія[ред. | ред. код]

На початку 1998 року "Експертна група з кодування відео" (Video Coding Experts Group) (VCEG – ITU-T SG16 Q.6) оголосила конкурс пропозицій щодо проєкту під назвою H.26L, метою якого було збільшити вдвічі ефективність кодування (що означає зменшення вдвічі бітрейту, необхідного для даного рівня якості) порівняно з будь-яким іншим стандартом відеокодування. VCEG очолив Гаррі Салліван (Microsoft, попередньо PictureTel, США). Перший проєкт дизайну для цього нового стандарту було прийнято в серпні 1999 року. У 2000 році співголовою VCEG став Thomas Wiegand (Heinrich Hertz Institute, Німеччина).

В грудні 2001 року VCEG і Moving Picture Experts Group (MPEG – ISO/IEC JTC 1/SC 29/WG 11) з метою доопрацювати стандарт кодування відео створили Joint Video Team (JVT).[1] Офіційне затвердження специфікації відбулося в березні 2003 року. JVT очолював Gary Sullivan, Thomas Wiegand, і Ajay Luthra (Motorola, США: згодом Arris, США). У червні 2004 року проєкт розширення точності відтворення (FRExt) було завершено. Від січня 2005 до листопада 2007 року JVT працював над розширенням стандарту H.264/AVC в напрямку масштабованості, за допомогою підтримки Annex (G), і це розширення має назву Scalable Video Coding (SVC). До адміністративної команди JVT долучився Jens-Rainer Ohm (Університет Аахена, Німеччина). Від липня 2006 року до листопада 2009 року JVT працювала над Multiview Video Coding (MVC), додатком до H.264/AVC для об’ємного телебачення і тривимірного телебачення. Ця робота передбачала створення двох нових розділів стандарту: "Multiview High Profile" і "Stereo High Profile".

Загальний принцип[ред. | ред. код]

Енкодер H.264 виконує процеси прогнозування, перетворення і кодування для створення стисненого потоку біт у форматі H.264. Декодер H.264 виконує відповідний процес декодування, зворотного перетворення і реконструкції для відтворення відеопослідовності.

Процес кодування[ред. | ред. код]

Прогнозування[ред. | ред. код]

Енкодер обраховує кадр за частинами, які називаються макроблоками (16x16 пікселів зображення). Він отримує дані для прогнозування макроблоків на основі попередньо закодованих даних, або на основі поточного кадру (інтрапрогнозування), або на основі інших кадрів, які вже було закодовано і передано (інтерпрогнозування). Енкодер виділяє прогнозовану інформацію із поточного макроблоку і утворює залишок (корисну різницю). Пошук підхожого інтерпрогнозування зазвичай описують як оцінку руху[en], а виділення інтерпрогнозування із поточного макроблоку як компенсацію руху.

Методи прогнозування, які використовуються в стандарті H.264, є гнучкішими, ніж ті, що використовувались у попередніх стандартах, що дозволяє робити точне передбачення, а як наслідок — ефективніше стиснення. Інтрапрогнозування використовує розміри блоків 16x16 і 4x4 для того, щоб передбачати макроблок із навколишніх, попередно закодованих пікселів в рамках одного і того ж кадру.

Інтерпрогнозування використовує набір з різних за розміром блоків (від 16x16 до 4x4) для прогнозування пікселів у поточному кадрі зі схожих ділянок попередньо закодованих кадрів.

Перетворення і квантування[ред. | ред. код]

Блок виділених зразків перетворюється за допомогою цілочисельного перетворення розмірністю 4x4 або 8x8, що є приблизно подібною формою дискретного косинусного перетворення (ДКП). Результатом перетворення є набір коефіцієнтів, кожен з яких є зваженим значенням для стандартного базисного зразка. При поєднанні зважений базисний зразок відтворює блок виділених зразків.

Результат перетворення, блок коефіцієнтів перетворення, квантується, тобто кожен коефіцієнт ділиться на ціле значення. Квантування знижує точність коефіцієнтів перетворення відповідно до значення параметру квантування (QP). Зазвичай, результатом є блок, в якому більшість коефіцієнтів дорівнюють нулю, із декількома не нульовими коефіцієнтами. Великі значення QP означатимуть, що більше коефіцієнтів будуть мати значення нуль, що призведе до більшого стиснення, і, відповідно, нижчої якості зображення. Мале значення параметру QP означатиме, що після квантування залишиться більше не нульових коефіцієнтів, що дасть кращу якість декодованого зображення, але малу ефективність стискання.

Кодування бітового потоку[ред. | ред. код]

Результатом процесу відеокодування є набір значень, які повинні кодуватися для того, щоб утворити стиснений бітовий потік. Цими даними є:

  • квантовані коефіцієнти перетворення
  • інформація, необхідна декодеру для відтворення прогнозування
  • інформація про структуру стиснених даних і засоби стиснення, що використовувалися під час кодування
  • інформація про повну відеопослідовність.

Ці значення і параметри (синтаксичні елементи) перетворюються на двійкові коди із використанням кодування змінної довжини і/або арифметичного кодування. Кожен з цих методів кодування дозволяє отримати ефективне, компактне двійкове подання інформації. Закодований бітовий потік можна зберігати і/або передавати.

Процес декодування[ред. | ред. код]

Декодування бітового потоку[ред. | ред. код]

Відеодекодер отримує стиснений бітовий потік H.264, розбирає всі синтаксичні елементи і декодує інформацію, описану вище (квантовані коефіцієнти трансформації, інформацію прогнозування тощо). Ця інформація використовується для зворотного процесу кодування і відтворення послідовності відеозображень.

Масштабування і зворотне перетворення[ред. | ред. код]

Коефіцієнти перетворення маштабовано. Кожен коефіцієнт помножено на ціле число, для збереження його початкової розмірності. При зворотному перетворенні поєднуються стандартні базисні зразки, зваженими за допомогою перемасштабованих коефіцієнтів, щоб відновити кожен блок із залишкових даних. Ці блоки поєднуються разом, щоб сформувати макроблок із залишку.

Реконструкція[ред. | ред. код]

Для кожного макроблоку декодер формує прогнозування, ідентичне тому, що було створено енкодером. Декодер додає дані прогнозування до декодованого залишку для відтворення декодованого макроблоку, який далі можна відобразити як частину відеокадру.

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]

Примітки[ред. | ред. код]