• Nenhum resultado encontrado

O crescimento no número de dispositivos que manipulam vídeos digitais com capacidades e necessidades diversas tem incentivado a busca por alternativas que resolvam da melhor forma possível o problema de armazenamento e transmissão desses vídeos (SCHWARZ et al., 2007).

Uma solução para este problema seria que os dispositivos de baixa resolução, como os telefones móveis, fossem capazes de decodificar o mesmo sinal recebido pelos dispositivos de alta resolução, como televisões de alta definição, mas esta solução implicaria em um elevado custo computacional e um excessivo consumo de energia. Uma outra solução seria a transmissão de dois ou mais sinais de streams não-escaláveis, usando o método de simulcast, onde cada sinal atende os requisitos de determinada resolução, no entanto, este método causaria um significativo aumento no uso da banda de transmissão (SCHWARZ et al., 2007).

Em função destas questões, a escalabilidade se apresenta como a solução mais apropriada, pois disponibiliza o vídeo codificado em sua maior resolução, mas permite que sejam extraídas camadas (substreams ou subconjuntos do bitstream), de forma que o vídeo seja adaptado ao decodificador do dispositivo onde o vídeo será exibido. Assim, a utilização de todas as camadas na decodificação representará o vídeo de mais alta qualidade e com a mais alta resolução.

Como já mencionado na introdução deste trabalho, a codificação em camadas permite que a codificação/decodificação de um vídeo seja realizada em etapas, de modo que, a camada mais inferior, codificada primeiro, é chamada de camada base e utiliza as mesmas técnicas de codificação de um codificador não escalável e, as demais camadas, chamadas de camadas de enriquecimento, são preditas a partir dos dados já codificados na camada de referência (camada base) e adicionam informações de codificação específicas de sua camada, de acordo com a sua resolução, qualidade ou taxa de quadros por segundo (SEGALL, 2007).

A camada de referência é a camada utilizada como fonte para a predição dos dados da camada de enriquecimento que está sendo codificada/decodificada (SEGALL, 2007), porém, como nesta dissertação foi adotada a utilização de apenas duas camadas de codificação/decodificação, a camada de referência, será sempre a própria camada base.

32

Este trabalho está focado na extensão escalável do padrão H.264/AVC de codificação de vídeo. Esta extensão, também chamada de H.264/SVC (Scalable Video

Coding), adota as ferramentas de codificação que estão no estado da arte, obtendo

importantes ganhos em relação aos padrões anteriores que tinham suporte à escalabilidade.

A padronização do H.264/SVC foi realizada visando de possibilitar que um

bitstream fosse composto por substreams independentes e que, a partir da codificação

deste bitstream, os substreams que o compõem pudessem ser decodificados com uma complexidade e reconstrução de qualidade semelhante à alcançada quando o padrão não escalável H.264/AVC é utilizado (SCHWARZ et al., 2007).

Embora a escalabilidade já tenha sido utilizada em padrões de compressão de vídeo anteriores ao padrão H.264/AVC como, o MPEG-2 e o H.263, a escalabilidade nesses padrões, originou um considerável aumento na complexidade do decodificador e uma significativa redução na eficiência de codificação. Estas desvantagens, as quais reduziram o sucesso dos padrões escaláveis anteriores, são tratadas na extensão escalável do padrão H.264/AVC através da utilização de novos mecanismos de predição de movimento entre as camadas, que visam uma melhor eficiência da codificação e a diminuição da complexidade requerida para decodificação (SCHWARZ et al., 2007).

O processo de padronização da extensão escalável do padrão H.264/AVC iniciou em 2001, durante a 58ª reunião do MPEG. Em outubro de 2003, propostas para uma nova atividade de padronização foram apresentadas, resultando na criação do Scalable Video

Model 1.0 em março de 2004. Esta atividade de padronização tornou-se um item de

trabalho do grupo JVT em janeiro de 2005 (WIEN, 2007). Em novembro de 2007, a especificação final da extensão escalável do padrão H.264/AVC (ITU-T, 2007) foi publicada.

