Ogg Media

Ogg Media (OGM) - формат, контейнер для зберігання потоків даних, таких як відео, аудіо, і субтитри. Забезпечує необхідні кошти для надійного транспортування файлу, контролю цілісності файлу, мінімізації кількості переміщень по файлу під час відтворення декількох потоків (чергування).

Контейнер Ogg Media - стороння модифікація контейнера Ogg, розрахованого на вільні кодеки, підтримувані Xiph.Org, зроблена для підтримки невільних кодеків, звичайно використовуваних з контейнером AVI, за допомогою DirectShow. Ogg Media була створена в 2002 році незалежно від Xiph.Org, яка в 2004 році опублікувала прохання прибрати вводить в оману слово "Ogg" з назви контейнера. [1]


1. Формат OGM

Кожен потік даних в термінах ogg називається логічний потік ( англ. logical bitstream ), Кілька логічних потоків об'єднуються у фізичний потік ( англ. physical bitstream ).

Існують наступні методи об'єднання логічних потоків в один фізичний:

  • послідовне об'єднання ( англ. chaining ), Всі сторінки першого логічного потоку слідують до сторінок другого логічного потоку
  • угруповання ( англ. grouping ), Сторінки потоків перемішуються для забезпечення можливості одночасно читати дані з різних потоків без істотної зміни зміщення у файлі (для RIFF -контейнера таке положення потоків називається чергуванням).

Кожний логічний потік розбивається на пакети ( англ. packets ). Формат пакета визначається використовуваним кодеком. Пакети діляться на сегменти ( англ. segments ), Розмір кожного з сегментів не перевищує 255 байт. Сегменти об'єднуються в сторінки ( англ. pages ), Кожна сторінка містить в собі не більше 255 сегментів (загальний розмір даних в одній сторінці ніколи не перевищує 64 Кб). Пакет може міститися більше ніж в одній сторінці (тобто бути в розмірі більше 64 Кб), в цьому випадку для сторінки містить продовження пакету виставляється спеціальний прапор "продовження пакету" ( англ. continued_packet_flag ).


1.1. Структура пакета

зміщення ( hex) розмір тип назва опис
0x0 4 FOURCC capture_pattern завжди дорівнює 'OggS', 0x4f 0x67 0x67 0x53
0x4 1 BYTE stream_structure_version версія структури, повинна дорівнювати 0
0x5 1 бітове поле header_type_flag 0x1 continued_packet_flag сторінка містить продовження пакету
0x2 begin_of_stream сторінка є першою сторінкою потоку
0x4 end_of_stream сторінка є останньою сторінкою потоку
0x6 8 INT64 absolute_granule_position номер останнього кадру або семпла (відліку), закодованого цілком в цьому пакеті. Фрейми, не помістилися в пакет цілком не враховуються, якщо немає фреймів, помістилися в пакет цілком, вказується величина -1
0xE 4 INT32 page_serial_number номер логічного потоку (в рамках заданого фізичного потоку), до якого належить вміст сторінки. Повинно бути унікальним в рамках одного фізичного потоку.
0x12 4 UINT32 Page_checksum CRC32 -код сторінки
0x1A 1 BYTE page_segments кількість сегментів в сторінці. Число [0-255], числа 0 і 255 припустимі (при числі 0 сторінка не містить сегментів (і інформації) і повинна бути просто пропущена).
0x1B page_segments BYTE [] segment_table таблиця розмірів сегментів у сторінці. Кількість записів у таблиці визначається page_segment, у разі нульового значення, segment_table відсутня

Суттєвою особливістю формату є відсутність загального заголовка для фізичного потоку. Наприклад, бінарне об'єднання двох файлів буде давати робочий файл. У OGM-файлах відсутня індекс у відеопотоку (що збільшує стійкість формату при передачі даних, але утрудняє відтворення).

Кожна сторінка містить CRC -код для перевірки правильності даних при передачі і відтворенні.


Примітки

  1. OGM - www.xiph.org / container / ogm.html


Перегляд цього шаблону Медіаконтейнера
Відео / аудіо
Аудіо
Графічні формати ( стиск)
Растрові

Без втрат: BMP FPX GIF ICO ILBM JBIG PCX PNG PNM PSD Raw TGA WBMP XCF Включаючи стиснення з втратами: EXR ICER JBIG2 JPEG / JP2 / JPEG-LS JPEG XR (HD Photo) PGF (англ.) TIFF WebP Анімаційні: APNG GIF MNG

Векторні

AI CDR EMF EPS PS SVG WMF XPS Анімаційні: SVG SWF 3D: 3DS VRML X3D

Комплексні
Перегляд цього шаблону Медіаконтейнера
Відео / аудіо
Аудіо
Графічні формати ( стиск)
Растрові

Без втрат: BMP FPX GIF ICO ILBM JBIG PCX PNG PNM PSD Raw TGA WBMP XCF Включаючи стиснення з втратами: EXR ICER JBIG2 JPEG / JP2 / JPEG-LS JPEG XR (HD Photo) PGF (англ.) TIFF WebP Анімаційні: APNG GIF MNG

Векторні

AI CDR EMF EPS PS SVG WMF XPS Анімаційні: SVG SWF 3D: 3DS VRML X3D

Комплексні