• Nenhum resultado encontrado

Desenvolvimento de Módulos de Hardware para a Decodificação de Vídeo Focando na Escalabilidade Espacial Diádica do Padrão H.

N/A
N/A
Protected

Academic year: 2021

Share "Desenvolvimento de Módulos de Hardware para a Decodificação de Vídeo Focando na Escalabilidade Espacial Diádica do Padrão H."

Copied!
121
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA

PROGRAMA DE PÓS-GRADUAÇÃO EM MICROELETRÔNICA

THAÍSA LEAL DA SILVA

Desenvolvimento de Módulos de Hardware

para a Decodificação de Vídeo Focando na

Escalabilidade Espacial Diádica do Padrão

H.264/SVC

Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre em Microeletrônica

Prof. Dr. Altamiro Amadeu Susin Orientador

Prof. Dr. Luciano Volcan Agostini Co-orientador

(2)

Livros Grátis

http://www.livrosgratis.com.br

(3)
(4)

CIP – CATALOGAÇÃO NA PUBLICAÇÃO

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL Reitor: Prof. Carlos Alexandre Netto

Vice-Reitor: Prof. Rui Vicente Oppermann

Pró-Reitor de Pós-Graduação: Prof. Aldo Bolten Lucion Diretor do Instituto de Informática: Prof. Flávio Rech Wagner Coordenador do PGMicro: Prof. Ricardo Augusto da Luz Reis

Bibliotecária-Chefe do Instituto de Informática: Beatriz Regina Bastos Haro Silva, Thaísa Leal da

Desenvolvimento de Módulos de Hardware para a Decodificação de Vídeo Focando na Escabilidade Espacial Diádica do Padrão H.264/SVC / Thaísa Leal da Silva – Porto Alegre: Programa de Pós-Graduação em Microeletrônica, 2009.

118p.:il.

Dissertação (mestrado) – Universidade Federal do Rio Grande do Sul. Programa de Pós-Graduação em Microeletrônica. Porto Alegre, BR – RS, 2005. Orientador: Altamiro Amadeu Susin; Co-orientador: Luciano Volcan Agostini.

1.ABNT. 2.Processadores de Texto 3.Formatação eletrônica de documentos. I. Susin, Altamiro Amadeu. II. Agostini, Luciano Volcan. III. Título.

(5)
(6)

AGRADECIMENTOS

Gostaria de agradecer, primeiramente, a minha família essa base forte que me dá alento, carinho e força sempre que preciso. Aos meus pais, Orlando Gonçalves da Silva e Eva Nadir Leal da Silva, por tudo que me ensinaram e continuam ensinando a cada novo dia, desde o amor e a dedicação naquilo que se faz até a fé e a perseverança para atingir meus objetivos. A minha irmã Deise Leal da Silva e meu cunhado Daniel Pereira de Almeida, por sua amizade e apoio nas horas difíceis em que precisamos lutar juntos na busca pelo restabelecimento de saúde dos nossos. As minhas grandes amigas Eli Carvalho e Francine Brito por todo seu carinho e compreensão nos momentos em que fui ausente.

Ao Prof. Altamiro Susin, meu orientador no mestrado, pelos conselhos e críticas construtivas que me fizeram aprender muito durante este período de mestrado. Por me mostrar sempre uma nova forma de ver as coisas e encontrar novas soluções para os problemas e, principalmente, por teres se tornado esse valoroso amigo que oferece o ombro nas horas difíceis e compartilha as alegrias nos momentos de vitória.

Ao Prof. Luciano Agostini, meu orientador na graduação e, hoje, co-orientador no mestrado, por todo o conhecimento acadêmico que sempre me transmitiu desde a graduação, por dedicar seu tempo me orientando e mostrando os caminhos que posso seguir. Por acreditar no meu trabalho e sempre apostar que posso ir mais além, me oferecendo novas oportunidades e novos desafios e, finalmente, por sua amizade sempre honesta e verdadeira.

Ao Prof. Sergio Bampi, que mesmo não sendo meu orientador, esteve sempre disposto a me auxiliar, dispondo de seu tempo e atenção para discutirmos os rumos do meu trabalho, ou qualquer que fosse o assunto, apresentando sempre um novo ponto de vista com novas alternativas e soluções.

Aos meus amigos e colegas de trabalho do Laboratório 215 do Instituto de Informática da UFRGS Dieison Antonello Deprá, Bruno Zatt, Vagner Rosa, Roger Porto, Cláudio Diniz e Guilherme Mauch que me acompanharam desde minha chegada ao mestrado, por sua amizade, pelo convívio e, pelas conversas e discussões, por vezes buscando soluções para o nosso trabalho, por vezes falando sobre a situação sócio-econômica do Zimbábue, mas sempre chegando a conclusões interessantes ou, no mínimo, engraçadas. Aos colegas Débora Matos, Leandro Zanetti, Fábio Ramos, Guilherme Corrêa, Franco Valdez, Miklécio Costa, André Martins, Gustavo Andretta e Leandro Max, por se integrarem rapidamente ao nosso grupo, e hoje já terem se tornado parte da família do Lab. 215.

Aos amigos e colegas do GACI, grupo de pesquisa em microeletrônica da UFPel, por me acolherem sempre muito bem quando vou a Pelotas, pela parceria nos trabalhos

(7)

desenvolvidos e pelos fortes laços de amizade que conquistamos ao longo desses anos em que cursei a graduação e o mestrado. Em especial ao colega e amigo Felipe Sampaio, por me ajudar em tudo que estava ao seu alcance, sempre atencioso, bem-humorado e muito dedicado.

Enfim, agradeço a todos que de alguma forma me apoiaram nessa caminhada, e contribuíram para que eu concluísse mais essa importante etapa em minha vida.

(8)

SUMÁRIO

LISTA DE ABREVIATURAS E SIGLAS ... 9

LISTA DE FIGURAS ... 11 LISTA DE TABELAS ... 13 RESUMO ... 15 ABSTRACT ... 17 1 INTRODUÇÃO ... 19 1.1 Objetivos do Trabalho ... 21 1.2 Metodologia ... 22 1.3 Organização do texto ... 25

2 CODIFICAÇÃO DE VÍDEO E O PADRÃO H.264/SVC ... 27

2.1 Introdução a Codificação de Vídeo ... 27

2.2 O Padrão H.264/AVC ... 28

2.2.1 Principais módulos do Codec H.264/AVC ... 29

2.3 O Padrão H.264/SVC ... 31

2.3.1 Escalabilidade Temporal no H.264/SVC ... 32

2.3.2 Escalabilidade de Qualidade no H.264/SVC ... 33

2.3.3 Escalabilidade de Espacial no H.264/SVC ... 33

3 ESCALABILIDADE ESPACIAL NO PADRÃO H.264/SVC ... 35

3.1 Predição Residual entre Camadas ... 36

3.2 Predição de Movimento entre Camadas ... 36

3.2.1 Definições Iniciais para a Predição de Movimento Entre Camadas ... 37