O padrão H.264/SVC explora três tipos diferentes de escalabilidade: temporal, espacial e de qualidade. Diferentes combinações entre estes tipos de escalabilidades são suportadas pelo padrão H.264/SVC (SEGALL, 2007). Nas subseções a seguir esses três tipos de escalabilidade serão apresentados de forma mais detalhada.

2.3.1 Escalabilidade Temporal no H.264/SVC

A escalabilidade temporal possibilita que um único bitstream possua diversas taxas de quadros (HUANG, 2007). No padrão H.264/SVC, a escalabilidade temporal é aplicada através da utilização de quadros B hierárquicos. Neste caso, a camada base é formada por quadros tipo I ou P e as camadas de enriquecimento são formadas por quadros tipo B. Para o caso diádico, é necessário que os quadros tipo B usem como referência apenas quadros que estejam em uma camada temporal inferior e que sejam seus sucessores ou antecessores diretos (SCHWARZ et al., 2006; DARONCO, 2009).

Na Figura 2.3, é apresentado um exemplo de estrutura de quadros B hierárquicos. Nesse exemplo, os quadros em preto são quadros do tipo I ou do tipo P, que são utilizados como referência sem depender de outros quadros. Estes quadros compõem a primeira camada temporal, ou seja, a camada base. A segunda camada temporal é formada por quadros do tipo B, chamados de B1, os quais utilizam os quadros pretos

como referência. A próxima camada é formada pelos quadros que dependem diretamente dos quadros da segunda camada, que no exemplo são representados pelos quadros chamados de B2. Este procedimento de predição em árvore se repete

33

dos quadros da primeira camada, todos os demais quadros são do tipo B e, portanto, podem ser preditos a partir de mais de um quadro de referência.

Figura 2.3: Estrutura de quadros B hierárquicos (Modificada a partir de (JVT, 2006)). Na escalabilidade temporal, o padrão H.264/SVC permite também o uso de outra estrutura de predição temporal através da utilização de um algoritmo denominado MCTF – Motion-Compensated Temporal Filtering, o qual pode ser usado como uma ferramenta de pré-processamento visando melhorar a eficiência de codificação (HUANG, 2007; HÜSEMANN, 2009). No entanto, comparações realizadas entre o uso da estrutura de quadros B hierárquicos e o uso do MCTF indicaram que, embora o MCTF apresente uma complexidade maior, a sua utilização não resulta em uma melhor eficiência de codificação (SCHWARZ et al., 2006).

2.3.2 Escalabilidade de Qualidade no H.264/SVC

A escalabilidade de qualidade é caracterizada por manter a resolução e a taxa de quadros nas diferentes camadas, alterando somente a qualidade do vídeo em cada camada, de acordo com os parâmetros de quantização aplicados. Assim, para vídeos com definição mais alta são utilizados parâmetros de quantização com valores menores e, para vídeos com menor definição, parâmetros com valores maiores (SCHWARZ et al., 2007).

Na codificação escalável do padrão H.264/SVC, a escalabilidade de qualidade é implementada através de dois métodos conhecidos como CGS (Coarse-Grain quality

Scalability) e MGS (Medium-Grain quality Scalability).

Como o método CGS permitia a geração de um número de camadas de qualidade muito restrito, o padrão H.264/SVC inseriu uma nova especificação de escalabilidade de qualidade, criando o método MGS com o objetivo de melhorar a granularidade da qualidade do vídeo. Assim, foi possível obter um nível maior de flexibilidade e adaptabilidade, possibilitando, de fato, a geração de mais camadas do que o método CGS (SCHWARZ et al., 2007).

Além desses dois métodos, inicialmente, o padrão H.264/SVC também possibilitava o uso do método FGS (Fine-Grain quality Scalability), o qual permitia que os slices do vídeo fossem truncados em diversos pontos, oferecendo ainda mais flexibilidade que o método MGS. Entretanto, devido a sua alta complexidade computacional e ao fato do método de MGS fornecer granularidade suficiente para a codificação escalável de qualidade, com uma complexidade menor e uma eficiência de codificação similar à deste método, o FGS foi removido do padrão H.264/SVC (WIEN, 2007).

