Ogg er eit patentfritt, open standard konteinarformat for digitale multimedia-bitstraumar, definert av Xiph.Org Foundation. Ei Ogg-fil kan innehalda fleire ulike mediafiler, organiserte for effektiv avspeling.

Ogg
Filending
.ogg
MIME-type
application/ogg
Magisk talOggS
Utvikla avXiph.org Foundation
FormattypeKonteinarformat
Konteinar forFLAC, Vorbis, Theora, Speex, etc.
NettstadXiph.org

Filene i ei Ogg konteinarfil kan kodast og dekodast med mange ulike open kjeldekode kodekar for lyd, video og tekst (for til dømes undertitlar). Filer med endinga «.ogg» kan innehalda alle typar Ogg-mediafiler og på grunn av at formatet er lisensfritt har dei ulike Ogg-kodekane vorte nytta i mange forskjellige mediaavspelarar, både gratis og kommersielle. Mange produsentar av bærbare mediaspelarar nyttar òg Ogg-kodekar.

Ogg-filer vert ofte nytta for Vorbis-koda audio-filer, som då vert kalla «Ogg-Vorbis-format», eller «Ogg-Vorbis-filer». Andre populære Xiph-kodekar er videokodeken Theora og talekodeken Speex.

Ogg-formatet, er ein del av eit større Xiph.org Foundation-initiativ for å utvikla opne og gratis standardar for koding og dekoding av multimediainnhald. Xiph har laga ein såkalla referanseimplementering som er kan lastast ned gratis. Siste versjonen er libogg 1.1.3[1].

Filformatet

endre

Ogg-filer inneheld dataeiningar som vert kalla «Ogg pages» (Ogg-sider). Kvar side startar med tekststrengen «OggS», som identifiserer fila som ei Ogg-fil. Kvar side har eit sidehovud som inneheld eit serienummer og eit sidenummer, som identifiserer sida som ei av fleire sider som til saman utgjer ein bitstraum. Ei Ogg-fil kan innehalda feire bitstraumar, som vert avspela saman (audio og video til dømes). Dei individuelle sidene i kvar bitstraum er da merkte slik at dei vert avspela til rett tid. Bitstraumar kan òg verta lagt til andre filer, slit at bitstraumane vert dekoda sekvensielt. Dette vert kalla «chaining» (lenking).

Sidestruktur

endre

