Main menu
De modo a reagir à necessidade de flexibilização e customização face à multitude de plataformas e ambientes onde o H.264/AVC pode ser aplicado, o projecto deste codec engloba duas camadas principais, interrelacionadas: a Video Coding Layer (VCL) e a Network Abstraction Layer (NAL).
A VCL é uma camada projectada para representar de forma eficiente o conteúdo do vídeo codificado, sendo o resultado à saída desta macroblocos codificados.
A NAL é uma camada em que é executada a formatação da representação de vídeo que sai da VCL e atribuição de informação em cabeçalhos ao mesmo conteúdo de forma a o condicionar da melhor forma possível ao tipo de meio em que vai ser transmitido ou armazenado. A camada NAL é facilmente encapsulada em diferentes formatos de ficheiros e protocolos como o RTP, sistemas MPEG-
A camada VLC segue o modelo de codificadores anteriores de predição de movimento em loop, em que cada frama após o processo de codificação é representada em unidades em forma de blocos associados a uma luminância e duas crominâncias designados por macroblocos.
No diagrama de blocos da figura 3 é possível observar as alterações principais introduzidas pelo H.264/AVC face a codecs anteriores:
De modo a reduzir o efeito de bloco, é introduzido um filtro anti-
O H.264/AVC possibilita, graças ao aumento da memória disponível, armazenamento de várias frames para serem empregues no processo de predição
O esquema de predição utilizado no H.264/AVC é também aplicado em tramas Intra.
A DCT é substituída por uma transformada inteira
Usar tópicos e explicação da página 10 do artigo enorme para explicar melhor a figura de diagrama de blocos
Na próxima secção, serão analisadas as ferramentas implementadas pelo codec H.264/AVC que tornam possível as melhorias de desempenho, quer a nível da compressão, quer da qualidade final de vídeo codificado pelo H.264/AVC em relação aos codecs anteriores.
Transformada DCT Inteira
Transformadad de Hadamard
Quantização
Predição e Codificação de Tramas Intra
De modo a ser possível obter ganhos de codificação da ordem dos 50% face aos codecs anteriores, o H.264/AVC implementa um conjunto de ferramentas que procuram explorar de forma mais eficiente a predição de movimento de uma sequência. Estas ferramentas apresentam uma utilidade acrescida aquando a codificação de vídeo de alta definição, dado que resoluções superiores requerem uma quantidade substancialmente superior de cálculos dos vectores de compensação de movimento. Neste sentido, são descritas seguidamente as ferramentas implementadas mais relevantes:
Compensação de movimento com blocos de tamanho variável, podendo ser reduzido o tamanho dos blocos a comparar (em sequências com conteúdo mais rico e transições mais rápidas), sendo o tamanho mínimo de 4x4 amostras;
Precisão dos vectores de compensação de movimento até ¼ da amostra com complexidade reduzida do processamento da interpolação face a implementações anteriores (MPEG-
Obtenção de melhores resultados nas técnicas de compensação de movimento, com a possibilidade de predição de uma trama "P" com base numa das N tramas armazenadas num dado instante no buffer do descodificador;
A possibilidade de atribuição de um "peso" e de realizar um offset ao sinal gerado por predição aquando a compensação de movimento permite aumentar consideravelmente a eficiência de codificação em cenas mais complexas, nomeadamente com desvanecimentos;
Transformada de blocos hierárquica, permitindo explorar a correlações existentes em maiores áreas de imagem;
Predição espacial de tramas Intra em todas as direcções, permitindo obter vectores de movimento optimizados;
Introdução de um filtro de efeito de bloco no loop de codificação, permitindo melhorar substancialmente a qualidade subjectiva e objectiva do vídeo final. Esta característica tem especial importância em vídeo de alta definição devido ao facto de, em ecrãs com dimensões superiores, qualquer efeito de bloco seria facilmente detectado pelo utilizador;
Codificação entrópica adaptável ao contexto de uma sequência, conduzindo a elevadas compressões de ritmo binário. Os códigos mais adoptados são os CAVLC (Context Adaptive VLCs), utilizados para codificar os coeficicentes da transformada, e os CABAC (Context-