Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em...

35
Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador: Sergio Bampi Co-orientador: Luciano Agostini

Transcript of Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em...

Page 1: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware

Segundo o Padrão H.264/AVC

Trabalho de Diplomação em Engenharia de Computação

2006/2

BRUNO ZATTOrientador: Sergio Bampi

Co-orientador: Luciano Agostini

Page 2: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC2/35

Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC

Introdução H.264/AVC Compensação de Movimento (MC) Predição de Vetores Arquitetura Validação Prototipação Resultados comparativos Conclusão

Page 3: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC3/35

Introdução

Este trabalho está inserido nos esforços de pesquisa para a definição do SBTVD (Sistema Brasileiro de Televisão Digital)

Elevado interesse acadêmico e comercial no H.264/AVC;

Interesse do mercado em HDTV; Necessidade do suporte de HW.

Page 4: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC4/35

H.264/AVC

H.264/AVC é o mais novo padrão de compressão de vídeo definido pela ITU-T e ISO/IEC;

Orientado a macroblocos; 16x16 pixels.

Utiliza codificação diferencial; Espaço de cores YCbCr; Sub-amostragem de cores 4:2:0;

Page 5: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC5/35

H.264/AVC 4 Perfis

Baseline; Extended High; Main:

Quadros B; Predição ponderada (WP); Vídeo Entrelaçado; CABAC.

Tipos de Quadros do Perfil Main:

Intra (I); Preditivo (P); Bi-Preditivo (B).

Page 6: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC6/35

H.264/AVC Codificação de Entropia Transformadas e Transformadas Inversas (T-

1); Quantização e Quantização Inversa (Q-1); Predição Intra; Predição Inter (ME / MC); Filtro de Deblocagem.

Quadros

Referência

Q-1+ T-1Quadro

Atual

MC

Decod. de Entropia

INTRA

Filtro

INTER

Page 7: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC7/35

Predição Inter-Frame (ME)

Vetor de Movimento

Quadro de Referência

Quadro de Atual

Page 8: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC8/35

Predição Inter-Frame (MC)Quadro de Referência

Quadro de Atual Reconstruído

Page 9: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC9/35

Predição Inter-Frame (MC)Quadro de Atual

Quadro de Atual Reconstruído

Page 10: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC10/35

Módulos do MC

Frame Memory Access

Motion Vector

Prediction

Sample Interpolation

MC

Page 11: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC11/35

Compensação de Movimento (MC)

Múltiplos tamanhos de bloco; Múltiplos quadros de referências; Vetores apontando para fora da

imagem; Precisão de ¼ de amostra; Bi-predição; Predição ponderada.

Page 12: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC12/35

MC – Tamanho Variável de Blocos

0

18

16x8

16

8 0 1

2 3

8x8

8 8

8

8

8x8

08

8

0

1

8x4

8

4

4

4

4

4x4

0 1

2 3

4 4

8

4

4x8

0 1

4

8

8x16

8

100

16

16

16x16

0

Page 13: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC13/35

MC – Múltiplos Quadros de Referência

Quadro AtualQuadros de Referências

PassadosQuadro de Referências

Futuros

Lista 0 Lista 1

Page 14: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC14/35

Predição de Vetores de MovimentoPredição Padrão

D

A

B C

E

EA

D B C

0 1

2 3

4 5

6 7

8 9

10 11

12 13

14 15

Page 15: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC15/35

Predição de Vetores de MovimentoPredição Direta Espacial

Quadro Atual

Quadro Co-Localizado

Testa a vizinhança; Menor positivo; Testa bloco co-

localizado; Zera vetores quando:

Índices de ref. lista 0 e 1 são negativos;

Índice de ref. co-localizados igual a 0;

MVs co-localizados entre 1 e -1;

Utiliza predição padrão;

Partições 4x4.

Zerar vetores -> Movimento nulo;

Índice de Ref negativo -> Não existe.

Page 16: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC16/35

Predição de Vetores de MovimentoPredição Direta Temporal

td

tb

Referência Lista 0

Referência Lista 1

Quadro Atual

Tempo

MVCol

MVL0

MVL1Bloco Direto B

Bloco Co-localizado

Referência Lista 0:

Ref. co-localizada remapeada;

Referência Lista 1 zerada;