Strukturen til sidehovudet i ei Ogg-fil ser slik ut:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| opptaksmønster: Magisk nummer for sidestart  «OggS»          | 0-3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| versjon       | hovudtype   | granule_posisjon               | 4-7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               | 8-11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | bitstraum serienummer        | 12-15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | sidesekvensnummer            | 16-19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | CRC_sjekksum                 | 20-23
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               | sidesegment | segmenttabbel  | 24-27
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ...                                                          | 28-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Opptaksmønster - 32 bit
«Opptaksmønstret» (captur pattern), eller «synkroniseringskoden» er ein «magisk verdi» som vert nytta for synkronisering når Ogg-filer vert lesne og tyda (parced). Alle sidene startar med sekvensen «OggS», på fire Byte. Denne sekvensen kan nyttast for å resynkronisera ein parser når data er delvis tapt eller korrumpert. Sekvensen kan difor nyttast som ein delvis kontroll på at innhalder i file er intakt, før resten av innhaldet er tyda.
Versjon - 8 bits
Dette feltet syner versjonsnumret til Ogg-formatet, noko som er nyttig i samband med framtidige utvidingar. Det er for tida 0.
Hovudtype - 8 bit
Dette er eit 8-bits flagg-felt, som syner kva for sidetype som kjem etterpå. Biten heilt til høgre er bit 0 og har verdien 0x01. Den nest minst signifikante biten, bit 1, har verdien 0x02, bit 3 har verdien 0x04 og så bortetter.
Bit Verdi Flagg Sidetype
0 0x01 Framhald Den fyrste pakken i denne sida er framhald av den førre pakken i den logiske bitstraumen.
1 0x02 BOS Beginning Of Stream (Straumstart). Denne sida er den fyrste sida i den logiske bitstraumen. BOS-flagget må vera sett i den fyrste sida i kvar logisk bitstraum og må ikkje vera sett i noko anna side.
2 0x04 EOS End Of Stream (straumslutt). Denne sida er den siste sida i ein logisk bitstraum. EOR-flagget må vera sett i den siste sida av kvar logisk bitstraum og må ikkje vera sett i noko anna side.
Granule Posisjon - 64 bit
Granule posisjon er eit tidsmerke (ein abstrakt verdi) som vert tillagt meining av kodeken. Det kan til dømes vera antal sampel, talet på rammer, eller ha ei meir kompleks tyding.
Bitstraum serienummer - 32 bit
Dette feltet inneheld eit serienummer som syner at ei side høyrer til ein bestemt logisk bitstraum. Kvar logisk bitstraum i ei fil har ein unik verdi og dette feltet syter for at ei realisering vert i stand til å senda ei side til rett dekodar. Til dømes, når ei typisk vorbis+theora-fil vert dekoda vil audio-bitstraumen verta senna til ein vorbis-dekodar og video-straumen til ein theora-dekodar.
Sidesekvensnummer - 32 bit
Dette feltet er eit monotons aukande felt for kvar logisk bitstraum. I den fyrste sida er det 0, i den andre 1, osb. Dette kan nyttast av ein dekodar å detektera at det manglar sider.
Sjekksum - 32 bit
Dette feltet inneheld ein sjekksum for all data i sida. Dette kan nyttast for å kontrollere at dataen i sida ikkje har vorte endra (korrumpert) etter at sjekksummen vert utrekna. Sider som har feil sjekksum bør ikkje nytast.
Sidesegment - 8 bit
Dette feltet syner talet på segment i sida. Det indikerer òg kor mange byte etterfylgjande segmenttabell inneheld. Ei side kan maksimalt innehalda 255 segment.
Segmenttabell
Segmenttabellen er ein 8-bits vektor med verdiar som indikerer lengda på kvart segment i sida. Antal segment kan hentast frå føregåande sidesegmentfelt. Lengda på kvart segment er mellom 0 og 255 Byte.

Segmenta kan grupperast i pakkar, som er meiningsfylte dataeiningar for ein dekodar. Når segmentlengda er 255 tyder dette at det etterfyljande segmentet høyrer til i same pakke og at det skal skøytast på etter dette segmentet. Når segmentlengda er 0 - 254 tyder det at dette er det siste segmentet i denne pakken. Når pakkelengda er eit multippel av 255 vil det siste segmentet ha lengd 0.

Når den siste pakken held fram i neste side vil lengda til siste segment vera 255 og framhaldsflagget vil vera sett i den etterfyljande sida, for å syna at starten på neste side er framhald av føregåande side.

Ogg-kodekar

endre

Ogg er berre eit konteinarformat; audio- og/eller videomaterialet ligg i Ogg-«konteinarar» inne i Ogg-fila. Desse konteinarane kan innehalda audio og video koda med ymse kodekar. Ei Ogg-fil som inneheld ein film vil (som oftast) innehalda både ein videostraum og ein audiostraum. Desse to straumane vil vera koda med to ulike kodekar, ein videokodek og ein audiokodek.

Historie

endre

I mars 2003 vart to Internet RHC publiserte: RFC 3533 og RFC 3534. RFC 3534 har no (2006) status som «Framlegg til protokollstandard».

Utbreiing

endre

Ogg har enda ikkje same utbreiing som MPEG-standarane (2006), men held på å få ei utbreiing for å koda gratis innhald, som til dømes musikk og multimedia-innhald på Wikipedia. Fleire og fleire digital audio spelarar får òg støtte for Ogg. Ogg-foratet vert òg nytta for mange spel, som til dømes Doom 3, Unreal Tournament 2004 og «Serious Sam: The Second Encounter engines». Dei mest pupulære Ogg Vorbis kodekane har innebygd støtte for mange spelarar og utvidingar er tilgjegeleg for dei fleste andre. Dei andre Ogg-kodekane har enda meir sporadisk støtte, men utvidingar er tilgjengelege for mange av dei.

Ogg-spelarar

endre

Andre patentfrie konteinarformat for multimedia

endre

Kjelder

endre
Referansar
  1. libogg 1.1.3, 27/11 2005.

Bakgrunnsstoff

endre