// Exponential-Golomb – código de comprimento variável padrão na compressão de vídeo
Utilizado nos codecs H.264/AVC e H.265/HEVC.
Valores diferentes de k para distribuições diferentes.
Mapeamento incorporado para inteiros com sinal.
Códigos Exp-Golomb de ordem k codificam um inteiro não negativo n assim: 1) Some 1 a n para obter codeNum, 2) Divida por 2^k para obter o quociente q e o resto r, 3) Escreva q zeros, depois 1 e em seguida r em k bits. Para k=0, isso equivale a Elias Gamma. Para inteiros com sinal, o mapeamento é: n>0 → 2n-1, n≤0 → -2n.
Ordem k=0 (padrão): 0 → 1 1 → 010 2 → 011 3 → 00100 Ordem k=1: 0 → 10 1 → 11 2 → 010 3 → 011 Modo com sinal (k=0): 0 → 1 (mapeia para 0) 1 → 010 (mapeia para 1) -1 → 011 (mapeia para 2) 2 → 00100 (mapeia para 3)
Exp-Golomb (Exponential-Golomb) é um código universal de comprimento variável usado amplamente em padrões de compressão de vídeo como H.264 e H.265. Ele generaliza o código Elias Gamma com um parâmetro k que permite adaptar-se a diferentes distribuições de dados.
k=0 (Exp-Golomb padrão) funciona bem para inteiros pequenos com distribuição aproximadamente exponencial. Valores maiores de k são melhores para inteiros grandes ou distribuições mais uniformes. Codecs de vídeo costumam usar k=0 para elementos de sintaxe e k adaptativo para resíduos.
Exp-Golomb é ideal para vídeo porque: 1) é simples de implementar em hardware, 2) não requer tabelas de consulta, 3) combina bem com a distribuição estatística dos dados de vídeo, 4) fornece boa compressão para vetores de movimento e coeficientes de transformada.
Comparado a Huffman: mais simples, sem tabelas, mas menos ótimo. Comparado à codificação aritmética: muito mais simples, porém com menor compressão. Exp-Golomb equilibra simplicidade e eficiência, perfeito para codificação de vídeo em tempo real.