Blocos 4x4.

Page 17: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC17/35

Predição de Vetores de MovimentoPredição de Blocos Skip

Blocos que não mandam informações explícitas de MVs e resíduo;

Em slices P utilizam a predição padrão; Referência 0 da lista 0; 16x16;

Em slices B utilizam predição direta; Inferido 4x4.

Page 18: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

18/35

MVP Software Reconhecimento do problema; Auxílio ao desenvolvimento do

HW; C++; Desenvolvido de forma

incremental; Padrão; Espacial; Temporal.

Validação utilizando vídeo Foreman QCIF;

100 quadros padrão; 100 quadros espacial IPBBP; 100 quadros temporal IPBBP.

Dados do software de referência

Page 19: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC19/35

Arquitetura do MVP

C

0 1

2 3

B B

A

A

D0 1

2 3

4 5

6 7

8 9

10 11

12 13

14 15

B B B B

A

A

A

A

D C

Page 20: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

20/35

MEMORYREFRESH

SET VECTORS

SAVEMV

CONTROLFOR

CONTROLSUB-FOR

STANDARD SPATIAL TEMPORAL

PRE_PROCSPATIAL

WAITING

TESTMB_TYPE

RESET

0 1

2 3

4 5

6 7

8 9

10 11

12 13

14 15

1

1

2

6

1

1

7 4 6

4

1

16

Arquitetura MVP

Quadro co-localizado é armazenado na memória externa.

Page 21: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

21/35

Extensão Predição Direta Temporal

TEMPORAL0

TEMPORAL1

TEMPORAL2

TEMPORAL3

TEMPORAL4

TEMPORAL5

-

-

CLIP

CLIP

+ DIV

*

SHIFT

CLIP

+

‘16384’ ‘32’

Page 22: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC22/35

Descrição VHDL

7500 linhas de VHDL; 7 arquivos;

Xilinx ISE 8.1.

Page 23: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

23/35

Resultados de Síntese

149,5 MHz Clock

2 (1%)BRAMs

2119(7%)Registers

2244(8%)LUTs

3 (2%)Multiplicadores 133,9 MHzClock

3 (2%)BRAMs

3596 (13%)Registers

6221 (22%)LUTs

146,1 MHz Clock

3 (2%)BRAMs

3358 (12%)Registers

5961 (21%)LUTs

MVP Predição Padrão Lista 0

MVP Predição Padrão Lista 0 Lista 1

Predição Direta Espacial

MVP Predição Padrão Lista 0 Lista 1

Predição Direta Espacial

Predição Direta Temporal

Page 24: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

24/35

Resultados de DesempenhoSeqüência de Quadros

Pior caso(ciclos)

Nº de quadros HDTV no pior caso (quadros)

Caso médio(ciclos)

Nº de quadros HDTV no caso médio(quadros)

P 236 69 64 254B c/ pred. direta espacial

242 67 161 101

B c/ pred. direta temporal

236 69 100 162

I-P-B-B-P c/ direta espacial

242 67 127 128

I-P-B-B-P c/ direta temporal

236 69 88 185 Mesmo no pior caso, em todas as situações, a

arquitetura atinge o dobro do desempenho exigido para decodificar HDTV em tempo real.

Page 25: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC25/35

Validação Dados extraídos de sequência

reais de vídeo; Software de referência JM 9.5; Validação utilizando vídeo

Froreman QCIF; 100 quadros padrão; 100 quadros espacial IPBBP; 100 quadros espacial IPBBP.

Simulação Utilizando Mentor ModelSim;

Comparação de resultados por software;

Método apresentado em: ZATT, B.; AZEVEDO, A.; AGOSTINI, L.; BAMPI, S.

“Validação de uma arquitetura para compensação de movimento segundo o padrão H.264/AVC”.

IBERCHIP, 2006.

Page 26: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC26/35

Prototipação - Plataforma Placa de Prototipação XUP Virtex II

PRO: Digilent Inc.; Virtex II PRO FPGA;

30 k células lógicas; 2,5 Mb RAM; 136 18x18 multiplicadores; 2 PowerPC 405;

512 MB DDR; RS-232;

Ferramentas: Xilinx EDK/ISE.

Page 27: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC27/35

Prototipação