3.2.2 Predição de Movimento de um Macrobloco... 38

3.2.3 Escalonamento dos vetores de movimento ... 40

3.3 Predição Intra entre Camadas ... 40

3.3.1 Filtro Redutor de Efeito de Bloco da Predição Intra Entre Camadas ... 41

3.3.2 Upsampling da Predição Intra Entre Camadas ... 46

4 DESCRIÇÃO DAS ARQUITETURAS DESENVOLVIDAS PARA O DECODIFICADOR H.264/SVC ... 51

4.1 Arquitetura Desenvolvida para a Predição de Movimento entre Camadas: MC Escalável ... 52

4.1.1 Arquitetura do Compensador de Movimento Não Escalável ... 54

4.1.2 Memória de Dados da Camada Base ... 56

4.1.3 Arquitetura para a Predição de Movimento ... 57

4.1.4 Descrição VHDL da arquitetura desenvolvida ... 60

4.2 Arquiteturas Desenvolvidas para a Predição Intra Entre Camadas ... 64

4.2.1 Arquitetura do Filtro Redutor de Efeito de Bloco ... 64

4.2.1.1 Descrição VHDL da arquitetura do filtro ... 69

4.2.2 Arquitetura para o Módulo de Upsampling ... 72

(9)

4.2.2.2 Filtro de Crominância ... 75

4.2.2.3 Descrição VHDL da arquitetura do upsampling ... 76

5 VALIDAÇÃO DAS ARQUITETURAS IMPLEMENTADAS ... 79

5.1 Validação da Arquitetura para a Predição de Movimento entre Camadas ... 80

5.2 Validação das Arquiteturas para a Predição Intra entre Camadas ... 81

5.2.1 Validação do Filtro Redutor de Efeito de Bloco ... 81

5.2.2 Validação do Módulo de Upsampling ... 81

6 AVALIAÇÃO DOS RESULTADOS E COMPARAÇÃO COM TRABALHOS RELACIONADOS ... 83

6.1 Resultados da Arquitetura Desenvolvida para a Predição de Movimento entre Camadas ... 83

6.2 Resultados das Arquiteturas Desenvolvidas para a Predição Intra entre Camadas ... 85

6.2.1 Resultados de Síntese do Filtro Redutor de Efeito de Bloco ... 85

6.2.2 Resultados de Síntese para o Módulo de Upsampling ... 87

7 CONCLUSÕES E TRABALHOS FUTUROS ... 91

REFERÊNCIAS ... 93

APÊNDICE A <PUBLICAÇÕES E PRÊMIOS OBTIDOS DURANTE O MESTRADO> ... 99

(10)

LISTA DE ABREVIATURAS E SIGLAS

16VGA Sixteen Extended Video Graphics Array

4VGA Four Extended Video Graphics Array

ABNT Associação Brasileira de Normas Técnicas

AVC Advanced Video Coding

bS Boundary Strength

CGS Coarse-Grain quality Scalability

CIF Common Intermediate Format

CMOS Complementary Metal Oxide Semicondutor

CPqD Centro de Pesquisa e Desenvolvimento em Telecomunicações

DCT Discrete Cosine Transform

DVD Digital Versatile Disk

FGS Fine-Grain quality Scalability

FINEP Financiadora de Estudos e Projetos

FPS Frames Per Second

GOP Group Of Pictures

FIR Finite Impulse Response

FPGA Field Programmable Gate Array

FRExt Fidelity Range Extensions

HDTV High Definition Digital Television

ISO International Organization for Standardization

ITU-T International Telecommunication Union – Telecommunication

JPEG Joint Photographic Experts Group

JSVM Joint Scalable Video Model

JVT Join Video Team

KB Kilo Byte

LOP Line of Pixels

(11)

MC Motion Compensation

MCTF Motion Compensation Temporal Filtering

MGS Medium-Grain quality Scalability

MPEG Moving Picture Experts Group

MV Motion Vector

Q Quantization

Q-1 Inverse Quantization

QP Quantization Parameter

QVGA Quarter Vídeo Graphics Array

RGB Red, Green, Blue

RTL Register Transfer Level

SBTVD Sistema Brasileiro de Televisão Digital SDTV Standard Definition Television

SNR Signal-to-noise Ratio

SVC Scalable Video Coding

T Transform

T-1 Inverse Transform

TSMC Taiwan Semiconductor Manufacturing Company

TV Televisão

UFPel Universidade Federal de Pelotas

UFRGS Universidade Federal do Rio Grande do Sul VCEG Video Coding Experts Group

VGA Video Graphics Array

VHDL VHSIC Hardware Description Language

(12)

LISTA DE FIGURAS

Figura 1.1: Predição de movimento entre camadas - módulo do compensador de movimento escalável: (1) co-localização; (2) memória da camada base; (3)

escalonamento de vetores ... 23

Figura 1.2: Predição de intra entre camadas: módulo do filtro redutor de efeito de bloco ... 24

Figura 1.3: Predição de intra entre camadas: módulo de upsampling - (a) camada base filtrada; (b) camada base redimensionada. ... 24

Figura 2.1: Diagrama em blocos de um codificador H.264... 29

Figura 2.2: Diagrama em blocos de um decodificador H.264 ... 29

Figura 2.3: Estrutura de quadros B hierárquicos. ... 33

Figura 3.1: Diagrama em blocos de um codificador H.264/SVC ... 36

Figura 3.2: Relações entre a camada base e a camada de enriquecimento ... 38

Figura 3.3: Localização de uma amostra da camada de enriquecimento na camada base ... 38

Figura 3.4: Ordem de filtragem de bordas em um macrobloco ... 42

Figura 3.5: Amostras adjacentes para bordas verticais e horizontais. ... 42

Figura 3.6: Ordem de Processamento de amostras proposta. ... 46

Figura 3.7: (a) Imagem original, (b) Filtragem horizontal e (c) Filtragem vertical. ... 47

Figura 3.8: Quadro original na resolução QVGA (320x240 pixels) ... 48

Figura 3.9: Quadro após a filtragem horizontal, com 640x240 pixels ... 48

Figura 3.10: Quadro na resolução VGA (640x480 pixels), após a filtragem vertical .... 48

Figura 4.1: Diagrama em blocos de um decodificador H.264/SVC com destaque para as predições de movimento e intra entre camadas. ... 51

Figura 4.2: Diagrama em blocos de um decodificador H.264/SVC com a predição de movimento entre camadas em destaque. ... 53

Figura 4.3: Arquitetura do compensador de movimento escalável ... 53

Figura 4.4: Diagrama em blocos da arquitetura do MC não escalável ... 54

Figura 4.5: Estrutura de dados da memória ... 56

Figura 4.6: Predição das partições de macrobloco entre camadas. ... 57

Figura 4.7: Predição dos vetores de movimento entre camadas ... 58

Figura 4.8: Predição das informações de movimento a partir da camada base ... 58

