Arquitectura
VP8
Como a maior parte das tecnologias de compressão modernas, o VP8 é baseado na decomposição de tramas em sub-blocos de pixéis, fazendo uma predição destes através dos blocos anteriormente construídos e ajustadas através da DCT. Estes sistemas reduzem o bitrate explorando a correlação temporal e espacial dos sinais de vídeo. É mais eficiente especificar a localização de uma porção visualmente semelhante de uma trama anterior do que especificar o próprio valor de um pixel.
Ao contrário dos antigos formatos MPEG, o VP8 indica os valores exactos dos pixéis reconstruídos. O algoritmo usa exclusivamente operação com inteiro de precessão fixa. Isto facilita a verificação da exactidão da implementação de um descodificador, bem como evita as incoerências visuais difíceis de prever entre tais implementações. [3]
Descrição do formato

Figura 2 – Esquema dos elementos a ter em consideração na reconstrução de um bloco.[4]
O VP8 funciona exclusivamente com o formato de imagens 8-bits YUV 4:2:0. Neste formato a crominância, com um bloco de pixéis 2x2, são representadas 4 amostras de luminância. Existe ainda espaço reservado no cabeçalho para um segundo formato de cores. Como é habitual, os pixéis são uma grande matriz de bytes, armazenados de baixo para cima, da esquerda para a direita. Para um bitrate baixo, o sistema pode decidir reduzir a resolução, para aumentar a eficiência da compressão. Antes da saída o sinal sofre um aumento de escala na sua reconstrução.
Internamente, o VP8 decompõe cada trama de saída numa matriz de macroblocos. Estes são uma matriz de pixéis, com Y de dimensões 16x16 e U e V com dimensões de 8x8. Estes macroblocos são futuramente decompostos em sub-blocos 4x4. Os pixéis são sempre tratados, pelo menos, ao nível dos sub-blocos, que são as estrutures mais básicas a ser usadas no algoritmo do VP8. A DCT é usada para os sub-blocos de 16Y, 4U e 4V. É ainda usada uma outra transformada de Fourier, a WHT (Walsh–Hadamard Transform) para codificar a matriz 4x4 comprimindo a média da intensidade dos 16 sub-blocos Y dos macroblocos, que não é usada em MPEG. A ilustração da reconstrução de blocos pode ser verificada na imagem 2. [3]
Tipos de tramas comprimidas

Figura 3 – Selecção dos modos de predição, por parte do codificador.[5]
Apenas existem dois tipos de tramas no VP8. As tramas intra (I) são descodificadas sem ter como referência outras tramas da sequência. Estas são as tramas que permitem ter pontos de acesso aleatório, na reprodução do vídeo. As tramas inter (P) são descodificadas com referência a tramas anteriores, incluindo a última intra. Uma descodificação correcta desta trama depende da descodificação correcção de todas as tramas que usa como referência. Consequentemente o algoritmo de descodificação não é tolerante a tramas perdidas ou corruptas. Neste ambiente a descodificação correcta não seria possível até a recepção de uma trama intra, pois é independente.[23]
Ao contrário do MPEG, não existe predição bidireccional. Assim não existem tramas que usem como referencia uma trama temporalmente futura a esta. Estas são conhecidas como B, no MPEG. Por outro lado, o VP8 aumenta estas noções com a introdução de tramas de predição alternativas, com o nome tramas golden e altref (alternative reference). Os blocos inter podem ser preditos usando os blocos da trama imediatamente anterior, bem como na trama golden ou altref mais recente. Estas alternativas podem ser utilizadas para superar a intolerância as tramas perdidas. A escolha dos modos de predição é ilustrada na figura 3. [3]
Descrição do formato dos dados comprimidos
A entrada de um descodificador VP8 édada por uma sequência de tramas comprimidas, em que a sua ordem é correspondente à ordem temporal. Problemas como a duração das tramas, o correspondente áudio e a sincronização são resolvidos pelo ambiente de reprodução e irrelevantes à descodificação.
A primeira trama a ser descomprimida é intra, que pode ser seguida por um número de tramas inter. A reconstrução correcta destas depende de todas as anteriores, até a próxima intra recomeçar o processo. A separação em partições dos dados da predição e coeficientes permite uma maior flexibilidade na implementação da descompressão, pois pode ser armazenada informação para toda a trama e depois ser descodificada, transformada e adicionado o sinal residual a toda a trama. [4]
Descrição do processo de descodificação
O descodificador do VP8 precisa de ter 4 YUV buffers para tramas de resolução pelo menos igual à codificada. Estes mantem a trama a ser reconstruída, a trama anterior, a última trama gloden e a última trama altref.
A moir parte das implementações vai desejar usar estes buffers com pixéis “invisíveis”, que extendem um número moderado de pixéis para além das margens da imagem visível. Isto simplifica a predição das tramas inter, permitindo utilizar todos os dados para predição dos blocos da imagem. [3]
Vorbis

Figura 4 – Sobreposição de duas janelas.[7]
Este codec é baseado na transformada MDCT (Modified Discrete Cosine Transform). A saída de uma MDCT em janela de uma trama é visível na figura 4. Possui um codificador desenhado segundo um complexo modelo psicoacústico e um descodificador de baixa complexidade. A descodificação é mais simples que a do mp3, mas necessita de mais memória, pois não possui um modelo probabilístico.
O áudiointroduzido é dividido em tramas individuais, que são comprimidas em bruto, em pacotes não formatados. O descodificador aceita em pacotes em sequência, descodifica-os e sintetiza as tramas de áudio através destes, volta a juntar estas tramas à imagem da trama original. O Vorbis é da forma VBR (Variable Bit Rate) e assim os pacotes não têm tamanho mínimo, máximo ou mesmo esperado. Os pacotes são desenhados de modo poderem ser cortados e mesmo assim descodificados. O mecanismo de transporte e descodificação deve permitir que o pacote seja de qualquer tamanho e que acabe antes ou depois de o descodificador o esperar.
Os pacotes em Vorbis são assim esperados serem usados com um mecanismo de transporte que fornece uma forma livre de enquadramento, sincronização, posicionamento e correcção de erros, de acordo com os objectivos do projecto. [7]
Matroska
A Matroska Multimedia Container é uma norma aberta para um container de formato livre. Este formato suporta um número ilimitado de faixas de vídeos, músicas, imagens e legendas num único ficheiro. Tem como objectivo fornecer um formato universal para armazenamento de conteúdos multimédia comuns, como programas de TV. A Matroska tem um conceito semelhante a outros, como AVI, MP4 ou ASF, mas é completamente aberta a especificações, em que as suas implelentações consistem principalmente em softwaresopen-source. [8]
O formato do container do WebM tem como base o perfil do formato do container da Matroska, juntamente com os formatos de video VP8 e de áudio Vorbis.[9]