top of page

COMPRESSÃO E CODIFICAÇÃO DE VÍDEO

Os requisitos para compressão de vídeo em Cloud Gaming são semelhantes àqueles dos serviços de transmissão de média ao vivo, visto que ambos são aplicações em tempo real, cuja codificação do vídeo capturado deve ser feita rapidamente, e sem acesso a frames futuros antes que sejam produzidos. No entanto, nota-se diferenças essenciais, como o facto de ser inviável utilizar buffers no lado do utilizador, visto que quando um jogador executa um comando no cliente local, este comando deve viajar pela internet até à plataforma na cloud,  ser processado pela lógica de jogo, renderizado pela unidade gráfica, capturado, comprimido pelo codificador de vídeo e transmitido de volta ao jogador. Como isto tudo deve ser feito entre 50ms-200ms, dependendo do tipo de jogo, não há grande margem para a que seja feito o buffer.

O codificador de vídeo base mais utilizado atualmente nas aplicações Cloud Gaming é o padrão H.264/AVC, amplamente utilizado no cenário multimédia mundial. A figura abaixo representa o esquema de blocos de um codificador H.264, cujas principais etapas que diferenciam esta norma das anteriories são:

  • Estimação e Compensação de Movimento: nesta norma a imagem é dividida em blocos de tamanho variável, além de sua precisão ir até ¼ de pixel

  • Predição Intratrama: Procura explorar a  redundância espacial para a predição na própria trama, utilizando amostras à esquerda e acima de macroblocos anteriormente descodificados 

  • Decisão de Modos: é a parte do codificador que define quais modos de predição devem ser utilizados de acordo com o conteúdo da imagem, bem como define como deve ser dividido o macrobloco para  estimação e compensação de movimentos.

Como já falado, os serviços de Cloud Gaming, buscam também eliminar restrições de hardware, de maneira que seja possível o stream do jogo tanto para equipamentos com baixa resolução (Consola portátil, telemóvel, PC portátil), quanto para alta resolução [4]. Isto pode ser feito de forma eficiente através do codec H.264/SVC (Scalable Video Coding), que divide a codificação do vídeo em camadas de forma hierárquica e escalável, onde a camada mais baixa é o H.264/AVC, e as camadas superiores servem para aumentar a resolução de codificação da camada de base, portanto, cada camada de codificação oferece um vídeo codificado em resolução diferente.

Outro aspecto importante, a ser considerado é a possibilidade de aproveitar jogos multiplayer, onde vários jogadores estão no mesmo ambiente virtual, e portanto cada jogador tem uma “visão” diferente do ambiente, como se forem várias câmeras de vídeo espalhadas pelo cenário virtual, isto permite a utilizar a ideia do  H.264/MVC para a codificação eficiente do jogo para 3D-TVs. Ou como proposto em [14], um sistema de Cloud Gaming baseado em AD Hoc, onde é explorada a correlação entre as tramas de vídeo de jogadores diferentes, introduzindo a ideia de Inter-Stream P-frame, ou seja, uma trama de vídeo que depende de outra trama no stream de outro utilizador, de forma a melhorar a qualidade de experiência do cliente.

H264-Encoder-Block-Diagram.png
Compressão e Codificação de Vídeo: Sobre
bottom of page