Ogg je projekt, který si klade za cíl vytvořit svobodný software pro digitální multimédia. Datový formát Ogg propagovaný nadací Xiph.org byl vytvořen jako výchozí materiál větší iniciativy, která si klade za cíl vyvinout komponenty pro kódování a dekódování multimediálního obsahu, přičemž tyto komponenty budou svobodně dostupné a svobodně reimplementovatelné v softwaru (BSD licence). Formát Ogg je definován v RFC 3533 a jeho MIME typ application/ogg v RFC 3534. Různé části projektu jsou zamýšleny jako alternativy k nesvobodným standardům, jakými jsou formáty MPEG, Real, QuickTime, Windows Media Audio; formáty RIFFWAV a AVI.

Ogg
Přípona souboru.ogg, .opus, .ogv, .oga, .ogx, .spx
Typ internetového médiavideo/ogg, audio/ogg, application/ogg
Magické čísloOggS
TvůrceXiph.Org Foundation
Kontejner proVorbis, Opus, Theora, Speex, FLAC, Dirac, Daala a další.
Otevřený formátano

Ogg jako formát

editovat

Datový formát Ogg propagovaný nadací Xiph.org byl vytvořen jako výchozí materiál větší iniciativy, která si klade za cíl vyvinout komponenty pro kódování a dekódování multimediálního obsahu, přičemž tyto komponenty budou svobodně dostupné a svobodně reimplementovatelné v softwaru (BSD licence). Formát Ogg je definován v RFC 3533 a jeho MIME typ application/ogg v RFC 3534.

Formát se skládá z kusů dat nazývajících se stránka ogg. Každá stránka začíná řetězcem „OggS“ k identifikaci souboru jako Ogg formátu. Sériové číslo a číslo stránky v záhlaví stránky identifikuje každou stránku jako část série stránek tvořících proud bitů (bitstream). Vícenásobný bitstreams může být multiplexní v souboru kde stránky z každého bitstreamu jsou seřazené podle doby hledání obsažených dat. Bitstream může být také připojený k existujícím souborům, proces známý jako spojování, způsobuje, že bitstreamy jsou dekódovány po sekvencích. Knihovna libogg, spadající pod BSD licenci, je k dispozici ke kódování a dekódování dat z Ogg streamů. Nezávislé implementace Ogg jsou užívány v několika projektech jako RealPlayer a sada DirectShow filtrů.

Struktura stránky

editovat

Následující je rozložení pole z hlavičky Ogg stránky:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| zachytávací_zdroj: kouzelné číslo pro začátek stránky "OggS"  | 0-3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| verze         | typ_hlavičky  | pozice_zrna                   | 4-7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               | 8-11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | sériové_číslo bitstreamu      | 12-15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | číslo_sekvence_stránky        | 16-19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | CRC_kontrolní_součet          | 20-23
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | segmenty_str.|segment_tabulky | 24-27
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ...                                                           | 28-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Zachytávací zdroj – 32bitové
Zachytávací vzor nebo synchronizační kód je kouzelné číslo užívané pro zajišťování synchronizace při rozebírání Ogg souborů. Každá stránka začíná čtyř bajtovou sekvencí 'OggS'. Toto napomáhá při synchronizaci kontrolujícího programu v případech kde data byla ztracena nebo porušena a je to rozumná kontrola před zahájením rozboru stránkové struktury.
Verze – 8bitové
Toto pole ukazuje verzi bitstreamu Ogg formátu k povolení pro budoucí rozšíření. V současné době je nastaveno na 0.
Hlavičkový typ – 8bitové
Je to 8bitové pole příznaků, které ukazují typ stránky která následuje. Pravý krajní nebo nejnižší platný bit je považovaný za bit 0 s hodnotou 0x01 a další nejnižší platná číslice je bit 1 s hodnotou 0x02. Třetí je bit 2 s hodnotou 0x04, a tak dále.
Bit Hodnota Příznak Typ stránky
0 0x01 Pokračující První paket na této stránce je pokračováním předchozího paketu v logickém bitstreamu.
1 0x02 BOS Začátek proudu (Beginning Of Stream). Tato stránka je první stránka logického bitstreamu. BOS příznak musí být nastaven na první stránku každého logického bitstreamu a nesmí být nastaven na jinou stránku.
2 0x04 EOS Konec proudu (End Of Stream). Tato stránka je poslední stránka v logickém bitstreamu. EOS příznak musí být nastaven na konec stránky každého logického bitstreamu a nesmí být nastaven na jinou stránku.
Pozice zrna – 64bitové
Pozice zrna je časová značka v Ogg souborech. Je to abstraktní hodnota, jejíž význam je určen kodekem. To může být například součet počtu vzorků, počet rámů nebo větší komplexní schéma.
Sériové číslo bitstreamu – 32bitové
Toto pole je sériové číslo, které identifikuje stránku náležící částečnému logickému bitstreamu. Každý logický bitstream v souboru má jedinečnou hodnotu a toto pole povoluje implementace k doručení stránek příslušnému dekodéru. V typickém Vorbis+Theora souboru bude jeden proud audio (Vorbis), a další bude video (Theora).
Stránkové pořadové číslo – 32bitové
Toto pole je monotonně rostoucí pole pro každý logický bitstream. První stránka je 0, druhá 1, atd. Dovoluje implementacím zjistit, kdy byla data ztracena.
Kontrolní součet – 32bitové
Toto pole poskytuje kontrolní součet dat na celé stránce, pole nastaveno na 0 po vykonaném kontrolním součtu. To povoluje ověření, že data nebyla porušena od vytvoření. Stránky, kterým selže kontrolní součet by měly být vyřazené.
Segmenty stránky – 8bitové
Toto pole ukazuje počet segmentů, které existují na této stránce. To také ukazuje kolik bajtů je v segmentu tabulky, které následují toto pole. Tam může být maximálně 255 částí na každé stránce.
Tabulka segmentů
Tabulka segmentů je 8bitový vektor hodnot ukazující délku každého segmentů uvnitř těla stránky. Počet segmentů je stanovený z předcházejícího pole segmentů stránky. Každý segment má délku mezi 0 a 255 bajty.

