Compressão de vídeo
# Compressão de vídeo

Compressão de vídeo envolve diminuir o tamanho de um vídeo (podendo ser com perda ou sem perda), utilizando-se de uma técnica que remove das imagens as informações que já foram projetadas.
Um vídeo (como arquivos do tipo AVI ou MPEG) é formado por várias imagens sendo projetadas. Cada imagem é chamada quadro e a quantidade de imagens projetadas por segundo é chamada cadência, medida em quadros por segundo (qps) ou frames por segundo (fps). Quanto mais quadros por segundo seu vídeo tiver, mais realista será a imagem. Vídeos normalmente trabalham com a mesma cadência da TV, que é de 30 quadros por segundo.
Uma maneira de diminuir o tamanho do vídeo é justamente diminuindo a quantidade de quadros por segundo. O tamanho do vídeo diminui, mas sua qualidade também: há “quebras de quadro”, isto é, os movimentos no vídeo ficam “truncados”, menos realistas.
Um exemplo de técnica é o qual o primeiro quadro deste vídeo é projetado integralmente, mas no próximo os pedaços da imagem que são idênticos ao quadro anterior são removidos, economizando uma grande quantidade de espaço, já que somente o primeiro quadro precisa estar completo e os demais são compostos somente da diferença entre o quadro anterior e o atual. Esses quadros incompletos são chamados quadros delta (delta frames).

## Técnicas de compressão
### Production Level Video

O PLV (Production Level Video) é uma técnica de compressão assímétrica para a codificação de video a cores que requer que a mesma seja feita pela Intel® ou por uma entidade licenciada pela mesma.
O RTV (Real Time Video) proporciona uma qualidade de video comparável à compressão JPEG e usa uma técnica de compressão simétrica e variável.
As técnicas de compressão DVI permitem a compressão do video com taxas de 80:1 até 160:1 e a sua visualização a cores e em tamanho real a 24 frames por segundo, enquanto que o JPEG só permite a visualização de uma imagem aceitável numa pequena janela.

### MPEG

No padrão MPEG os quadros delta podem ser classificados em quadros P (de “predictive”) ou quadros B (de “bidirecionais”). Os quadros P funcionam da maneira descrita, enquanto os quadros B podem ainda ter a diferença não só para o quadro anterior, mas também a diferença para o quadro seguinte na seqüência, daí o nome “bidirecional”.
O problema é que por conta desta técnica, não haveria como você usar os recursos de avanço e retrocesso do seu tocador de mídia, pois ele precisaria tocar o filme desde o início para poder construir uma imagem que esteja no meio do filme, já que no meio do filme só haverá a informação do que é diferente para o quadro anterior e não uma imagem completa.
Por isso, de tempos em tempos é necessário inserir um quadro completo (como o primeiro quadro do filme) para que os recursos de avanço e retrocesso possam ser usados. Esses quadros completos são chamados quadros-chave (key frames) ou quadros I (I-frames). Quanto mais quadros-chave seu vídeo tiver, maior ele será (pois mais imagens completas, que ocupam mais espaço, serão inseridas), mas em compensação mais pontos de avanço e retrocesso existirão. Você precisa de espera que o tocador chegue a um quadro-chave para que este consiga mostrar o vídeo; quanto menos quadros-chave o vídeo tiver mais frequente será este problema no seu vídeo.

### Perda de dados

Existem técnicas em que cada quadro é comprimido usando um algoritmo baseado em perda de dados, da mesma forma que ocorre com imagens no formato JPEG e áudio no formato MP3. Isso significa que o vídeo comprimido não tem a mesma qualidade do vídeo original.

## Princípios

Pode-se utilizar algoritmos para comprimir imagens e tratar cada de quadro de vídeo individualmente.
M-JPEG - Motion J-PEG
Taxas típicas entre 10:1 e 20:1 não são suficientes para vídeo
Formato 4:2:2 para vídeo digital
Taxa de 216 Mbps
* Redundância espacial (intra-quadro)
* Redundância inter-quadro
** Em um conjunto de quadros, pequenos movimentos acontecem de um quadro para outro
*** Videotelefonia (movimento dos lábios e olhos)
*** Cena de filme (pessoa ou veículo em movimento)
**** Ex.: cena de 3 s => (60 quadros/seg) => 180 quadros
** Tipos de Quadro
** Estimativa de Movimento
** Compensação de movimento

## Tipos de Quadro

2 tipos de quadros
* Codificados de forma independente
** Intracoded frames (I): I-frames/Quadros-I
* Quadros estimados (predicted frames)
** Predictive frames (P): P-frames/Quadros-P
** Bidirectional frames (B - Intercoded ou interpolation frames): B-frames/Quadros-B
* GOP - Group of Pictures
Decodificação
* Quadro-I: imediata
* Quadro-P: precisa do quadro quadro -I ou -P anterior
* Quadro-B: precisa do quadro -I ou -P anterior e do quadro -I ou -P posterior
** Maior retardo para decodificar
* Para minimizar o retardo de decodificação dos quadros -B
** ordem da codificação/transmissão dos quadros é invertida
** ambos os quadros -I ou -P anterior e posterior estão disponíveis quando um quadro -B é recebido
* Exemplo:
** Sequência original
*** I B B P B B P BB I B B P...
** Sequência codificada
*** I P B B P B B I B B P B B...
* Quadro-PB
** Dois quadros -P e -B vizinhos codificados juntos
** Aumenta taxa de quadros sem aumentar significantemente a taxa de bits
* D - Quadro de menor resolução
** Quadros de menor resolução
*** Só considera os coeficientes DC de cada matriz 8x8 JPEG
** Inseridos em intervalos regulares no fluxo de vídeo
** Não são usados no processo de decodificação de quadros -P e -B
** Usados para opções de fast-foward e rewind no vídeo em aplicações de vídeo-sob-demanda (VoD)

## Estimativa e Compensação de Movimento

Usados na codificação de quadros -P e -B
Conteúdo da matriz de luminância Y é dividido em macroblocos de 16x16
* Cada macrobloco tem um endereço
Tamanho do bloco para operação da transformada DCT contínua 8x8
Exemplo no formato 4:1:1
* Para cada 4 amostras de luminância, 1 crominância Cr e 1 de crominância Cb
* Matrizes 8x8 para Cr e Cb
* 6 blocos DCT no total
Para codificar quadro-P (quadro alvo)
Para codificar quadro-B (quadro alvo)

## Compressão de Vídeo

Quadros-I
Conteúdo do quadro alvo → (Macroblocos) → TCD Sequencial (FDCT) → Quantização (Q) → Codificação de Entropia (EE) → Formatador
Quadros-P
Conteúdo do quadro alvo → ["Caixa preta"] → Bit de fluxo codificado
Quadros-B
Conteúdo do quadro alvo → ["Caixa preta"] → Bit de fluxo codificado