# Theora

Theora è un codec video sviluppato dalla Xiph.Org Foundation come parte del progetto Ogg. È basato sul codec VP3 della On2 Technologies, ed è progettato per competere con il video MPEG-4 (come XviD e DivX), RealVideo, Windows Media Video, e simili schemi di compressione video a basso bit rate.
Il nome Theora deriva da quello di Theora Jones, una dei protagonisti del telefilm fantascientifico Max Headroom, interpretato da Amanda Pays.

## Descrizione

VP3 è una tecnologia brevettata, ma On2 ha concesso in modo irrevocabile una licenza royalty free perpetua dei brevetti collegati, permettendo al pubblico di usare Theora ed altri codec derivati da VP3 per qualsiasi uso senza dover pagare diritti a On2. L'obiettivo di sviluppare un codec video esente da royalty ha posto delle limitazioni al progetto che non ha potuto utilizzare alcune tecniche di compressione molto efficienti ma brevettate. Ciò nonostante il progetto si pone dal punto di vista delle prestazioni nello stesso segmento (medio alto) del codec video H.264, essendo simile come qualità video a quest'ultimo equiparando sistemi come il DivX e il VC-1. Theora è utilizzato per tutti i video di Wikipedia. Questo codec video è stato implementato nelle nuove versioni di Firefox (3.5) e di Opera.
Nei flussi multimediali Ogg, Theora fornisce il layer video, mentre Vorbis è usato di solito come layer audio (sebbene anche Speex e FLAC possano essere usati per l'audio).

## Cronologia dello sviluppo
### Le origini

VP3 fu originariamente un codec video registrato sotto licenza proprietaria e sviluppato da On2 Technologies. On2 TrueMotion VP3.1 venne introdotto nel maggio 2000 seguito poi dalla seconda release (VP3.2) tre mesi dopo . Più tardi quell'anno, On2 annunciò i plugins VP3 per QuickTime e RealPlayer . Nel maggio 2001, On2 rilasciò una versione beta del suo nuovo codec proprietario VP4 . Nel giugno dello stesso anno, On2 rilasciò inoltre anche un'implementazione del codec VP3 per Microsoft Windows al prezzo di $39.95 per uso personale, e $2,995 per scopi commerciali limitati. Nell'agosto del 2001, On2 Technologies annunciò che era in via di rilascio sotto licenza open source l'algoritmo del loro codec video VP3.2
. Nel settembre 2001 il codice sorgente e la licenza open source vennero pubblicati su www.vp3.com
. La VP3.2 Public License 0.1 garantiva il diritto alla modifica del codice sorgente solo se il lavoro non risultava incompatibile con il supporto allo stesso codec VP3.2

### La scelta dell'open source

Nel marzo 2002, On2 adottò la licenza LGPL per il suo codec VP3 . Nel giugno del 2002 On2 donò VP3 alla Xiph.Org Foundation sotto una licenza opensource BSD con 3 clausole
. On2 garantì inoltre la sua disponibilità a rendere la licenza royalty-free permettendo così a chiunque di usare qualsiasi codec derivato da VP3 senza limitazioni
. Nell'agosto 2002, On2 entrò a far parte di un accordo con la Xiph.Org Foundation per rendere VP3 la base di un nuovo codec video opensource chiamato Theora . On2 dichiarò che Theora avrebbe continuato la linea di sviluppo di VP3. Il 3 ottobre 2002 On2 e Xiph annunciarono il completamento e la disponibilità della prima versione di test di Theora(libtheora) targata come alpha1 , libtheora raggiunse lo stato di alpha2 il 9 giugno 2003 e successivamente quello di alpha3 il 20 marzo 2004 .
Non vi fu una specifica del formato bitstream adottato dal codice del VP3 pubblicato da On2 Technologies. Nel 2003, Mike Melanson creò un abbozzo della descrizione del formato del VP3 bitstream e come veniva effettuato il processo di decodifica a un livello più alto del codice sorgente, con il contributo di On2 e della Xiph.Org Foundation. Le specifiche di Theora adottarano diverse porzioni della descrizione del codec VP3

### La Specifica Theora I

La struttura del bitstream di Theora è rimasta pressoché invariata dal rilascio di nel giugno 2004 di libtheora 1.0alpha3. Questo comporta che qualsiasi video codificato con qualsiasi versione di libtheora dalla versione alpha3 risulterà compatibile con tutte le release successive del codec. Ciò accade anche con tutti quei video codificati con implementazioni della specifica Theora I successive alla definizione definitiva del formato avvenuta nel 2004.Ogni successiva modifica riguarda aggiornamenti minori.
Lo sviluppo di libtheora durò diversi anni nei quali lo stato del progetto passò gli stati di alpha e beta. L'ultima versione alpha fu libtheora 1.0alpha7 pubblicata il 20 giugno 2006. L'anno successivo fu la volta di libtheora 1.0 beta1 (22 settembre 2007). L'ultima versione beta risale al 16 aprile 2008 (libtheora 1.0 beta3). Nel novembre dello stesso anno venne rilasciata al pubblico la release definitiva, libtheora 1.0. Il lavoro del team si focalizzò poi sull miglioramento del codec stesso e delle sue performance (ramo "Thusnelda"), per terminare poi con il rilascio di una seconda release stabile sotto il nome di libtheora 1.1 nel settembre 2009. Questa release acquisì diversi miglioramenti e nuove funzionalità come il supporto alla codifica two-pass, la quale permette di calcolare con molta più precisione la dimensione finale di un video compresso.
Rispetto alla versione 1.0, Theora 1.1 migliora notevolmente quindi sia la qualità che le performance, soprattutto in decodifica. Il merito va alla quantizzazione adattiva e da nuove matrici di quantizzazione, da un nuovo modulo per il rate control e da altri miglioramenti tecnici presenti nelle note di rilascio. Un ulteriore aggiornamento di Theora 1.1 è stato rilasciato il primo ottobre 2009 targato come Theora 1.1.1 e risolve alcuni problemi di compilazione riscontrati con la versione 1.1
Theora è largamente diffuso ormai come formato video in applicazioni opensource, e come codec dei video di Wikipedia. Nonostante ciò, l'adozione di Theora come parte fondamentale della codifica video in HTML5 rimane ancora in discussione.

### Cronologia versioni

Qui di seguito un riepilogo delle versioni rilasciate:

### Versione 1.0

* Theora Alpha 1 (libtheora-1.0alpha1) - 3 ottobre 2002
* Theora Alpha 2 (libtheora-1.0alpha2) - 9 giugno 2003
* Theora Alpha 3 (libtheora-1.0alpha3) - 20 marzo 2004: questa è stata la prima versione dell'encoder a generare file che rispettano le specifiche;
* Theora Alpha 4 (libtheora-1.0alpha4) - 15 dicembre 2004
* Theora Alpha 5 (libtheora-1.0alpha5) - 20 agosto 2005
* Theora Alpha 6 (libtheora-1.0alpha6) - 30 maggio 2006
* Theora Alpha 7 (libtheora-1.0alpha7) - 20 giugno 2006
* Theora Alpha 8 (libtheora-1.0alpha8) - 18 settembre 2007: questa è stata la prima versione ad avere il decoder con supporto completo al bitstream;
* Theora Beta 1 (libtheora-1.0beta1) - 22 settembre 2007
* Theora Beta 2 (libtheora-1.0beta2) - 12 ottobre 2007
* Theora Beta 3 (libtheora-1.0beta3) - 16 aprile 2008
* Theora 1.0 (libtheora-1.0) - 3 novembre 2008

### Versione 1.1 (ramo Thusnelda)

* Thusnelda Alpha 1 (libtheora-1.1alpha1) - 27 marzo 2009
* Thusnelda Alpha 2 (libtheora-1.1alpha2) - 26 maggio 2009
* Thusnelda Beta 1 (libtheora-1.1beta1) - 5 agosto 2009
* Thusnelda Beta 2 (libtheora-1.1beta2) - 12 agosto 2009
* Thusnelda Beta 3 (libtheora-1.1beta3) - 22 agosto 2009
* Theora 1.1 (libtheora-1.1) - 24 settembre 2009
* Theora 1.1.1 (libtheora-1.1.1) - 1º ottobre 2009

### Versione 1.2 (ramo Ptalarbvorm)

Ha raggiunto lo stadio di prerelease nel maggio 2010.

## Compatibilità e supporto
### Supporto nativo nei browser web

Come originariamente richiesto da HTML5, questi browser supportano Theora quando incluso nel tag video:
* Mozilla Firefox 3.5 (libtheora 1.0), 3.6 (libtheora 1.1.1) e versioni successive
* Google Chrome 3.0.182.2 e versioni successive. Supporto rimosso nella versione 120.
* SeaMonkey 2.0 e versioni successive
* Opera 9.5 experimental video builds, Opera 10.50 e versioni successive
* Versioni future di Konqueror

### Plugin per i browser

* Annodex plugin da OggPlay
* Cortado, un applet basata su Java
** Itheora, un wrapper PHP per Cortado
* Mv Embed un wrapper HTML5 per il tag video per numerose varietà di plugin.
* VLC media player plugin per IE e Firefox

### Supporto ai framework multimediali

* DirectShow con l'uso dei filtri DirectShow
* GStreamer supportato con il Theora module, è compatibile con le applicazioni basate su GStreamer come Totem e Songbird
* Phonon
* QuickTime con l'uso di componenti Xiph QuickTime

### Supporto alle applicazioni

* FFmpeg
* Helix Player
* Miro Media Player (conosciuto come Democracy Player)
* MPlayer
* Songbird
* VLC (supporto nativo)
* xine e tutti i player derivati da libxine come Kaffeine