Figura 4.9: Localização de um bloco 4x4 co-localizado na camada base. ... 59

Figura 4.10: Fluxograma do módulo de predição de movimento entre camadas. ... 60

Figura 4.11: Estrutura de arquivos VHDL utilizada na descrição em hardware da predição de movimento entre camadas ... 61

Figura 4.12: Entidade do módulo Inter_layer_mp.vhd... 62

Figura 4.13: Entidade do módulo Base_layer.vhd ... 62

Figura 4.14: Entidade do módulo Memory_dualport.vhd ... 63

(13)

Figura 4.16: Diagrama em blocos de um decodificador H.264/SVC com a predição de

intra entre camadas em destaque ... 64

Figura 4.17: Arquitetura completa do Filtro Redutor de Efeito de Bloco entre Camadas ... 65

Figura 4.18: Bloco do núcleo de filtragem usado quando bS = 1 ou 2 ... 67

Figura 4.19: Bloco do núcleo de filtragem usado quando bS = 4 para o cálculo das amostras p’0 e q’0. ... 67

Figura 4.19: Bloco do núcleo de filtragem usado quando bS = 4 para o cálculo das amostras p’1, p’2, q’1 e q’2... 68

Figura 4.21: Filtragem concorrente em nível de amostras ... 68

Figura 4.22: Estrutura de pipeline utilizada pelo filtro desenvolvido ... 69

Figura 4.23: Estrutura de VHDLs utilizada na implementação em hardware do filtro redutor de efeito de bloco segundo o H.264/SVC. ... 70

Figura 4.24: Entidade do módulo Deblocking_filter.vhd ... 71

Figura 4.25: Entidade do módulo filter_edge.vhd. ... 71

Figura 4.26: Entidade do módulo threshold_derivation.vhd. ... 72

Figura 4.27: Entidade do módulo c1_calculation.vhd ... 72

Figura 4.28:Arquitetura completa do filtro de upsampling. ... 73

Figura 4.29: Arquitetura do filtro de upsampling de luminância ... 74

Figura 4.30: Arquitetura do filtro de luminância de índice 4. ... 75

Figura 4.31: Filtro do filtro de crominância de índice 4 ... 75

Figura 4.32: Estrutura de arquivos VHDL utilizada na implementação em hardware do upsampling ... 76

Figura 4.33: Entidade do módulo UpsamplingHVLuma.vhd ... 77

Figura 4.34: Entidade do módulo FilterLuma.vhd ... 78

Figura 5.1: Exemplo de forma de onda obtida na validação da arquitetura. ... 80

(14)

LISTA DE TABELAS

Tabela 6.1: Resultados de síntese em FPGA para o MC não escalável e o MC escalável ... 84 Tabela 6.2: Resultados da síntese standard-cells para o MC escalável e do MC não escalável... 85 Tabela 6.3: Resultados da síntese para FPGA da arquitetura do filtro e comparações com trabalhos relacionados ... 86 Tabela 6.4: Resultados da síntese do filtro para standard-cells e comparações com trabalhos relacionados ... 87 Tabela 6.5: Resultados da síntese para FPGA do módulo de Upsampling ... 87 Tabela 6.6: Resultados da síntese para standard-cells do módulo de Upsampling ... 89

(15)
(16)

RESUMO

A disseminação de equipamentos multimídia impulsionada pela evolução das tecnologias de processamento e comunicação apresenta muitos desafios. Dentre eles está a necessidade de conversão de formato para adaptação aos dispositivos de apresentação, de comunicação e de armazenamento. A Televisão Digital é um dos meios de comunicação que utiliza intensivamente os recursos tecnológicos devido à alta taxa de informação manipulada. Este trabalho está inserido no contexto do Sistema Brasileiro de Televisão Digital (SBTVD) e aborda a escalabilidade de vídeo. A grande flexibilidade do sistema de Televisão Digital permite a transmissão de diversos formatos de vídeo. Entretanto, e em particular para economia do espectro e de recursos de armazenamento, não é possível gerar uma programação em diversos formatos independentes. Por outro lado, a transmissão de um único fluxo de dados em alta resolução e qualidade causaria impactos indesejados, como maior custo e maior consumo de energia, nos dispositivos que são capazes de apresentar apenas vídeos de baixa resolução, como celulares. A escalabilidade é uma técnica que permite a transmissão de mais de um formato do vídeo em fluxos complementares de dados, de tal forma que o receptor reconstrói a imagem de acordo com suas características. O crescimento no número de dispositivos que manipulam vídeos digitais e a diversidade de características desses dispositivos motivaram o desenvolvimento de uma extensão escalável para o padrão H.264/AVC, chamada de H.264/SVC - Scalable Video Coding. O H.264/SVC possibilita o uso de três tipos de escalabilidade: espacial, temporal e de qualidade, permitindo também combinações desses três tipos. Este trabalho está focado na escalabilidade espacial, mais especificamente nos mecanismos de predição entre camadas da escalabilidade espacial, os quais possibilitam que os dados já decodificados na camada base possam ser utilizados no processo de decodificação das camadas de enriquecimento. Existem três mecanismos de predição entre camadas: predição de movimento, predição residual e predição intra. Neste trabalho foram desenvolvidas uma arquitetura de hardware para a predição de movimento entre camadas composta, basicamente, por um compensador de movimento escalável e, duas arquiteturas para os módulos principais que compõem a predição intra entre camadas: o filtro redutor de efeito de bloco e o módulo de upsampling. Todas as arquiteturas implementadas foram descritas em VHDL e foram sintetizadas tanto para um dispositivo FPGA da família Virtex 4 da Xilinx, quanto para standard-cells utilizando a tecnologia CMOS TSMC 0.18um. Os resultados de síntese mostraram que todas as arquiteturas desenvolvidas apresentam um desempenho para processar com folga, em tempo real, vídeos VGA (640x480 pixels) e QVGA (320x240 pixels) a uma taxa de 30 quadros por segundo. Extrapolando os dados obtidos estima-se que os módulos teriam desempenho para processar em tempo real vídeos de alta resolução como HDTV (1920x1080 pixels). Palavras-Chave: Decodificação de Vídeo, H.264/SVC, Escalabilidade, Arquiteturas VLSI.

(17)
(18)

Hardware Modules Design for Scalable Video Decoding Focusing on

the Dyadic Spatial Scalability of the H.264/SVC Standard

ABSTRACT