MVP

Placa

Power PC

Me

ria

Ext

ern

a

Interface RS-232

PC Host

FPGA

Page 28: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC28/35

Síntese dos Protótipos

3 (2%)Multiplicadores 41,2 MHzClock

52 (38%)BRAMs

6313 (23%)Registers

8580 (31%)LUTs

40 MHz Clock

52 (38%)BRAMs

5994 (21%)Registers

8107 (29%)LUTs MVP Predição Padrão Lista 0 Lista 1

Predição Direta Espacial

MVP Predição Padrão Lista 0 Lista 1

Predição Direta Espacial

Predição Direta Temporal Incluindo todos os wrappers necessários à prototipação;

Degradação na freqüência de operação é função dos wrappers.

Page 29: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC29/35

Implementações Comparativas - SW Plataforma x86 / Linux

Pentium 4 HT @ 3,2 GHz; 1 GB DDR; White Box Linux; G++ 3.2.3; GNU Profiler.

Plataforma Mac / Mac OS PowerPC G4 7450 @ 733

MHz; 512 MB RAM; Mac OS X; G++ 3.2; GNU Profiler.

Plataforma Sun / SunOS UltraSPARC III+ @ 900 MHz; 4 GB RAM; SunOS 5.9; G++ 3.3.2; GNU Profiler.

Porque implementações em SW?

Page 30: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

30/35

Standard Cell Standard Cell

TSMC 0,18 µm Típica.

Gates 36690

Clock 227,8

MVP Predição Padrão

Lista 0 MVP Predição Padrão

Lista 0 Lista 1

Predição Direta Espacial

MVP Predição Padrão Lista 0 Lista 1

Predição Direta Espacial

Predição Direta Temporal

Gates 46886

Clock 129,3

Gates 17454

Clock 227,1

Page 31: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC31/35

Resultados ComparativosIPBBP diretaespacial

IPBBP direta temporal

FPGAFreqüência

(MHZ)146 MHZ 133 MHZ

Quadros HDTV / s 139 185

x86Freqüência

(MHZ)3200 MHZ 3200 MHZ

Quadros HDTV / s 40 60

SunFreqüência

(MHZ)900 MHZ 900 MHZ

Quadros HDTV / s 5,5 8,6

MacFreqüência

(MHZ)733 MHZ 733 MHZ

Quadros HDTV / s 5,5 8

ASICFreqüência

(MHZ)227 MHZ 129 MHZ

Quadros HDTV / s 219 179

Page 32: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC32/35

Resultados Comparativos

HW tende a não degradar seu desempenho quando integrado a outros módulos;

Em SW, devido a natureza serial dos GPPs, quando rodando outros módulos do decodificador, o desempenho a diminuir consideravelmente;

Apesar da natureza serial do MVP, é necessário um HW para esta função;

SW em um processador embarcado não atingiria o desempenho necessário.

Page 33: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC33/35

Literatura Atual

Wang’03

Deng’04

Chen’04

Wang’05

Li ’06

Arq. Propost

a

MVP SW - Incompleto

HW* HW** HWMain

Freq.

629 MHz

153 MHz

- 275 MHz

150 MHz

100 MHz

Tabela extraída de Li ’06.

Única solução, em HW, completa de MVP no Perfil Main do H.264/AVC presente na literatura.

Page 34: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware Segundo o Padrão

H.264/AVC34/35

Conclusão

Arquitetura para o Preditor de Vetores de Movimento (MVP) para o padrão H.264/AVC perfil Main;

Arquitetura apresentada em detalhes; Implementação em HW para FPGA e

Standard Cell; Implementação em SW para x86, Sun e Mac; A solução é capaz de decodificar HDTV

(1920x1080) em tempo real a 30 quadros por segundo;

Não foi encontrada descrição de arquiteturas semelhantes na literatura atual.

Page 35: Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC Trabalho de Diplomação em Engenharia de Computação 2006/2 BRUNO ZATT Orientador:

Preditor de Vetores de Movimento em Hardware

Segundo o Padrão H.264/AVC

Trabalho de Diplomação em Engenharia de Computação

2006/2

BRUNO ZATTOrientador: Sergio Bampi

Co-orientador: Luciano Agostini

Obrigado!Perguntas?