2.3.3 Escalabilidade de Espacial no H.264/SVC

A escalabilidade espacial é o foco deste trabalho, por isso, o próximo capítulo dessa dissertação está exclusivamente focado neste tipo de escalabilidade. Nesta seção são

34

apresentadas apenas algumas informações introdutórias sobre a escalabilidade espacial no padrão H.264/SVC.

Na escalabilidade espacial, cada camada diz respeito a uma resolução espacial suportada (SCHWARZ et al., 2007). O padrão H.264/SVC permite a utilização de resoluções com relações arbitrárias entre as camadas, contanto que as resoluções horizontal e vertical do vídeo aumentem, proporcionalmente, de uma camada para outra. O caso em que as resoluções vertical e horizontal do vídeo são duplicadas (fator de escala igual a 2) de uma camada para a próxima, é chamado de caso diádico (SEGALL, 2007) e, como já mencionado, será adotado no decorrer dessa dissertação.

Para cada camada espacial, são utilizados informações de predição e parâmetros específicos desta camada. No entanto, visando obter uma melhor eficiência de codificação em relação ao método de simulcast, foram incorporados à escalabilidade espacial mecanismos de predição entre camadas, os quais possibilitam o reuso de informações codificadas na camada de referência para a realização da predição de dados da camada de enriquecimento (WIEN, 2007). Estes métodos são: predição de movimento entre camadas, predição intra entre camadas e predição residual entre camadas (SCHWARZ et al., 2007).

Maiores detalhes sobre a escalabilidade espacial do padrão H.264/SVC serão apresentados no próximo capítulo desta dissertação.

3 ESCALABILIDADE ESPACIAL NO PADRÃO

H.264/SVC

Por ser o foco do desenvolvimento arquitetural apresentado nesta dissertação, a escalabilidade espacial do padrão H.264/SVC será apresentada em mais detalhes neste capítulo.

Na escalabilidade espacial, a camada codificada com os dados do vídeo de menor resolução é chamada de camada base, e as demais camadas codificadas com dados de vídeos com resoluções maiores, são chamadas de camadas de enriquecimento. No entanto, para remover a redundância entre camadas e visando melhorar a eficiência da codificação escalável espacial, foram inseridos, no padrão H.264/SVC, métodos de predição entre camadas. Estes métodos são capazes de predizer os dados da camada de enriquecimento a partir dos dados previamente reconstruídos em uma camada de resolução menor (SEGALL, 2007).

A predição entre camadas permite a exploração das correlações existentes entre diferentes camadas, de forma que os dados já codificados na camada base possam ser reutilizados na codificação da camada de enriquecimento, possibilitando, assim, uma codificação mais eficiente dos dados da camada de enriquecimento.

Na Figura 3.1 é apresentado o diagrama de blocos simplificado do codificador H.264/SVC, contendo duas camadas espaciais.

Na escalabilidade espacial do padrão H.264/SVC existem três métodos que podem ser utilizados na predição entre camadas, são eles: predição de movimento, predição residual e predição intra, conforme ilustrado na Figura 3.1, onde os três tipos possíveis de predição entre camadas, aparecem na região entre as camadas base (Camada 0, na Figura 3.1) e de enriquecimento (Camada 1, na Figura 3.1).

Nas subseções a seguir esses três métodos serão descritos. Tais descrições estão restritas ao caso diádico (SEGALL, 2007) (duplicação nas resoluções horizontal e vertical do vídeo) da escalabilidade espacial, já que as arquiteturas desenvolvidas nesta dissertação consideraram esta restrição. As predições de movimento entre camadas e intra entre camadas serão apresentadas com mais detalhes, pois a contribuição desta dissertação está no desenvolvimento de hardware para estes dois tipos de predições entre camadas.

36

Figura 3.1: Diagrama em blocos de um codificador H.264/SVC (Modificada a partir de (WIEN, 2007)).