The evolution of information and communication technologies enabled the dissemination of multimedia devices and many challenges arise at the same time. Among these challenges is the need of media objects format conversion to fit to the presentation, communication and storage devices. Digital Television handles high amount of information and therefore uses intensively technological resources. This work deals with the Brazilian Digital Television System and treats the video scalability problem at the hardware level. The flexibility of the Digital Television enables the transmission of several video formats. However, to reduce the use of electromagnetic spectrum and storage, streams are generated as complementary chains of information and not as independent ones. Moreover, transmission of a unique stream of high resolution and high quality would have unwanted impact like higher cost and power consumption mainly in devices that display only low resolution videos, like cell phones. Scalability is a technique that allows the transmission of more than one video format in such a way that the receiver rebuilds the image according to its particular properties. The growth in the number of devices that handle digital videos and the diversity of features of these devices stimulated the development of an extension of the H.264/AVC standard, called H.264/SVC - Scalable Video Coding. The H.264/SVC provides support for spatial scalability, temporal scalability, quality scalability and combinations of these three different scalabilities. This work focuses on the spatial scalability; more precisely in the interlayer prediction mechanisms, which allow the use of the data already decoded in the base layer in the decoding process of the enhancement layers. There are three mechanisms of interlayer prediction: motion prediction, residual prediction and intra prediction. In this work were designed a hardware architecture for the interlayer motion prediction, which is composed by a scalable motion compensation, and two architectures for the main modules that compose the interlayer intra prediction: the deblocking filter and the upsampling module. All architectures were described in VHDL and synthesized for a Xilinx Virtex 4 FPGA device and for standard-cells using the TSMC 0.18µm CMOS technology. In all cases, the synthesis results showed that the designed architectures are able to process QVGA and VGA frames in real time, overcoming the minimum rate of 30 frames per second. Estimatives showed that these architectures would also be able to process high resolution videos, like HDTV (1920x1080 pixels), in real time.

(19)
(20)

1

INTRODUÇÃO

A transmissão de imagens a distância tem uma história tão longa quanto às telecomunicações. Várias tecnologias se sucederam desde o início do século passado, com particular ênfase nas transmissões de imagens por cabo ou rádio, para serem inseridas em jornais em diversas partes do mundo. A busca por transmissões de imagens e vídeos em tempo real se estende há aproximadamente seis décadas e já passou por diversas etapas tecnológicas. Iniciando, no Brasil, com a transmissão em preto e branco em setembro de 1950, inovando com a televisão em cores com o sinal analógico, com a primeira transmissão em março de 1972, e chegando, atualmente, à televisão em cores com o sinal digital, que apresentou sua primeira transmissão no Brasil em dezembro de 2007.

Os aperfeiçoamentos tecnológicos foram constantes. A compatibilidade durante a implantação das inovações, mesmo na mudança da transmissão em preto e branco para colorida, foi mantida. A introdução da televisão digital quebra esta linha, introduzindo uma nova tecnologia, de modo que um receptor de televisão analógico não tem capacidade para decodificar um sinal de televisão digital.

As vantagens de utilização da televisão digital são consideráveis, entre elas estão: melhor qualidade de imagem e som, possibilidade de interatividade e, futuramente, outras funcionalidades, como a mobilidade e a portabilidade, devem ser aperfeiçoadas, fazendo com que o usuário possa receber o sinal de TV em uma enorme diversidade de dispositivos, desde aparelhos de televisão, chegando até celulares e outros dispositivos móveis. Somente através de tantas vantagens é possível justificar uma mudança tão grande em um parque industrial já estabelecido de produção de TVs analógicas, e também em relação à geração de conteúdo, que é, atualmente, extremamente difundido para a TV analógica.

A televisão digital aberta foi formalmente instituída no Brasil através do Decreto nº 4.901, de 26 de Novembro de 2003, o qual instituiu o Sistema Brasileiro de Televisão Digital – SBTVD (CCIVIL, 2009).

Este decreto anunciou o início dos trabalhos para a implantação da TV Digital no país e estabeleceu, entre suas finalidades: “estimular a pesquisa e o desenvolvimento e propiciar a expansão de tecnologias brasileiras e da indústria nacional relacionadas à tecnologia de informação e comunicação”, conforme Decreto nº 4.901, Art. 1°, parágrafo III (CCVIL, 2009).

O projeto SBTVD foi dividido em 18 subprojetos publicados na forma de editais em 2004. Tais subprojetos tiveram o objetivo de agregar pesquisadores para investigar e avaliar as soluções tecnológicas que poderiam ser inseridas no padrão brasileiro de TV digital aberta. No ano de 2005, foram formados e contratados 20 consórcios para a realização destas investigações. Nestes consórcios, estavam representadas 105

(21)

20

instituições brasileiras com especialistas nas diversas tecnologias relacionadas à TV digital aberta. A Fundação CPqD (Centro de Pesquisa e Desenvolvimento em

Telecomunicações) foi responsável por agrupar os resultados gerados pelos 20

consórcios, avaliar estes resultados e gerar um modelo de referência (CPqD, 2009) que foi a semente utilizada pelo Grupo Gestor do Sistema Brasileiro de TV Digital para definir o novo padrão. A proposta de padrão foi depositada e aprovada pela Associação Brasileira de Normas Técnicas (ABNT) na forma de diversos documentos, contendo as especificações de cada subsistema que está inserido no SBTVD (ABNT, 2008; ABNT, 2008a; ABNT, 2008b; ABNT, 2008c; ABNT, 2008d; ABNT, 2008e; ABNT, 2008f; ABNT, 2008g; ABNT, 2008h; ABNT, 2008i; ABNT, 2009; ABNT, 2009a; ABNT, 2009b; ABNT, 2009c; ABNT, 2009d; ABNT, 2009e; ABNT, 2009f).

A viabilidade de um sistema de televisão digital está intrinsecamente relacionada à eficiência dos algoritmos de compressão de dados usados para comprimir as informações de áudio e, principalmente, vídeo. A captura de um vídeo de alta definição em tempo real gera uma quantidade muito elevada de dados e seria inviável transmitir e/ou armazenar este vídeo se técnicas muito eficientes de codificação não fossem empregadas. O padrão mais popular de codificação de vídeo é o MPEG-2 (ISO/IEC, 1994) e é usado em praticamente todos os padrões de TV aberta mundiais, além de outras mídias, como o DVD. No Brasil, diferentemente de outros países, o padrão H.264/AVC (ITU-T, 2005) (também chamado de MPEG 4 – Parte 10) foi definido como o padrão de codificação de vídeos do SBTVD (ABNT, 2008a). O H.264/AVC é o mais novo e mais eficiente padrão de compressão de vídeos, atingindo ganhos de compressão de duas vezes em relação ao MPEG-2. Como o SBTVD foi o único padrão de TV aberta lançado após a padronização do H.264/AVC, os outros padrões de TV aberta não tiveram a oportunidade de incluir este padrão em suas definições. Pela importância deste padrão para este trabalho, ele será apresentado com alguns detalhes no capítulo 2 desta dissertação.

Em um ambiente largamente heterogêneo em relação às resoluções dos dispositivos que podem ser capazes de receber o sinal do SBTVD, partindo de celulares e chegando a TVs de alta definição, a geração de um único bitstream de alta resolução dos vídeos para atender a todos os tipos de receptores passa a ser uma solução pouco eficiente. Um celular, por exemplo, teria que ser capaz de decodificar o vídeo H.264/AVC de alta resolução para depois subamostrá-lo e, então, apresentar o vídeo da tela. O custo em consumo de energia para decodificar um vídeo de alta definição é inaceitável para este tipo de aplicação. Por outro lado, seria possível gerar vídeos com diversas resoluções, uma para cada tipo de dispositivo, o que é chamado de simulcast (SEGALL, 2007). Neste caso, o problema é o desperdício da largura de banda do canal de transmissão.

