350 likes | 457 Views
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
E N D
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 • 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/AVC
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/AVC
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/AVC
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/AVC
INTER Quadros Referência MC INTRA Quadro Atual Filtro T-1 Q-1 Decod. de Entropia + 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. Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição Inter-Frame (ME) Quadro de Referência Quadro de Atual Vetor de Movimento Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição Inter-Frame (MC) Quadro de Atual Reconstruído Quadro de Referência Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição Inter-Frame (MC) Quadro de Atual Reconstruído Quadro de Atual Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Módulos do MC MC Frame Memory Access Motion Vector Prediction Sample Interpolation Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
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/AVC
16 8 8 16 8 8 8 0 0 1 8 0 0 0 1 16 8 1 2 3 8 16x16 8x16 16x8 8x8 8 4 4 8 4 4 0 4 4 0 1 0 1 8 0 8 4 1 4 2 3 8x8 4x8 8x4 4x4 MC – Tamanho Variável de Blocos Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
MC – Múltiplos Quadros de Referência Lista 0 Lista 1 Quadro Atual Quadros de Referências Passados Quadro de Referências Futuros Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição de Vetores de MovimentoPredição Padrão 1 0 4 5 D B C 3 2 7 6 A E 8 12 9 13 11 15 10 14 D B C A E Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição de Vetores de MovimentoPredição Direta Espacial • 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. Quadro Atual Quadro Co-Localizado • Zerar vetores -> Movimento nulo; • Índice de Ref negativo -> Não existe. Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Predição de Vetores de MovimentoPredição Direta Temporal Referência Lista 0 Quadro Atual Referência Lista 1 • Referência Lista 0: • Ref. co-localizada remapeada; • Referência Lista 1 zerada; • Blocos 4x4. MVCol Bloco Co-localizado MVL0 MVL1 Bloco Direto B td tb Tempo Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
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. Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
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
B D B C B B 1 A 0 4 5 B B C D 3 A 2 7 6 1 0 A A 8 12 9 13 3 2 A 11 15 A 10 14 Arquitetura do MVP Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Arquitetura MVP RESET 1 1 WAITING TEST MB_TYPE 2 PRE_PROC SPATIAL 6 CONTROL FOR 1 0 4 5 1 3 CONTROL SUB-FOR 2 7 6 1 8 12 9 13 7 4 6 STANDARD SPATIAL TEMPORAL 11 15 10 14 4 SET VECTORS 1 SAVE MV • Quadro co-localizado é armazenado na memória externa. 16 MEMORY REFRESH
Extensão Predição Direta Temporal TEMPORAL 0 TEMPORAL 1 TEMPORAL 2 TEMPORAL 5 TEMPORAL 3 TEMPORAL 4 ‘16384’ ‘32’ - C L I P + D I V * + S H I F T C L I P - C L I P
Descrição VHDL • 7500 linhas de VHDL; • 7 arquivos; • Xilinx ISE 8.1. Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
LUTs 2244(8%) • MVP Predição Padrão • Lista 0 Registers 2119(7%) BRAMs 2 (1%) Clock 149,5 MHz LUTs 5961 (21%) • MVP Predição Padrão • Lista 0 • Lista 1 • Predição Direta Espacial Registers 3358 (12%) BRAMs 3 (2%) Clock 146,1 MHz LUTs 6221 (22%) • MVP Predição Padrão • Lista 0 • Lista 1 • Predição Direta Espacial • Predição Direta Temporal Registers 3596 (13%) BRAMs 3 (2%) Multiplicadores 3 (2%) Clock 133,9 MHz Resultados de Síntese
Resultados de Desempenho • Mesmo no pior caso, em todas as situações, a arquitetura atinge o dobro do desempenho exigido para decodificar HDTV em tempo real.
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/AVC
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/AVC
Prototipação PC Host Placa Interface RS-232 FPGA Memória Externa Power PC MVP Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
LUTs 8107 (29%) • MVP Predição Padrão • Lista 0 • Lista 1 • Predição Direta Espacial Registers 5994(21%) BRAMs 52 (38%) Clock 40 MHz LUTs 8580 (31%) • MVP Predição Padrão • Lista 0 • Lista 1 • Predição Direta Espacial • Predição Direta Temporal Registers 6313 (23%) BRAMs 52 (38%) Multiplicadores 3 (2%) Clock 41,2 MHz Síntese dos Protótipos • 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/AVC
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 Sun / SunOS • UltraSPARC III+ @ 900 MHz; • 4 GB RAM; • SunOS 5.9; • G++ 3.3.2; • GNU Profiler. • Plataforma Mac / Mac OS • PowerPC G4 7450 @ 733 MHz; • 512 MB RAM; • Mac OS X; • G++ 3.2; • GNU Profiler. • Porque implementações em SW? Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
Standard Cell • Standard Cell • TSMC 0,18 µm Típica. • 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
Resultados Comparativos Preditor de Vetores de Movimento em Hardware Segundo o Padrão H.264/AVC
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/AVC
Literatura Atual • 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/AVC
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
Obrigado!Perguntas? 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