• Nenhum resultado encontrado

5 PROPOSTA DE ARQUITETURA ADAPTATIVA PARA TRANSMISSÃO E EXECUÇÃO DE VÍDEO SVC

5.2 PARADIGMA DE COMPRESSÃO EM BLOCOS

A compressão e consequente transmissão de vídeo podem ocorrer em dois paradigmas distintos conforme mostra a Figura 29:

52

Compressão em Fluxo

No paradigma convencional, comprime-se um vídeo longo e transmitem-se pedaços, também chamados de chunks, desse vídeo. Esse modelo é classificado, neste trabalho, como compressão em fluxo.

Nesse esquema, conjuntos de unidades NAL do formato SVC seriam transmitidos na rede dentro de pacotes. Esses pacotes seriam recebidos e processados para exibição e para adaptação.

Algumas dificuldades práticas tornam esse esquema pouco interessante:

Do Transporte

O fragmentador de pacotes precisaria interpretar o bytestream SVC para realizar a fragmentação sem corromper unidades NAL, vez que os decodificadores existentes não são capazes de tratar esse cenário – bytestream corrompido. Esse procedimento requer um processamento de camada alta, o que exige grande poder de processamento. Esse problema, se não tratado no fragmentador, precisaria necessariamente ser resolvido em camada mais alta do sistema desde que antes da interação com o decodificador SVC.

Da Reprodução

As unidades NAL possuem estrutura sintática complexa, conforme mostrado no capítulo 2. Vários cabeçalhos podem não estar presentes conforme valores de outros cabeçalhos da mesma unidade NAL ou até mesmo de unidades NAL anteriores.

O componente Reprodutor de Vídeo receberia pacotes contendo uma ou mais unidades NAL. Os pacotes seriam concatenados até ocorrer a detecção e separação em lotes que possam ser interagidos com o aplicativo decodificador de SVC (decoder ou codec).

Numa primeira abordagem o lote de interação com o decodificador seria uma unidade AU (Access Unit). Separar unidades AU exige a realização dos algoritmos de detecção de início e de fim de AU. Tais algoritmos requerem análise em nível de cabeçalho de unidades VCL, sendo, portanto, um processo custoso.

Os cabeçalhos de unidades VCL dependem de valores de cabeçalhos anteriores e, por vezes, de outros pacotes em memória como SPS e PPS. Manter esses pacotes em memória

53

requer entendimento do modelo HRD (Hypothetical Reference Decoder), que trata do armazenamento e descarte de quadros na memória DPB (Decoded Picture Buffer).

A implementação de HRD é necessária para o processo de codificação, porém é redundante para ser tratada também no módulo RV do sistema, pois envolve entender grande parte do processo de interpretação do bytestream SVC.

Existe dependência entre as unidades AU devido à estrutura de predição inter-quadro. Essa dependência é sinalizada no SVC. A ordem de posicionamento das AUs no SVC está expressa na sequência POC (Picture Order Code). A extração do número POC de cada AU depende da análise de cabeçalhos dos pacotes VCL presentes na AU e dos pacotes PPS e SPS relacionados. O Apêndice A exemplifica esse cálculo.

A necessidade de interpretação, com memória, dos cabeçalhos de unidades NAL, processamento este que é uma redundância, vez que já é realizado dentro do decodificador SVC, remete a um custo computacional significativo em cada salto na rede P2P.

As dificuldades acima explanadas são mantidas considerando a abordagem em que cada lote contém um GOP inteiro, pois existe também dependência entre unidades NAL de GOPs consecutivos.

O cenário de canal não confiável, onde há perda de pacotes, que é o caso abordado neste trabalho, o cálculo do ordenamento POC fica comprometido e inviabiliza a correta marcação de tempo dos quadros emitidos na saída do decodificador SVC. A saída do deste não obedecerá ao previsto na Tabela 3, podendo variar conforme implementação.

Nas implementações de decodificador SVC citadas no capítulo 2 não é possível embarcar metadados nas unidades AU de forma que a informação seja repetida na saída (quadro não comprimido). Se possível fosse, a carimbação prévia de tempo, a ser feita nas unidades AU, resolveria o problema.

Se o FPS não fosse dinâmico no SVC, a marcação de tempo na saída do decoder seria trivial e o calculo de POC poderia ser desprezado. FPS dinâmico não é um problema simples. As arquiteturas padrões de mercado não estão preparadas para tratar essa questão e nem mesmo a ordem POC. Testes feitos no Microsoft Media Player 10, VLC 2 e Apple QuickTime 7.7, ao executarem vídeo SVC de única camada, com GOP hierárquico, codificado em modo de compatibilidade AVC, resultou na reprodução dos quadros em ordem errada.

54

Compressão em Blocos

Nessa abordagem, conjuntos formados por 1 ou mais GOPs completos seriam codificados na fonte de maneira independente. Ou seja, ao invés de termos um vídeo longo transmitido em pedaços, teríamos vários vídeos curtos transmitidos atomicamente. Assim, os módulos de Reprodução e de Adaptação não precisam realizar qualquer processamento de camada alta que tenha relação com a análise de cabeçalhos de unidades NAL, identificação de início e fim de AU ou mesmo de correção de ordem POC.

Vantagens da proposta:

 Independência da técnica de compressão. Não é necessário tratar da interpretação de características como POC, HRD, etc;

 Simplificação da interação com o decodificador SVC, pois cada bloco é um

bytestream completo e válido;

 Decodificação passível de paralelização, pois os blocos não possuem dependência entre si;

 Não há restrições ao uso das características do SVC;

 Sincronização de tempo dos quadros decodificados torna-se trivial, vez que a taxa de blocos é constante.

Desvantagens da proposta:

 O atraso em cada nó da árvore é de pelo menos a duração de um bloco inteiro;  Os blocos precisam ser fragmentados para atender à restrição de tamanho fixo de

pacote do TFMCC.