A codificação de vídeo com suporte ao requisito de escalabilidade tem se mostrado uma solução bastante atraente e apropriada para a resolução desse problema, pois possibilita que, a partir de um único bitstream gerado pela codificação de um vídeo, cada dispositivo decodificador possa selecionar somente as partes do bitstream que correspondam às suas capacidades e necessidades (SCHWARZ et al., 2007). Assim, um

bitstream é chamado escalável quando algumas de suas partes podem ser removidas de

forma que o bitstream resultante forme um novo bitstream válido para um determinado decodificador.

Na primeira versão aprovada do padrão H.264/AVC, o conceito de escalabilidade não era suportado. Mas as vantagens fornecidas pelo uso da escalabilidade e a busca por melhor atender aos requisitos do mercado, motivaram o desenvolvimento de uma

(22)

21

extensão escalável do padrão H.264/AVC, chamada H.264/SVC – Scalable Video

Coding (SCHWARZ et al, 2007). A extensão escalável do padrão H.264/AVC

apresenta diversas inovações em relação aos padrões escaláveis anteriores e, por ser o foco deste trabalho, o padrão H.264/SVC será apresentado em mais detalhes no capítulo 2 desta dissertação.

O conceito de codificação em camadas, ou substreams, usado pelos padrões escaláveis, se refere à primeira camada codificada como sendo a camada base, pois seus dados são utilizados como base para a codificação das demais camadas, denominadas camadas de enriquecimento. A camada base é codificada com as mesmas técnicas de codificação presentes em um codificador não escalável. No caso do padrão escalável H.264/SVC (ITU-T, 2007), o núcleo de codificação da camada base utiliza as mesmas técnicas de codificação presentes no codificador H.264/AVC (não escalável).

O padrão H.264/SVC permite a utilização dos seguintes tipos de escalabilidade: temporal, a qual possibilita que taxas de quadros variadas sejam usadas nas diferentes camadas; espacial, que permite a utilização de múltiplas resoluções nas diversas camadas e de qualidade, que possibilita diferentes tipos de qualidade de imagem nas camadas (SEGALL, 2007).

Para o Sistema Brasileiro de Televisão Digital (SBTVD) a escalabilidade espacial é a mais interessante, pois através dela seria possível gerar uma solução eficiente em termos de uso do espectro eletromagnético, para que receptores com suporte a diferentes resoluções como SDTV (Standard-Definition Television - Televisão de Definição Padrão) e HDTV (High-Definition Television - Televisão de Alta Definição) possam compartilhar o mesmo meio de transmissão (TOME, 2008). Como a versão atual do SBTVD ainda não suporta escalabilidade, é importante que a pesquisa evolua neste campo, proporcionando o desenvolvimento de hardware que possa ser utilizado pelo SBTVD em suas gerações futuras.

Esta dissertação está focada no desenvolvimento de hardware para as futuras gerações do Sistema Brasileiro de TV Digital (SBTVD), onde o suporte ao recurso de codificação escalável de vídeos será importante para ampliar a difusão do sistema.

Este trabalho de mestrado foi desenvolvido dentro do contexto do projeto FINEP H.264 – SBTVD, o qual foi proposto em 2006 e aprovado em meados de 2008. Este projeto faz parte do que se pode chamar de “Fase II” das pesquisas brasileiras sobre televisão digital. Participam deste projeto 12 equipes de pesquisa, abordando diversos temas da televisão digital, como codificação e decodificação de vídeo, escalabilidade, transcodificação de vídeo, codificação e decodificação de áudio, terminal de acesso, entre outros.

1.1

Objetivos do Trabalho

Este trabalho tem o objetivo de desenvolver hardware para a decodificação escalável de vídeos de acordo com o padrão H.264/SVC (ITU-T, 2007). Os resultados deste trabalho podem contribuir com a definição das próximas gerações do SBTVD, onde a escalabilidade poderá ser inserida de forma mandatória no padrão.

O foco do trabalho desenvolvido está no desenvolvimento de hardware para a escalabilidade espacial do padrão de H.264/SVC, a qual provê mecanismos de predição entre camadas, onde cada camada representa uma resolução diferente de um mesmo vídeo. Nesse escopo, o trabalho desenvolvido nessa dissertação consiste no

(23)

22

desenvolvimento de arquiteturas de hardware para a predição entre camadas da escalabilidade espacial.

1.2

Metodologia

A predição entre camadas usada na escalabilidade espacial, foco deste trabalho, é aplicada de modo que os dados decodificados na camada base possam ser utilizados na decodificação das camadas de enriquecimento. Existem três mecanismos que podem ser utilizados na predição entre camadas: predição intra, predição de movimento e predição residual (SCHWARZ et al, 2007).

Neste trabalho, foram desenvolvidos, em hardware, o módulo de compensação de movimento escalável, que compõe a predição de movimento entre camadas e, os módulos de upsampling e filtro redutor de efeito de bloco, que compõem a predição intra entre camadas. As arquiteturas desenvolvidas consideraram um decodificador escalável com duas camadas, a camada base e apenas uma camada de enriquecimento. A relação de dimensões entre as camadas respeitou o caso diádico, ou seja, as resoluções horizontais e verticais da camada enriquecimento são duas vezes maiores do que as resoluções da camada base. Então a resolução da camada base foi definida como QVGA (320x240 pixels), enquanto que a resolução da camada de enriquecimento foi definida como VGA (640x480 pixels).

A predição de movimento entre camadas é formada, basicamente, por um módulo de compensação de movimento escalável, o qual é composto por dois grandes blocos, um responsável pela decodificação da camada base e outro pela decodificação da camada de enriquecimento. Na arquitetura desenvolvida neste trabalho, estes dois blocos possuem como um componente instanciado o compensador de movimento não escalável desenvolvido em (AZEVEDO, 2006). Esses dois blocos são ainda instâncias de um bloco maior, o qual também implementa as demais operações necessárias à predição de movimento entre camadas. Estas operações são: a co-localização, (representada pelo número “1” na Figura 1.1) que objetiva encontrar o bloco co-localizado na camada base, ou seja, o bloco que será usado para predizer os dados de movimento da camada de enriquecimento; a escrita e a leitura da memória de dados de movimento (representada pelo número “2” na Figura 1.1), que visa gravar na memória os dados de movimento decodificados na camada base, para que sejam lidos e utilizados na predição dos dados de movimento da camada de enriquecimento; e o escalonamento (representado pelo número “3” na Figura 1.1) que é responsável por escalonar os vetores de movimento lidos da memória e que foram decodificados na camada base, para que sejam usados na camada de enriquecimento. Por vezes, após o escalonamento, é realizado um refinamento nos vetores de movimento da camada de enriquecimento, como será explicado no decorrer dessa dissertação.

