Otimizações algorítmicas e desenvolvimento arquitetural para as DCTs do HEVC - Jeske, Ricardo Garcia (2013)
A codificação de vídeos é uma área em constante evolução, já que são cada vez mais comuns os dispositivos capazes de processar vídeos digitais. A eficiência de um codificador de vídeo é dada pela relação entre taxa de bits e qualidade do vídeo comprimido e, para ampliar a eficiência nestes requisitos cruzados, os padrões de codificação de vídeo têm utilizado ferramentas cada vez mais complexas, gerando um elevado custo computacional. Este trabalho está focado nas ferramentas de codificação de vídeos do padrão HEVC, que ainda está em desenvolvimento. Mais especificamente, este trabalho está focado nas transformadas discretas do cosseno de tamanho variável definidas pelo padrão HEVC. São definidos quatro tamanhos de transformadas DCT 2-D no HEVC: 32x32, 16x16, 8x8 e 4x4, e estas transformadas, além de ser uma das novidades do padrão, também ampliam a sua eficiência e complexidade. Este trabalho apresenta contribuições em duas frentes: (a) no desenvolvimento de um algoritmo capaz de realizar otimizações nos algoritmos das DCTs (com a transformação de multiplicações em somas e deslocamentos e com o compartilhamento de subexpressões) e a implementação em software deste algoritmo para automatizar a geração das otimizações e (b) o desenvolvimento em hardware dos algoritmos otimizados, visando baixo custo e elevada taxa de processamento. Estas contribuições são relevantes especialmente quando dispositivos móveis, alimentados por bateria, são considerados. As otimizações propostas permitiram, no melhor caso (DCT 32x32) uma redução expressiva no número de operações aritméticas de 22 mil multiplicações e 25 mil somas ou subtrações para apenas 39 mil somas ou subtrações. Se analisadas as somas ou subtrações de um bit utilizadas, foi possível gerar um ganho superior a 59%. A partir dos algoritmos otimizados, foram desenvolvidas as arquiteturas, com foco em FPGAs Altera. Foram cinco as arquiteturas de DCTs 2-D desenvolvidas, uma para cada tamanho de transformada e uma capaz de processar todos os tamanhos de transformada. Em todos os casos as transformadas foram projetadas para usar a propriedade da separabilidade, ou seja, foram usadas duas instâncias de uma arquitetura de transformada 1-D e uma matriz de transposição. As transformadas 1-D foram desenvolvidas de forma puramente combinacional. Para todas as transformadas foi possível atingir taxas de processamento elevadas, capazes de suportar o processamento de vídeos de alta resolução.