As recomendações para codecs de vídeo, desenvolvidos por esta instituição, satisfazem as comunicações sobre canais de baixo débito, através de uma eficiente representação de vídeo codificado, mantendo a qualidade e a robustez a erros [5].
H.261
A norma H.261 surge com a necessidade de comprimir os streamings de vídeo, em comunicações de tempo real, dadas as limitações dos canais de comunicações que as suportavam [5].
Objectivos
Esta norma pretende satisfazer as necessidades dos serviços de videotelefonia e videoconferência, sobre canais RDIS (Rede Digital com Integração de Serviços). Os codecs, que respeitam esta norma, podem ser utilizados em comunicações bidireccionais ou unidireccionais [5].
Arquitectura
A arquitectura típica que constitui um codificador H.261, é composta por um codificador de fonte, responsável por codificar e comprimir o vídeo, um multiplexer de codificação, onde o vídeo comprimido é multiplexado com os parâmetros da codificação, um buffer de transmissão responsável por armazenar a informação que sai do multiplexer e reportar o seu estado ao controlo. O módulo de controlo regula, assim, o débito binário gerado. Á saída existe ainda um codificador de canal, responsável por proteger o fluxo de dados, em relação aos erros introduzidos pelo canal de comunicação. O respectivo descodificador possui uma arquitectura inversa. A Figura 1 ilustra esta arquitectura [5].
Figura 1 - Arquitectura de um codec H.261 [5].
Formato das imagens originais
As imagens são processadas de forma progressiva. Cada imagem é composta por três componentes, a luminância Y e duas crominâncias, Cr e Cb, pelo que a codificação é feita em cada uma delas. A norma obriga a que todos os codificadores estejam aptos à codificação de imagens QCIF(Quarter CIF), com 176x144 pixéis, deixando opcional a capacidade de codificação de imagens CIF (Common Intermediate Format), com 352x288 pixéis. O formato de subamostragem da crominância é o 4:2:0, sendo a sua resolução metade, na vertical e na horizontal, em relação à luminância. O resultado da compressão do vídeo é um fluxo hierárquico. Dado isto, uma imagem é dividida conforme ilustra a Figura 2, em que cada bloco é constituído por 8x8 pixéis [5, 6].
Figura 2 – Estrutura hierárquica de uma imagem de vídeo [6].
Ferramentas
Este codec é considerado híbrido, no sentido em que utiliza em conjunto várias técnicas de compressão, como a predição temporal e a DCT [4].
Predição temporal, DCT, quantificação e codificação entrópica
A predição temporal permite que uma imagem seja prevista do lado do descodificador, assumindo-se que a imagem actual é igual à imagem anterior. O codificador determina a diferença entre a predição e a imagem original, dividia em blocos e macroblocos, codifica-os e envia-os ao descodificador. O erro de predição é transformado, através da DCT, para o domínio da frequência e os seus coeficientes são quantificados. Segue-se a codificação entrópica, usando pares (Run, Level). Nos símbolos mais prováveis usam-se códigos VLC (Código de comprimento Variável), enquanto para símbolos menos prováveis usam-se FLC (Códigos de Comprimentos Fixos) [4].
Compensação de movimento e filtragem espacial
A compensação de movimento é uma ferramenta opcional, que permite ao codificador escolher, da imagem anterior descodificada, o bloco mais parecido com aquele que está a ser codificado e, deste modo, determinar qual é o vector de movimento. O erro de predição é menor, se for calculado em relação ao macrobloco da imagem anterior deslocado pelo vector de movimento. Os vectores de movimento são limitados a uma janela de pesquisa de 31x31 amostras, em que a unidade mais pequena de movimento e pesquisa é o pixel. O algoritmo de pesquisa não é normativo, permitindo assim ao fabricante gerir a complexidade de implementação. A filtragem espacial consiste na aplicação de um filtro passa baixo, após a compensação de movimento, no sentido de alisar as altas frequências e algum ruído provocado na quantificação [4].
Actualização forçada de macroblocos e codificação de canal
Actualização forçada dos macroblocos consiste no envio periódico de um macrobloco, sem utilização de predição, de modo a conter uma possível propagação de erros [4]. De modo a corrigir alguns erros provocados pelo canal de transmissão, pode ser utilizado o algoritmo de correcção BCH do tipo FEC (Forward Error Correction) [7].
H.263
A norma H.263 surge com o aparecimento das comunicações de dados nas telecomunicações móveis e a necessidade de transmitir vídeo sobre os seus canais. Pretendia-se atingir um débito inferior a 64 bit/s e aumentar a variedade de resoluções de imagens suportadas pela norma H.261 [8].
Objectivos
A norma H.263 tem como objectivo codificar vídeo para canais de baixo e muito baixo débito, como as redes móveis, a rede comutada de telefone pública (PSTN) e a RDIS. É utilizada nos codecs para aplicações de videotelefonia para redes de telefone pública, redes móveis e wireless, bem como monitorização de vídeo e comunicações multimédia em dispositivos móveis [8].
Arquitectura
A arquitectura de um codec respeitante à norma H.263 é muito semelhante à de um codec da norma H.261, uma vez que o seu desenvolvimento foi baseado no seu antecessor [8].
Formato das imagens originais
As imagens originais são igualmente processadas de forma progressiva, contendo, cada uma delas, as três componentes Y, Cr e Cb. O formato de subamostragem das crominâncias mantém-se em 4:2:0 [4].
A imagem é dividida em GOB (Group Of Blocks), que nesta norma podem conter entre 1 linha de MB (Macroblock) e k x 16 linhas de MB, sendo que k depende da resolução da imagem. Cada MB é igualmente constituído por 4 blocos de Y e as duas crominâncias, Cr e Cb. Quando é utilizado o modo RRU (Reduced-Resolution Update), cada MB é constituído por 32 linhas, cada uma com 32 amostras de luminância e 16 amostras de crominâncias, divididas nas componentes Cr e Cb.
Para além das já conhecidas QCIF e CIF, a norma H.263 permite a codificação de imagens com resolução SQCIF (Sub QCIF), com 128x96 pixéis, 4CIF, com 704x576 pixéis, e 16CIF, com 1408x1152 pixéis. A partir da versão 2, H.263+, o codificador e o descodificador podem negociar formatos de imagens especiais. A norma obriga a que os descodificadores possuam a capacidade para descodificação de imagens em formato SQCIF e QCIF, embora os codificadores apenas tenham que ter a capacidade de comprimir uma delas. Todos os restantes formatos são considerados opcionais [4].
Fluxo da codificação H.263
O fluxo resultante da codificação, em H.263, é constituído por camadas hierárquicas. Isto permite que o fluxo seja considerado escalável sempre que seja constituído por mais de uma camada. À excepção da camada base (primeira camada), todas as restantes podem apenas ser descodificadas na presença das camadas inferiores. O fluxo constituído apenas pela camada básica tem uma estrutura semelhante à do H.261 [4].
Ferramentas
As ferramentas da norma H.263, baseiam-se nas já existentes na norma H.261, com algumas melhorias, bem como em algumas novas técnicas que visam melhorar o desempenho da codificação [4].
Predição temporal e Vectores de movimento sem restrições
A pesquisa dos vectores de movimento, da predição temporal, passa a ter uma precisão de ½ pixel e os vectores de movimento passam a ser previstos, a partir dos já enviados para os macroblocos adjacentes [4].
Os vectores de movimento passam a ter a capacidade de apontar para fora dos limites da imagem, aumentando a dimensão da janela de pesquisa e a eficiência da codificação.
Nesta norma, surge a possibilidade de ser realizada predição avançada, através da utilização de quatro vectores de movimento, para cada macrobloco (um para cada bloco de luminância), bem como de ser aplicada a compensação de movimento com sobreposição de blocos, permitindo diminuir o efeito de bloco [4].
DCT, quantificação e codificação entrópica aritmética
A exploração da redundância espacial continua a ser efectuada através da DCT, tal como era efectuado no H.261. Após a aplicação da transformada, os coeficientes são quantificados, sendo retirada informação não sensível à perceptibilidade humana. A estrutura dos símbolos na codificação entrópica foi alterada, tendo sido acrescentado um terceiro valor, Lats, a cada par (Run, Level), que reflecte qual o último coeficiente diferente de zero no bloco [4]. A codificação aritmética, em substituição da codificação de Huffman, para a codificação entrópica, é outra opção que pode gerar ganhos de desempenho na compressão. É possível com esta funcionalidade melhorar o débito binário até 5%, dado que utiliza códigos mais eficientes [4].
Tramas PB
A introdução de tramas do tipo PB é uma revolução, no sentido em que permite codificar uma trama do tipo P e uma do tipo B, como uma unidade apenas. Os coeficientes das tramas B e P são intercalados ao macrobloco e a trama B é predita a partir da trama P a ser codificada. Este tipo de tramas não necessita de vectores de movimento bidireccionais separados, uma vez que estes são calculados a partir dos vectores de movimento da imagem P actual, com um ajuste relacionado com a separação temporal entre a as tramas P e B, em relação à P anterior [4].
Perfis e níveis
Todos os terminais H.263 suportam o modo básico de funcionamento. No entanto, por questões de requisitos de qualidade e eficiência das aplicações, alguns terminais suportam um conjunto de opções avançadas que outros não. Esta norma define diferentes modos, que derivam de uma combinação entre os vários níveis e perfis disponíveis. Os perfis definem conjuntos de ferramentas utilizadas, enquanto os níveis estão associados à resolução espacial das imagens, débito binário e à capacidade de processar um determinado número de tramas por segundo [4].