(24)

23

Figura 1.1: Predição de movimento entre camadas - módulo do compensador de movimento escalável: (1) co-localização; (2) memória da camada base; (3)

escalonamento de vetores.

A predição intra entre camadas é composta por dois módulos principais: (1) o filtro redutor de efeito de bloco, que é um filtro adaptativo ao contexto, bastante similar ao filtro usado no padrão H.264/AVC, e visa ampliar a qualidade subjetiva do quadro após a codificação e (2) o upsampling, que tem por objetivo adequar a resolução da imagem para que esta possa ser usada na camada de enriquecimento.

O módulo do filtro redutor de efeito de bloco, como apresentado na Figura 1.2, tem a função de suavizar os efeitos de bloco ocasionados pelas altas constantes de quantização utilizadas durante a codificação do vídeo. Tal filtro é usado com a finalidade de aperfeiçoar a aparência dos quadros decodificados na camada base, para que sejam sobreamostrados, através da aplicação da operação de Upsampling, e usados na decodificação da camada de enriquecimento.

(25)

24

Figura 1.2: Predição de intra entre camadas: módulo do filtro redutor de efeito de bloco.

O módulo de Upsampling realiza uma filtragem horizontal e, logo após, uma filtragem vertical sobre os pixels de uma imagem, visando adaptar a resolução das imagens da camada base (Figura 1.3 (a)) à resolução da camada de enriquecimento (Figura 1.3 (b)), conforme se pode visualizar através da ilustração apresentada na Figura 1.3.

Figura 1.3: Predição de intra entre camadas: módulo de upsampling - (a) camada base filtrada; (b) camada base redimensionada.

As arquiteturas de hardware desenvolvidas foram descritas em VHDL e foram sintetizadas tanto para FPGA, quanto para standard-cells. A síntese FPGA foi direcionada para o dispositivo XC4VLX200 da família Virtex 4 da Xilinx (XILINX,

(26)

25

2009) e gerada a partir da ferramenta ISE, também da Xilinx (XILINX, 2009). A síntese para standard-cells utilizou a tecnologia CMOS TSMC 0.18µm (TSMC, 2008) e foi gerada a partir da ferramenta Leonardo Spectrum da Mentor Graphics (MENTOR, 2008). Tais arquiteturas foram validadas com base no software de referência do padrão H.264/SVC, em sua versão 9.12.2 (JSVM, 2008).

Para realizar a validação, foram inseridas funções no software de referência, com o objetivo de extrair os valores de entrada e saída de cada um dos módulos desenvolvidos neste trabalho. Logo após, simulações utilizando a ferramenta ISE da Xilinx foram realizadas para verificar o correto funcionamento de módulos mais simples que compunham as arquiteturas desenvolvidas. Após a integração desses módulos, simulações mais completas foram feitas usando o software ModelSim da Mentor

Graphics (MENTOR,2008). Para utilizar os dados capturados do software de referência

nessas simulações, foram escritos test benches, os quais, além de inserir estímulos de entrada nas arquiteturas testadas, também armazenavam as saídas dessas arquiteturas em arquivos texto, possibilitando, assim, a comparação entre as saídas obtidas por cada arquitetura e as saídas extraídas do software de referência, de modo a verificar se os resultados gerados pelas arquiteturas estavam corretos.

Os resultados obtidos, tanto na síntese para FPGA, quanto para standard-cells, mostraram que todas as arquiteturas implementadas estão aptas a processar vídeos QVGA e VGA em tempo real, atingindo com sobras 30 quadros por segundo. Estimativas também mostram que as arquiteturas estariam aptas a processar vídeos HDTV (1920x1080 pixels) em tempo real.

1.3

Organização do texto

A estrutura do texto desta dissertação está organizada como segue.

No capítulo dois são apresentados alguns conceitos importantes sobre codificação de vídeo, uma introdução ao padrão H.264/AVC e, por fim, o padrão H.264/SVC, os conceitos principais sobre codificação escalável e os tipos de escalabilidade que o padrão H.264/SVC suporta.

No capítulo três, a escalabilidade espacial do padrão H.264/SVC é apresentada em mais detalhes. São apresentadas suas principais características e os mecanismos de predição entre camadas que ela possui, os quais são o foco desta dissertação.

O capítulo quatro apresenta as contribuições deste trabalho, apresentando as arquiteturas desenvolvidas em hardware para o decodificador H.264/SVC. Estão descritas as arquiteturas desenvolvidas para a predição de movimento entre camadas (compensador de movimento escalável) e para a predição intra entre camadas (filtro redutor de efeito de bloco e upsampling).

O capítulo cinco apresenta a metodologia de validação das arquiteturas desenvolvidas.

O capítulo seis apresenta os resultados de síntese obtidos, a avaliação destes resultados e a comparação com os trabalhos relacionados.

Finalmente, no capítulo sete são apresentadas as conclusões desta dissertação e alguns dos trabalhos futuros que pretende-se realizar.

(27)
(28)

2

CODIFICAÇÃO DE VÍDEO E O PADRÃO H.264/SVC

Neste capítulo serão apresentados alguns conceitos principais sobre codificação de vídeo, o que facilitará a compreensão dos capítulos seguintes. Além disso, o padrão de compressão de vídeo H.264/AVC é apresentado resumidamente. Finalmente, é apresentado o padrão H.264/SVC e suas principais características.

2.1

Introdução a Codificação de Vídeo

A demanda por serviços multimídia tem aumentado rapidamente enquanto a expectativa por qualidade para estes serviços acompanha tal crescimento.

Para atingir uma maior eficiência no processo de armazenamento e transmissão, sinais analógicos, tais como áudio, imagem e vídeo, são amostrados e digitalizados para sua transmissão e/ou armazenamento. Entretanto, esses dados digitalizados são muito volumosos, impossibilitando a transmissão de dados digitalizados de vídeo brutos, por exemplo, através de canais de comunicação com largura de banda limitada ou mesmo o armazenamento destes vídeos em dispositivos com capacidade regular. Assim, a compressão de dados é essencial para viabilizar a transmissão e o armazenamento de sinais digitais a um custo razoável (CHEN, 2002).

Um vídeo digital é formado por uma sequência de imagens, chamadas de quadros. Cada ponto em um quadro é chamado de pixel e, para vídeos coloridos, estão associados a cada pixel três diferentes amostras de cores. Então, o quadro de um vídeo colorido é formado por três matrizes de amostras, sendo que cada matriz contém um tipo de informação de cor. Para facilitar o processamento de cada uma das matrizes de cores, estas são divididas em matrizes menores, chamadas de blocos, cujos tamanhos típicos são 16x16, 8x8 ou 4x4 amostras.