Segmenty poskytují způsob jak seskupit segmenty do paketů, které jsou smysluplnými jednotkami dat pro dekodér. Když délka segmentu ukazuje na 255, to ukazuje, že následující segment je zřetězený do jednoho a je částí stejného paketu. Když délka segmentu je 0–254, ukazuje to, že tento segment je konečný segment v tomto paketu. Kde délka paketu je násobek 255, konečná segment bude délky 0. Kde konečný paket pokračuje na další stránce, konečná hodnota segmentu bude 255 a pokračující příznak bude nastaven na následující stránku aby ukazovala, že začátek nové stránky je pokračováním poslední stránky.

Výchozí prací byl bezeztrátový kodek Squish. Dnes je základem ztrátový zvukový formát Vorbis (16–256 Kb/s na kanál). Dalšími jsou video formát Theora, který vychází z komerčního kodeku VP3 firmy On2 Technologies, zvukový kodek pro mluvenou řeč Speex (8–32 Kb/s na kanál) a bezeztrátový zvukový kodek pro kvalitní přenos zvuku FLAC. Writ je kodek pro vkládání titulků.

Laikové často předpokládají, že název Ogg je odvozen od postavy stařenky Oggové z fantasy série Terryho Pratchetta Zeměplocha. Ve skutečnosti jde o slangový termín pocházející z počítačové hry Netrek. Původně znamenal sebevražedný útok, později získal širší význam vrhat se do něčeho po hlavě –důrazně a možná bez rozmyslu, zejména bez ohledu na možné vyčerpání zdrojů: tak musel být projekt vnímán vzhledem k jeho hardwarovým požadavkům v době vzniku v roce 1994.

Ogg kodeky

editovat

Ogg je jen kontejnerový formát. Vlastní audio nebo video zakódované kodekem bude uložené uvnitř Ogg kontejneru. Ogg kontejnery mohou obsahovat streamy zakódované s vícenásobnými kodeky, například, audio nebo video soubor může obsahovat data zakódovaná audio kodekem i video kodekem. Formát Ogg může uložit audio a video v různých formátech (jako MPEG-4 , MP3 a jiné), ale obvykle je Ogg používaný s následujícími:

  • Audio formáty
    • ztrátová komprese
      • Vorbis: hlavní zvuková data ve střední až vysoké úrovni proměnného bitratu (~16 500 kbit/s/kanál)
      • Opus: zvukový formát pro hudbu i řeč
      • Speex: hlasová data v nízkém bitratu (~8 32 kbit/s/kanál)
    • bezeztrátová komprese
      • FLAC: pro archivní a vysoce přesná zvuková data
  • Textový kodek
    • Writ: textový kodek k vkládání titulků nebo popisků
    • CMML: textový/aplikační kodek pro časová metadata, popisování, a formátování
  • Video formáty
    • Theora: formát, který byl vyvinut nadací Xiph.org jako součást projektu Ogg. Theora by měla konkurovat formátu MPEG-4 a kodekům RealVideo, Windows Media Video.
    • Tarkin: experimentální kodek využívající Diskrétní vlnkovou transformaci v třech dimenzích (šířka, výška a čas). To bylo dané na od února 2000, příchodem kodeku Theora jako hlavní ohnisko zakódování videa.
    • Dirac: experimentální formát vyvinutý BBC jako základ nového kodeku pro přenos videa přes internet. Projekt Schrödinger chce poskytovat přenosné knihovny, napsané v C obsažené v kodeku Dirac. To také dovoluje vložit Dirac dovnitř kontejnerového formátu Ogg.
    • OggUVS: kodek pro ukládání nekomprimovaného videa.
    • Daala: videoformát ve vývoji.
  • Titulkové struktury
    • Annodex: Volná a opensource sada standardů od CSIRO k poznámkování a indexování síťových medií.

Přípony souborů

editovat

Doporučené přípony ogg souborů podle Xiph.org:[1]

Přípona Obsah
.ogg Vorbis
.opus Opus
.spx Speex
.oga jiný zvukový formát
.ogv video
.ogx multiplex jakýchkoli ogg formátů

Reference

editovat
  1. MIME Types and File Extensions [online]. XiphWiki [cit. 2019-02-06]. Dostupné online. (anglicky) 

Externí odkazy

editovat