Theora-videon editointi käyttäen komentorivin työkaluja, kuten Oggz Tools tai Ogg Video Tools, ei vaadi tietoa Theoran toiminnan tarkoista yksityiskohdista. Kuitenkin nämä komentorivin työkalut prosessoivat Theoran tiedostoja hyvin matalalla tasolla. Joitain sivuvaikutuksia ilmenee, näitä sivuvaikutuksia ei voida selitää ilman Theora-formaatin yksityiskohtien käsittelyä.
Jos uskot, että voit elää pienten editoinnin aiheuttamien epätarkkuuksien kanssa, voit hyvin jättää tämän luvun väliin.
Theora-videon anatomia
Videotiedosto sisältää normaalisti videostriimin ja audiostriimin. Molempien striimien varastointi yhteen tiedostoon vaatii säilytysformaattia (container format). Säilytysformaatti Theora-videota varten on Ogg, joka pitää sisällään Theora-videostriimin ja yhden tai useampia Vorbis-audiostriimejä. Audio ja videostriimit tallennetaan välikkäin. Tämä merkitsee, että jokainen striimi on segmentoitu muutamaan datablokkiin, jotka ovat lähes samaa kokoa. Näitä blokkeja kutsutaan sivuiksi (page).
Jokaisessa sivussa on aikaleima, joka antaa informaatiota sivun sijoituksesta striimin sisällä.
Video- ja audiostriimit ovat toistensa lomassa siten, että molempien striimien sivut on liitetty yhteen nousevassa järjestyksessä aikaleimojensa mukaan.
Demultipleksaus
Teknisesti on helppoa jakaa videotiedosto video- ja audiostriimeihin. Tämä johtuu siitä seikasta, että kaksi striimiä voidaan erottaa keräämällä video- ja audiosivut erillisiin tiedostoihin. Videotiedoston striimeihin jakavaa prosessia kutsutaan demultipleksaukseksi.
Kaikki tarpeellinen toiston vaatima tieto on kerätty striimien sisään, ilman että Ogg-säiliö lisää mitään tietoa. Jokainen tiedostoista itsessään on standardeihin sopiva Ogg-säilötty striimi ja sitä voi lukea mikä tahansa Theora/Vorbis-yhteensopiva video- tai audiosoitin.
Sivun aikaleimat
Kuten aiemmin on mainittu, striimit tallennetaan jaettuna useiksi sivuiksi. Sivulla on otsikko, joka pitää metadataa, joka kuvaa tämän osan video/audiostriimista. Otsikkoon sisältyy ajastusinformaatio, ainutlaatuinen striimintunnistusnumero, sivun numero ja jotain muuta tietoa.
Ogg-standardien mukaan ajastustieto jokaiselle sivulle annetaan jyväsijainnilla, 64-bittisellä arvolla, joka on otsikossa. Kuinka jyväsijainti liittyy yhteen todellisen aikasijainnin kanssa on striimin määrittelemää, se voi olla esimerkiksi määrä millisekunteja videon alusta. Tästä syystä Ogg-tiedostoja käsittelevän ohjelman pitää sisältää jyväsijainnin tulkitsija, jotta se voi käsitellä tiedostoa oikein. Tämän tulkitsijan pitää olla tietoinen koodeksita ja striimispesifistä informaatiosta, jotta se voi tuottaa ajastustietoa, jota voidaan vertailla eri striimien välillä.
Ogg-standardi tarkentaa että kaikki sivut Ogg-tiedostossa täytyy tallentaa nousevassa aikajärjestyksessä, vaikka se ei määrittele jyväsijaintien tulkintaa. Joten mikä tahansa työkalu, joka leikkaa tai yhdistää striimejä tarvitsee toimivia jyväsijaintitulkkeja jokaista sisällettyä striimiä varten, jotta sivut voidaan lomittaa oikein.
Koodekkidatan koteloiminen
Sivut ovat miltei samaa kokoa oletusasetuksena (noin 4096 tavua). Kuitenkin audio- ja videopaketit, jotka tietty koodekki luo, eivät yleensä sovi täsmälleen sivulle. Audiopaketit ovat yleensä paljon pienempiä. Videopaketit voivat olla monen kokoisia, pienempiä tai suurempia, riippuen eri tekijöistä.
Video- ja audiokoodekkien tuottama data koteloidaan ensin Ogg-paketiksi. nämä paketit sijoitetaan sitten Ogg-sivuille. Paketti voidaan tarpeen mukaan joko jakaa useammalle sivulle, tai yhdistää muiden pakettien kanssa, jotta muuten osittain tyhjä paketti täyttyy.
Theoran videodatan koteloiminen
Koodaajan kehittämä Theoran videodata sisältää kahdenlaisia Ogg-paketteja: niin sanottuja avainkuvaruutuja (kutsutaan usein I-Frameksi), jotka ovat kokonaisia kuvia, ja P-Frameja, jotka kantavat ainoastaan viimeisimmän ja nykyisen kuvan eroja.
Jotta annettu kuvaruutu voidaan näyttää annettuna aikana, dekooderin täytyy tietää edellinen avainkuvaruutu ja sen täytyy dekoodata kaikki kuvaruudut (mukaanlukien avainkuvaruutu) annetun kuvaruudun tosiasialliseen aikasijaintiin asti.
Jotta videota voi dekoodata, dekooderi tarvitsee tietoa striimistä itsestään, esimerkiksi videon kuvaruutujen koosta. Tämä informaatio on sijoitettu otsikkopaketteihin striimin alkuun.
Vorbis-audiodatan koteloiminen
Enkooderin luoma Vorbis-audiodata kantaa tietyn määrän audionäytteitä. Näyte on audiodatan yksikkö. Näytteiden määrä Ogg-paketissa on määrätty ja se voi vaihdella vain kahden mahdollisen koon välillä, kuten striimin otsikossa on määritelty.
Videodatan tapaan audiodatapaketit ovat myös riippuvaisia toisistaan. Jotta yksi audiopaketti voidaan dekoodata, edellistä pakettia tarvitaan.
Audion dekoodaaja riippuu striimin parametreistä, kuten näytetaajuudesta, bittitaajuudesta, jne. nämä on tallennettu striimin otsikon paketteihin striimin alussa.
Ogg-kehikko
Kuten aiemmin sanottiin, videostriimi ei voi alkaa satunnaisesta ajankohdasta, sillä siinä on avainkuvaruutuja (I-Frame) ja delta-kuvaruutuja (P-Frame). Lisäksi audio on tallennettu paketeihin, joille on annettu ajoitusjyvät.
Jotta synkronisaatio ja oikea aloituskohta on varmistettu, Ogg-kehikkosivut kantavat tietoa jokaisen striimin aloituspaikasta. Dekoodaaja, joka lukee Ogg-kehikon tietoa, voi sitten etsiä oikean audio- ja videokohdan ja alkaa soittamaan tästä kohdasta.