Vídeos digitais não comprimidos apresentam um alto grau de redundância de dados, de modo que, uma grande porção dos dados existentes em uma sequência de vídeo pode ser desconsiderada, sendo possível representá-lo com uma quantidade de bits consideravelmente menor. A codificação de vídeo visa, em síntese, reduzir o máximo possível essa redundância presente nos vídeos digitais (GHANBARI, 2003).

Os codificadores de vídeo atuais utilizam um misto de diferentes técnicas de compressão e, por isso, são chamados de codificadores híbridos (CHEN, 2002). Um codificador híbrido é composto por três estágios de processamento. O primeiro estágio inclui as operações de estimativa e compensação de movimento e a transformada bidimensional. Estas três operações objetivam explorar a correlação temporal e espacial existentes em uma sequência de vídeo, otimizando o desempenho dos dois estágios seguintes, formados pelas operações de quantização e codificação de entropia, respectivamente (CHEN, 2002).

Assim, a codificação híbrida visa eliminar as redundâncias temporal, espacial e de entropia de um vídeo (GHANBARI, 2003). A redundância temporal é explorada através da estimativa e compensação de movimento. Alguns padrões mais modernos de

(29)

28

codificação de vídeo possuem uma operação de codificação intraquadro, que visa explorar a redundância espacial presente em um quadro do vídeo. Neste caso, para cada bloco do quadro atual, ou é utilizada a estimativa e compensação de movimento, ou é utilizada a predição intraquadro. A correlação espacial existente no sinal residual gerado pela estimativa e compensação de movimento ou pela predição intraquadro é, adicionalmente, removida através do uso de transformadas (como a Transformada Discreta do Cosseno - DCT) e a quantização (CHEN, 2002). Finalmente, a redundância entrópica é explorada através da codificação de entropia, onde são usadas técnicas como a codificação de Huffmann e a codificação aritmética (BHASKARAN, 1997).

2.2

O Padrão H.264/AVC

Esta seção apresentará, brevemente, as características principais do padrão H.264/AVC, apresentando também os principais módulos que o compõem.

