preditor de vetores de movimento em hardware segundo o padrão h.264/avc
DESCRIPTION
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. Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC. Introdução - PowerPoint PPT PresentationTRANSCRIPT
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
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
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.
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;
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).
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
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
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
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
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
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.
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
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
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
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.
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.
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.
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
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
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.
21/35
Extensão Predição Direta Temporal
TEMPORAL0
TEMPORAL1
TEMPORAL2
TEMPORAL3
TEMPORAL4
TEMPORAL5
-
-
CLIP
CLIP
+ DIV
*
SHIFT
CLIP
+
‘16384’ ‘32’
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.
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
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.
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.
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.
Preditor de Vetores de Movimento em Hardware Segundo o Padrão
H.264/AVC27/35
Prototipação
MVP
Placa
Power PC
Me
mó
ria
Ext
ern
a
Interface RS-232
PC Host
FPGA
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.
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?
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
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
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.
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.
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.
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?