O padrão de compressão de vídeo H.264/AVC (Advanced Video Coding) (ITU-T, 2005), também chamado de MPEG-4 Parte 10, foi aprovado em outubro de 2003 (ITU-T, 2003). Tal padrão foi desenvolvido pelo Joint Video Team (JVT) (ITU-(ITU-T, 2008), um consórcio entre o VCEG (Video Coding Experts Group) da ITU (ITU-T, 2008a) e o MPEG (Moving Pictures Experts Group) da ISO (ISO/IEC, 2008), com o objetivo de criar um padrão com desempenho superior aos padrões anteriores. Este objetivo, de obter um padrão superior em taxa de compressão em relação aos padrões existentes foi alcançado. O custo desta superioridade foi um significativo aumento na complexidade computacional (AGOSTINI, 2007).

No padrão H.264/AVC, os macroblocos são organizados em slices (ITU-T, 2005) dentro de cada quadro. Um quadro codificado é formado por um número determinado de macroblocos, cada um contendo 16x16 amostras de luminância, associadas às amostras de crominância (RICHARDSON, 2003).

Existem três tipos de macroblocos definidos pelo padrão H.264/AVC: I, P e B. Macroblocos do tipo I são aqueles que são gerados a partir da predição intraquadros, ou seja, não dependem de quadros anteriormente codificados e a predição acontece considerando amostras do próprio quadro atual. Macroblocos do tipo P são aqueles gerados a partir da predição interquadros (estimativa de movimento e compensação de movimento) e sua predição é realizada utilizando como referência amostras de quadros já codificados. A bi-predição é uma das ferramentas de predição que garante elevadas taxas de compressão no padrão H.264/AVC e sua codificação é realizada através de macroblocos do tipo B. Neste caso, a predição é gerada considerando, simultaneamente, amostras de dois quadros previamente codificados, passados ou futuros, na sequência de vídeo (WIEGAND, 2003).

Os quadros de referência são organizados em duas listas, chamadas pelo padrão de lista 0 e lista 1 (ITU-T, 2003). Um macrobloco tipo P utiliza como referência apenas um dos quadros armazenados na lista 0. Um macrobloco do tipo B utiliza dois quadros como referência, um armazenando na lista 0 e outro na lista 1. Um macrobloco do tipo I não utiliza quadros de referência (AGOSTINI, 2007).

O padrão H.264/AVC está dividido em perfis, onde cada perfil corresponde a um conjunto de funções de codificação suportadas por ele. O perfil descreve o conjunto de funcionalidades do codificador e do decodificador para cada caso. Os perfis definidos pelo padrão são: Baseline, Main, Extended e High (SULLIVAN, 2004).

(30)

29

2.2.1 Principais módulos do Codec H.264/AVC

Esta seção apresentará os principais módulos do codec H.264/AVC. O diagrama em módulos do codificador e do decodificador H.264/AVC são apresentados na Figura 2.1 e na Figura 2.2, respectivamente.

O codificador H.264/AVC apresentado na Figura 2.1 é formado pelos seguintes módulos: predição interquadros, composta pelo módulo de estimativa de movimento (ME) e pelo módulo de compensação de movimento (MC); predição intraquadro; transformadas diretas e inversas (T e T-1); quantização direta e inversa (Q e Q-1); filtro redutor de efeito de bloco e codificação de entropia (RICHARDSON, 2003).

Figura 2.1: Diagrama em blocos de um codificador H.264 (AGOSTINI, 2007). A Figura 2.2 apresenta o decodificador H.264/AVC. Os módulos que formam o decodificador H.264/AVC são: predição interquadros (MC), predição intraquadro, transformadas inversas (T-1), quantização inversa (Q-1), filtro redutor de efeito de bloco e decodificação de entropia (RICHARDSON, 2003).

Figura 2.2: Diagrama em blocos de um decodificador H.264 (AGOSTINI, 2007). O módulo de codificação interquadros explora as semelhanças entre blocos de quadros vizinhos e o módulo de predição intraquadro explora as semelhanças entre blocos vizinhos de um mesmo quadro.

A predição de um bloco, utilizando predição interquadros ou intraquadros, gera um bloco de resíduos, o qual é obtido através da diferença entre as amostras do bloco original e os valores do bloco predito. Encontrado o bloco de resíduos, ele é processado pelo módulo de transformadas (módulo T), o qual realiza a transformação dos valores do domínio espacial para o domínio das frequências e, logo após, o módulo de

Quadros de Referência Q-1 T-1 Quadro Atual (reconstruído) MC Decodificação de Entropia Predição intraquadros Filtro Predição Interquadros

+

Predição intraquadros ME Q Codificação de Entropia Quadro Atual (original) Quadros de Referência T Q-1 T-1 Quadro Atual (reconstruído) Filtro Predição Interquadros MC

+

(31)

30

quantização pode ser usado para reduzir a redundância espacial contida nos resíduos, mas já no domínio das freqüências (RICHARDSON, 2003).

A quantização é, em síntese, uma divisão inteira sobre os coeficientes gerados pelo módulo T e, por isso, esta é uma operação que gera perdas irreversíveis no processo de codificação, mas as perdas são controladas e podem mesmo nem serem percebidas pelo sistema visual humano.

Por fim, a codificação de entropia utiliza diversos métodos de codificação sem perdas como, por exemplo, a codificação de comprimento variável adaptativa ao contexto (CAVLC), obtendo significativas taxas de compressão (WIEGAND, 2003).

Os módulos do padrão H.264/AVC mais importantes para este trabalho são a predição interquadros e a predição intraquadros do decodificador H.264/AVC, uma vez que é a informação gerada por estes módulos que poderá ser reaproveitada na predição entre camadas da decodificação escalável espacial, para a qual foram desenvolvidas as arquiteturas apresentadas nos próximos capítulos deste trabalho. Por este motivo, estes dois módulos serão apresentados em maiores detalhes nos próximos parágrafos. Descrições detalhadas dos demais módulos formadores de um codificador ou um decodificador H.264 são encontradas em (RICHARDSON, 2003; AGOSTINI, 2007).

A predição interquadros no decodificador H.264/AVC é formada, conforme mencionado anteriormente, apenas pelo módulo de compensação de movimento (Figura 2.2). De modo que, a compensação de movimento deve ser capaz de reconstruir a predição do bloco atual a partir dos quadros de referência e dos vetores de movimento gerados pela estimativa de movimento na etapa de codificação (RICHARDSON, 2003). Na compensação de movimento do padrão H.264/AVC é possível utilizar tamanhos de blocos variáveis, permitindo o uso de partições de macrobloco e partições de submacroblocos de tamanhos 16x16, 16x8, 8x16, 8x8, 4x8, 8x4 ou 4x4 pixels. O padrão H.264/AVC permite, ainda, a utilização de múltiplos quadros de referência (WIEGAND, 2003). A compensação de movimento do padrão H.264/AVC utiliza, ainda, uma precisão de quarto de pixel para os vetores de movimento, pois geralmente, a movimentação que ocorre de um quadro para o outro não se limita a posições inteiras de

pixel. Assim, o padrão H.264/AVC permite a utilização de vetores de movimento com

valores fracionários de meio pixel e de quarto de pixel (AZEVEDO, 2006). A compensação de movimento segundo o padrão H.264/AVC suporta, ainda, a predição bi-preditiva, que permite que um bloco seja predito a partir de dois quadros de referência, um quadro da lista 0 e um quadro da lista 1 (ITU-T, 2005). Em função da alta correlação entre blocos vizinhos, os índices dos quadros de referência e os vetores de movimento gerados pela ME, são inferidos a partir dos índices de referência e dos vetores de movimento dos blocos vizinhos previamente codificados. Esses vetores são chamados de vetores de movimento preditos (ITU-T, 2005). Assim, somente a diferença entre o vetor de movimento do bloco atual e o vetor de movimento predito, chamada de vetor de movimento diferencial (mvd), é codificada e transmitida no bitstream (RICHARDSON, 2003). No decodificador, a MC deve ser capaz de gerar os vetores e índices de referência de cada bloco, a partir dos dados contidos no bitstream e das informações dos blocos da vizinhança.

Na predição intraquadros, a codificação de cada bloco de um quadro é baseada na codificação de seus blocos vizinhos, associando suas similaridades e codificando somente suas diferenças. A predição intraquadros na decodificação (Figura 2.2) deve ser

(32)

31

capaz de reconstruir os blocos do quadro atual a partir dos blocos previamente decodificados deste mesmo quadro e das informações contidas no bitstream.

A predição intraquadros é dividida em dois grupos: a predição de amostras de luminância, que é realizada sobre blocos de tamanho 4x4 ou de 16x16 pixels, e a predição de amostras de crominância, que é realizada sobre blocos de tamanho 8x8

pixels. Existem nove modos distintos para a realização da predição de amostras de

luminância em blocos 4x4 e quatro modos para predição de blocos 16x16 (RICHARDSON, 2003). Se a região da imagem é mais homogênea, a predição intraquadros de blocos 16x16 alcançará o melhor resultado de compressão. Se esta região for mais heterogênea, o melhor resultado será obtido pela predição intraquadros de blocos 4x4. A predição para amostras de crominância é similar à predição de amostras de luminância de blocos 16x16, já que os quatro modos utilizados são os mesmos, somente a numeração desses modos é que é alterada.

2.3

O Padrão H.264/SVC

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.

(33)

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

(34)

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

(35)

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.

(36)

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.

(37)

36

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

3.1

Predição Residual entre Camadas

A predição residual entre camadas é usada para reduzir a amplitude dos resíduos após a predição interquadros (HUANG, 2007). Este tipo de predição entre camadas pode ser aplicado a todo macrobloco que foi codificado utilizando predição interquadros (SCHWARZ et al., 2007).

Em função da predição de movimento entre camadas, é comum que camadas espaciais consecutivas apresentem informações de movimento semelhantes e, deste modo, os resíduos de camadas consecutivas tendem a exibir fortes correlações. Entretanto, também é possível que camadas consecutivas apresentem informações de movimento independentes e, nestes casos, os resíduos de duas camadas consecutivas podem apresentar uma correlação reduzida. Por isso, a predição residual é realizada adaptativamente em nível de macrobloco (HUANG, 2007).

A utilização da predição residual é definida através da ativação de um flag chamado

residual_prediction_flag. Este flag é ativado (residual_prediction_flag igual a 1)

quando uma operação de sobreamostragem é realizada no sinal residual do bloco co-localizado na camada de referência. Assim, após o upsampling do sinal residual da camada de referência, este é utilizado para predizer o sinal residual do bloco da camada de enriquecimento (SCHWARZ et al., 2007).

3.2

Predição de Movimento entre Camadas

A predição de movimento entre camadas é usada para reduzir a redundância de dados de movimento entre as camadas, tais como: particionamento de macrobloco, índice de quadro de referência e vetores de movimento.

Referências

Documentos relacionados

Então, em Belém, há principalmente duas situações que podem provocar eventos extremos: Na estação chuvosa, quando a grande escala (ZCIT) está atuando sobre a região, e

forficata recém-colhidas foram tratadas com escarificação mecânica, imersão em ácido sulfúrico concentrado durante 5 e 10 minutos, sementes armazenadas na geladeira (3 ± 1

Não fez Com duas soluções uma sofrendo redução e a outra oxidação, em um circuito fechado com fio condutor metálico e uma ponte salina é possível produzir uma pilha química

em efeitos superiores, contudo, considerando-se a realização do experimento apenas no Rio Grande do Sul e as particularidades de cada região produtiva, a extrapolação dos

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

(NOME COMPLETO), nacionalidade, estado civil, profissão, portador(a) da carteira de identidade RG n.º (número de RG), inscrito(a) no CPF sob n.º (número de CPF),

Dando continuidade ao que estabelece o artigo já citado, o 2º artigo faz menção ao Manual de Boas Práticas de Atenção ao Parto e o Nascimento da