Estações de trabalho e bons computadores pessoais têm sido capazes de
manipular áudio digital bastante facilmente há uns 15 anos.
Faz apenas uns 5 anos que uma estação de trabalho decente é capaz de
lidar com dados não-compactados de vídeo sem o auxílio de hardware especializado e caro.
Mas hoje até os PCs caseiros mais baratos têm o poder de processamento
e o espaço de armazenamento necessários para realmente jogar dados não-compactados de vídeo pra cá e pra lá,
pelo menos o suficiente para fazê-lo sem um esforço demasiado.
Por isso, agora que todo mundo possui este equipamento barato e com este potencial,
mais gente, como seria de se esperar, quer fazer coisas
interessantes com mídias digitais, especialmente streaming.
YouTube foi o primeiro enorme sucesso, e agora todo mundo quer entrar nessa.
Mas isso é ótimo! Porque estas coisas são muito divertidas!
Não é difícil encontrar consumidores para mídias digitais.
Mas aqui eu gostaria de me dirigir aos engenheiros, aos matemáticos,
aos hackers, às pessoas que estão interessadas em descobrir
e fazer coisas e construir a própria tecnologia.
Pessoas assim como eu.
Imagina-se que assuntos relacionados a mídias digitais, especialmente compressão, são super-elitistas,
de algum modo incrivelmente mais difíceis do que qualquer outra coisa em ciência da computação.
Os grandes industriais do ramo não se incomodam nem um pouco com esta percepção;
isso ajuda a justificar a quantidade escalante de patentes muito elementares que eles mantêm.
Eles gostam da imagem de que pesquisadores de mídia são os melhores dentre os melhores,
tão mais inteligentes que todo o resto que suas ideias brilhantes não
podem sequer ser compreendidas por meros mortais.
Isso é besteira.
Áudio e vídeo digitais e streaming e compressão
oferecem infindáveis desafios mentais profundos e estimulantes,
assim como qualquer outra disciplina.
Se eles parecem elitistas é porque tão pouca gente se envolveu com isso.
Mas talvez tão pouca gente se envolveu porque tão pouca gente
podia bancar o tipo de equipamento especializado e caro requerido.
Mas hoje praticamente qualquer pessoa que está vendo este vídeo possui um computador
de uso geral e barato, com poder de processamento suficiente para brincar como gente grande.
Existem batalhas sendo travadas hoje acerca do padrão HTML5 e browsers
e vídeo e aberto versus fechado.
Por isso agora é um momento bastante bom para se envolver.
Provavelmente o lugar mais fácil de começar é entender
a tecnologia que nós temos neste exato momento.
Essa é uma introdução.
Por ser uma introdução, vamos passar batido por uma série de detalhes
de tal maneira que o panorama geral fique um pouco mais visível.
Vários espectadores estarão muito à frente dos assuntos
que eu estarei falando, pelo menos por enquanto.
Por outro lado, eu provavelmente irei muito rápido para aqueles que são realmente
principiantes em tudo isso, mas se tudo o que eu falar for realmente novidade, relaxe.
O importante é selecionar ideias que se agarrem à sua imaginação.
Preste atenção especialmente à terminologia em volta destas ideias,
porque com estes termos, e com o Google e a Wikipedia, você poderá mergulhar
tão fundo quanto for o seu interesse.
Assim sendo, e sem mais delongas,
bem-vindos a um baita de um novo hobby.
O som é a propagação de ondas de pressão pelo ar,
que se espalham de uma fonte como as ondulações que vemos ao jogar uma pedra em um lago.
Um microfone, ou o ouvido humano se você preferir,
transformam essas ondulações de pressão em um sinal elétrico.
Tá certo, isso parece aula de ciências do colegial, todo mundo se lembra disso.
Indo em frente.
Este sinal de áudio é uma função unidimensional, um valor que varia com o tempo.
Se desacelerarmos o osciloscópio um pouco...
deve ficar um pouco mais fácil de perceber.
Alguns outros aspectos do sinal são importantes.
Ele é contínuo tanto no valor da função quanto no tempo;
ou seja, em qualquer instante do tempo ele pode assumir qualquer valor real,
e há um valor variando suavemente em qualquer instante do tempo.
Não importa o quanto aumentarmos o zoom,
não há descontinuidades ou singularidades, não há saltos instantâneos
ou pontos onde o sinal deixe de existir.
Ele está definido em toda parte. A matemática contínua clássica funciona muito bem nestes sinais.
Um sinal digital, por outro lado, é discreto tanto no valor quanto no tempo.
No sistema mais simples e mais comum, chamado de Pulse Code Modulation (Modulação por Código de Pulsos),
um valor dentre um número finito de valores possíveis representa a amplitude instantânea do sinal
em pontos do tempo espaçados de uma distância fixa. O resultado final é uma sequência de dígitos.
Agora isso se parece bastante com isso.
Parece intuitivo que pudéssemos de alguma maneira transformar rigorosamente
uma representação na outra, e a boa nova é que o Teorema da Amostragem diz que podemos e nos diz como fazê-lo.
Publicado na sua forma mais reconhecível por Claude Shannon em 1949
e construído a partir do trabalho de Nyquist, Hartley, e muitos outros,
o teorema da amostragem diz que não apenas podemos ir de um lado para o outro entre as representações
analógica e digital, mas também estabelece um conjunto de condições sob as quais a conversão
não tem perdas e as duas representações se tornam equivalentes e intercambiáveis.
Quando as condições para a conversão sem perda não são verificadas, o teorema da amostragem nos diz
quanta informação é perdida ou corrompida, e como isso acontece.
Até bem recentemente, a tecnologia analógica era a base para praticamente tudo o que era feito com áudio,
e isso não se deve ao fato de que a maior parte do áudio vem de uma fonte originalmente analógica.
Você deve imaginar que, visto que os computadores são relativamente recentes,
a tecnologia de sinais analógicos deve ter vindo primeiro.
Não. A tecnologia digital é na realidade mais velha.
O telégrafo precede o telefone em meio século
e já era completamente mecanizado por volta de 1860, enviando sinais digitais
codificados e multiplexados a longas distâncias. Você sabe... código-morse.
Harry Nyquist dos Laboratórios Bell estava pesquisando a transmissão de pulsos pelo telégrafo
quando ele publicou sua descrição do que viria a ser conhecido posteriormente
como a frequência de Nyquist, o conceito fundamental no teorema da amostragem.
Bom, é verdade que o telégrafo transmitia informação simbólica, texto,
não um sinal analógico digitalizado, mas com o advento do telefone e do rádio
a tecnologia de sinais analógicos e digitais progrediu rapidamente e lado-a-lado.
Áudio sempre foi manipulado como um sinal analógico porque, puxa, é tão mais fácil.
Um filtro passa-baixas de segunda-ordem, por exemplo, requer dois componentes passivos.
Uma transformada de Fourier de tempo reduzido (STFT) completamente analógica, poucas centenas.
Bom, talvez uns mil se você quiser construir algo realmente caprichado.
Processar sinais digitalmente requer entre milhões e bilhões de transistores
funcionando em frequências de micro-ondas, hardware de apoio para digitalizar
e reconstruir os sinais analógicos, um ecossistema completo de software
para programar e controlar aquele monstrengo de um bilhão de transistores,
armazenamento digital para se por acaso você quiser guardar alguns daqueles bits para depois...
E assim a gente chega à conclusão de que a forma analógica é a única maneira prática de fazer alguma coisa com áudio...
bom, a menos que você tenha por acaso um bilhão de transistores e todas essas outras coisas dando sopa.
E já que nós temos, o processamento de sinais digitais se torna muito atrativo.
Uma das razões é que componentes analógicos simplesmente não têm a flexibilidade de um computador de uso geral.
Acrescentar uma funcionalidade a este animal...
é, acho que não vai rolar.
Em um processador digital no entanto...
... é só escrever um novo programa. Escrever software não é trivial, mas é bem mais fácil.
Talvez a diferença mais importante é que todo componente analógico é uma aproximação.
Não existe um transistor perfeito, ou um indutor perfeito, ou um capacitor perfeito.
No domínio analógico, todo componente acrescenta ruído e distorção, normalmente não muito, mas eles se acumulam.
Apenas por transmitir um sinal digital, especialmente sobre longas distâncias,
progressivamente, mensuravelmente e irrecuperavelmente o corrompe.
Além disso, todos aqueles componentes analógicos mono-funcionais ocupam um monte de espaço.
Duas linhas de código neste bilhão de transistores aqui
podem implementar um filtro que iria requerer um indutor do tamanho de uma geladeira.
Sistemas digitais não têm estes inconvenientes.
Sinais digitais podem ser armazenados, copiados, manipulados e transmitidos sem acrescentar ruído ou distorção.
Às vezes a gente usa algoritmos com perdas,
mas os únicos passos não-ideais e inevitáveis são a digitalização e a reconstrução,
onde o digital tem que interagir com toda aquela bagunça analógica.
Bagunçadas ou não, as etapas de conversão atualmente são muito, muito boas.
Pelo padrão de nossos ouvidos, podemos igualmente considerá-las como praticamente sem-perdas.
Então com um um pouco de hardware adicional, que hoje em dia é em geral pequeno e barato
devido à nossa infra-estrutura industrial moderna, o áudio digital é claramente o vencedor sobre o analógico.
Vamos assim nos ocupar de armazená-lo, copiá-lo, manipulá-lo e transmiti-lo.
PCM (Pulse Code Modulation) é a representação mais comum para dados não-compactados de áudio.
Outras representações práticas existem, por exemplo a codificação Sigma-Delta usada pelo SACD,
que é uma forma de modulação por densidade de pulsos (Pulse Density Modulation).
Isto posto, a codificação PCM é disparadamente o padrão dominante,
principalmente porque ela é tão conveniente matematicamente.
Um engenheiro de áudio pode passar sua carreira inteira sem encontrar nada diferente.
A codificação PCM pode ser caracterizada por três parâmetros,
facilitando de forma abençoada a explicação de qualquer variante PCM sem confusões.
O primeiro parâmetro é a taxa de amostragem.
A frequência mais alta que uma codificação permite representar é chamada de Frequência de Nyquist.
A Frequência de Nyquist da codificação PCM é exatamente metade da taxa de amostragem.
Portanto a taxa de amostragem determina diretamente a frequência mais alta possível no sinal digitalizado.
Sistemas de telefone analógicos tradicionalmente limitavam a banda de frequências dos canais de voz a pouco menos de 4kHz,
e então a telefonia digital e a maior parte das técnicas clássicas de processamento de voz usam um taxa de amostragem de 8kHz,
que é a mínima taxa de amostragem necessária para representar toda a largura de banda de um canal de 4kHz.
É assim que soa uma taxa de amostragem de 8kHz --- um pouco abafado, mas a voz é perfeitamente inteligível.
Esta é a taxa de amostragem mais baixa que é amplamente usada na prática.
A partir dela, com o crescimento do poder computacional, da memória e do espaço em disco, o hardware dos computadores
passaram a oferecer 11, depois 16, depois 22, e depois 32kHz de taxa de amostragem.
A cada aumento da taxa de amostragem e da frequência de Nyquist,
é óbvio que a parte mais aguda torna-se mais clara e o som mais natural.
O Compact Disc (CD) usa uma taxa de amostragem de 44.1kHz, que mais uma vez é um pouco melhor do que 32kHz,
mas o ganho vai ficando menos discernível.
44.1kHz é uma escolha meio bizarra, especialmente dado que ela nunca foi usada para nada
antes do compact disc, mas o imenso sucesso do CD tornou-a uma taxa de amostragem comum.
A taxa de amostragem de alta-fidelidade mais comum fora a do CD é a de 48kHz.
Não há virtualmente nenhuma diferença audível entre as duas.
Este vídeo, ou pelo menos a versão original dele, foi rodada e produzida com áudio de 48kHz,
que por acaso é o padrão original para áudio de alta-fidelidade combinado com vídeo.
Taxas de amostragem de super-alta-fidelidade tais como 88, 96, e 192kHz também apareceram.
A razão para as taxas de amostragem acima de 48kHz não é estender mais ainda a faixa de frequências audíveis.
É por outra razão.
Voltando para trás um segundinho, o matemático Francês Jean Baptiste Joseph Fourier
mostrou que podemos pensar em sinais como áudio como um conjunto de frequências componentes.
Esta representação no domínio da frequência é equivalente à representação temporal;
o sinal é exatamente o mesmo, só estamos olhando-o de uma forma diferente.
Aqui nós vemos a representação no domínio da frequência de um sinal analógico hipotético que pretendemos amostrar digitalmente.
O teorema da amostragem nos conta duas coisas essenciais sobre o processo de amostragem.
Primeiro, que um sinal digital não é capaz de representar nenhuma frequência acima da frequência de Nyquist.
Segundo, e essa é a parte nova, se não removermos aquelas frequências com um filtro passa-baixas antes de amostrar o sinal,
o processo de amostragem irá rebater estas frequências para a faixa de frequências representáveis numa forma de distorção conhecida como aliasing.
Aliasing, sendo curto e grosso, soa mal pra caramba,
e por isso é essencial remover quaisquer frequências acima da frequência de Nyquist antes da amostragem e depois da reconstrução do sinal.
Considera-se que a percepção humana de frequências de áudio se estende até uns 20kHz.
Nas taxas de 44.1 ou 48kHz, a banda de transição do filtro passa-baixas antes da etapa de amostragem tem que ser extremamente abrupta
para evitar o corte de quaisquer frequências audíveis abaixo dos 20kHz
mas ao mesmo tempo não permitir que frequências acima da de Nyquist vazem através do processo de amostragem.
Esse é um filtro muito difícil de construir, e nenhum filtro é completamente bem-sucedido na prática.
Se a taxa de amostragem é de 96kHz ou 192kHz por outro lado,
o passa-baixas tem uma ou duas oitavas a mais para a banda de transição. Este é um filtro muito mais fácil de construir.
Taxas de amostragem além de 48kHz são na realidade uma das concessões àquela bagunça da etapa analógica.
O segundo parâmetro fundamental da PCM é o formato das amostras, ou seja, o formato digital de cada número.
Um número é um número, mas um número pode ser representado em bits de inúmeras maneiras.
Os primeiros exemplos de PCM usavam codificação linear de oito bits na forma de bytes sem sinal.
A faixa dinâmica é limitada a aproximadamente 50dB e o ruído de quantização, como você pode ouvir, é bem sério.
Áudio de 8 bits está praticamente desaparecendo hoje em dia.
A telefonia digital usa tipicamente uma dentre duas codificações não-lineares de 8 bits relacionadas, chamadas A-law e mu-law.
Estes formatos permitem codificar uma faixa dinâmica de quase 14 bits usando apenas 8 bits
aumentando o espaço entre os valores de amplitude mais altos.
A-law e mu-law obviamente aperfeiçoam o ruído de quantização em comparação à codificação linear de 8-bits,
e especialmente os harmônicos da voz escondem bem o resto do ruído de quantização.
Todas estas três codificações de oito bits, linear, A-law, e mu-law, aparecem tipicamente ao lado
da taxa de amostragem de 8kHz, apesar de eu as estar demonstrando aqui em 48kHz.
A maioria das codificações PCM modernas usam inteiros de 16 ou 24 bits com sinal usando complemento de 2 para codificar
a faixa de menos infinito até zero decibéis com precisão de 16 ou 24 bits.
O maior valor absoluto corresponde a zero decibéis.
Como em todos os formatos de amostra até agora, sinais além dos 0 dB
e portanto além da máxima faixa representada são cortados (clipados).
Na mixagem e masterização, não é incomum o uso de números em ponto flutuante ao invés de inteiros para a representação PCM.
Um número em ponto flutuante de 32 bits no padrão IEEE754, que é o tipo normal de ponto flutuante que você vê em computadores atuais,
possui uma resolução de 24 bits, mas um expoente de 7 bits aumenta a faixa de valores representáveis.
Na representação em ponto flutuante costuma-se associar zero decibéis a +/-1.0,
e já que números em ponto flutuante podem obviamente representar valores muito além destes,
passar de zero decibéis temporariamente durante um processo de mixagem não causa clipping.
PCM em ponto flutuante ocupa mais espaço, e por isso ela tende a ser usada apenas como um formato intermediário de produção.
Finalmente, a maioria dos computadores de uso geral ainda leem e escrevem dados em bytes de oito bits,
então é importante lembrar que amostras de mais de oito bits
podem estar tanto na ordem big endian quanto little endian, e os dois tipos de ordenação são comuns.
Por exemplo, arquivos Microsoft WAV são little endian, e arquivos Apple AIFC tendem a ser big endian.
Fique atento a isto.
O terceiro parâmetro da PCM é o número de canais.
A convenção em PCM puro é codificar múltiplos canais através do entrelaçamento das amostras
de cada canal em um único stream (fluxo) de dados. Simples, direto e extensível.
E isso é tudo! Isso descreve qualquer representação PCM que houver.
Feito. Áudio digital é tão simples!
Evidentemente há mais a ser feito, mas neste ponto já temos um volume legal e útil de dados de áudio,
então vamos pegar um pouco de vídeo também.
Dá pra pensar em vídeo como sendo parecido com áudio mas com duas dimensões espaciais adicionais, X e Y,
além da dimensão do tempo. Isso é matematicamente consistente.
O teorema da amostragem se aplica a todas as três dimensões do vídeo, exatamente como no caso da dimensão única (temporal) do áudio.
Áudio e vídeo são obviamente bem diferentes na prática. Pra começar, comparado ao áudio, vídeo é enorme.
Áudio de CD não-compactado tem aproximadamente 1.4 megabits por segundo.
Vídeo HD 1080i não-compactado tem mais de 700 megabits por segundo.
Isso é mais do que 500 vezes mais dados para capturar, processar e armazenar por segundo.
Pela lei de Moore... isso dá... vamos ver... aproximadamente oito duplicações vezes dois anos,
então é isso mesmo, a estimativa de que os computadores precisariam de uns 15 anos a mais para poderem
manipular vídeo não-compactado depois de conseguirem fazer o mesmo com áudio estava mais ou menos certo.
Vídeo básico é também simplesmente mais complicado do que áudio básico.
O mero volume de dados atualmente torna necessária uma representação
mais eficiente do que a PCM linear usada para o áudio.
Além disso, vídeo eletrônico vem quase exclusivamente da televisão aberta,
e os comitês de padronização que governam a teledifusão estiveram sempre muito preocupados com a compatibilidade reversa.
Até o ano passado, nos Estados Unidos, uma televisão preto-e-branco de sessenta anos de idade
ainda podia exibir uma transmissão analógica normal.
Isso é na realidade um truque bem caprichado.
O lado ruim da compatibilidade reversa é que no momento que um detalhe se converte em um padrão,
você realmente nunca mais pode jogá-lo fora.
O vídeo eletrônico nunca pôde começar do zero do jeito que o áudio fez múltiplas vezes.
Sessenta anos de gambiarras engenhosas mas obsoletas, feitas necessárias por causa das tecnologias de eras passadas
se acumularam em uma pilha e tanto, e como os padrões digitais também vêm da televisão aberta,
todas estas gambiarras esquisitas também foram trazidas para dentro dos padrões digitais.
Pra resumir, há um bocado a mais de detalhes em relação ao vídeo digital do que havia no áudio.
Não há a menor chance de cobri-los todos completamente aqui, então vamos cobrir os aspectos mais fundamentais.
Os parâmetros mais óbvios do vídeo são a largura e altura da imagem em pixels.
Por mais simples que possa parecer, só as dimensões em pixels não especificam na realidade as verdadeiras
largura e altura da imagem, já que a maioria dos vídeos derivados da teledifusão não usam pixels quadrados.
O número de linhas de varredura em uma imagem televisionada era fixado,
mas o número efetivo de pixels na horizontal era uma função da largura de banda do canal.
A resolução horizontal efetiva podia resultar em pixels que eram
mais estreitos ou mais largos que o espaçamento entre as linhas de varredura.
Os padrões em geral especificam que o vídeo amostrado digitalmente
deve refletir a resolução real da fonte original analógica,
então uma grande quantidade de vídeo digital também usa pixels não-quadrados.
Por exemplo, um DVD NTSC de aspecto normal 4:3 é tipicamente codificado
com uma resolução de tela de 704 por 480, uma razão maior do que 4:3.
Neste caso, aos próprios pixels é atribuída uma razão de aspecto de 10:11,
tornando-os mais altos do que largos e estreitando a imagem horizontalmente até o aspecto correto.
Uma tal imagem precisa ser reamostrada para ser exibida corretamente em um monitor digital com pixels quadrados.
O segundo parâmetro óbvio do vídeo é a frequência dos quadros, o número de quadros exibidos por segundo.
São vários os padrões de quadros por segundo em uso corrente. O vídeo digital, em uma de suas muitas formas,
pode usar qualquer um deles. Ou qualquer outra frequência. Ou mesmo frequências variáveis
onde o número de quadros por segundo muda adaptativamente ao longo do vídeo.
Quanto maior o número de quadros por segundo, mais suave o movimento e isso, infelizmente, nos traz ao interlacing.
Nos primórdios do vídeo televisionado, os engenheiros buscavam o maior número possível de quadros por segundo
para suavizar o movimento e minimizar o flickering em tubos de raios catódicos à base de fósforo.
Eles também eram pressionados a usar a menor largura de banda possível
com a melhor resolução e o maior número de quadros possíveis.
A solução deles foi intercalar o vídeo onde as linhas pares
são mandadas em um passo e as linhas ímpares no seguinte.
Cada passo é chamado de um field e dois fields meio que produzem um quadro completo.
"Meio que", porque os fields par e ímpar não vêm do mesmo quadro original.
Em um vídeo de 60 fields por segundo, o número de quadros por segundo original é na realidade 60 quadros completos por segundo,
e metade de cada quadro, linha sim linha não, é simplesmente descartado.
É por isso que não podemos desintercalar um vídeo simplesmente combinando dois fields dentro de um quadro;
eles na realidade não são de um mesmo quadro, pra começo de conversa.
O tubo de raios catódicos era a única tecnologia de monitores disponível durante a maior parte da história do vídeo eletrônico.
A intensidade luminosa de saída de um tubo de raios catódicos é não-linear, aproximadamente igual
à voltagem de controle da entrada elevada à potência 2.5.
Este expoente, 2.5, era representado pela letra gama, e por isso nos referimos frequentemente a ele como o fator gama de um monitor.
Câmeras, no entanto, são lineares, e se você enviar um sinal linear a um tubo de raios catódicos a saída se parece um pouco com isso.
Como originalmente havia muito poucas câmeras, que eram fantasticamente caras de qualquer modo,
e desejavelmente muitos e muitos aparelhos de televisão, idealmente o mais baratos o possível,
os engenheiros decidiram adicionar os circuitos necessários para a correção gama às câmeras ao invés de aos aparelhos de TV.
Sinais de vídeo transmitidos pelo ar teriam assim uma intensidade não-linear usando o inverso
do expoente gama do aparelho, de forma que no momento que um sinal da câmera fosse finalmente exibido no tubo de raios catódicos,
a resposta total do sistema da câmera ao aparelho seria linear de novo.
Quase.
Havia também duas outras gambiarras.
Uma câmera de televisão na realidade usava na realidade um expoente gama que era o inverso de 2.2, não de 2.5.
Essa era simplesmente uma correção para a visão em ambientes mal iluminados.
Além disso, a curva exponencial se tornava uma rampa linear próximo do preto.
Essa é só uma velha gambiarra para abafar o ruído dos sensores na câmera.
A correção gama afortunadamente também trouxe um benefício.
Acontece que o olho humano tem um gama perceptual de aproximadamente 3.
Isso é relativamente próximo do gama de 2.5 das TVs.
Uma imagem usando correção gama dedica uma resolução maior às intensidades mais baixas,
onde por acaso o olho humano tem a mais fina discriminação de intensidade,
e portanto usa a escala de resolução disponível mais eficientemente.
Apesar de que os tubos de raios catódicos estão atualmente desaparecendo, um monitor de computador padrão sRGB
ainda usa uma curva de intensidade não-linear parecida com a da televisão, com uma rampa linear próximo do preto,
seguida por uma curva exponencial com um expoente gama de 2.4.
Isso permite a codificação de uma faixa linear de 16 bits usando apenas 8 bits.
O olho humano possui três canais de cor aparentes, vermelho, verde e azul,
e a maioria dos monitores usam estas três cores como componentes primárias aditivas para produzir uma paleta completa de cores na saída.
Os pigmentos primários em impressão são ciano, magenta e amarelo pela mesma razão;
pigmentos são subtrativos, e cada um destes pigmentos subtrai uma cor pura da luz refletida.
O ciano subtrai o vermelho, magenta subtrai verde e amarelo subtrai azul.
Vídeo pode e às vezes é representado com canais de cores vermelha, verde e azul,
mas vídeo RGB é atípico. O olho humano é muito mais sensível à luminosidade do que à cor,
e o RGB tende a espalhar a energia de uma imagem pelos três canais de cor.
Ou seja, o plano vermelho se parece com uma versão vermelha da imagem original,
o plano verde se parece com uma versão verde da imagem original,
e o plano azul se parece com uma versão azul da imagem original.
Preto e branco vezes três. Ineficiente.
Por estas razões e porque, quem diria, a televisão por acaso começou sendo
preto-e-branco mesmo, vídeo é normalmente representado como um canal de luma de alta resolução,
o perto & branco, junto com canais de croma adicionais, frequentemente de resolução mais baixa, para a cor.
O canal luma, Y, é produzido ponderando e somando os sinais separados vermelho, verde e azul.
Os canais de croma U e V são então produzidos subtraindo o sinal luma do azul
e o sinal luma do vermelho respectivamente.
Quando o sinal YUV sofre mudanças de escala, translação e quantização para o vídeo digital, ele é mais corretamente denominado Y'CbCr,
mas o termo mais genérico YUV é amplamente usado para descrever
todas as variantes analógicas e digitais deste modelo de cor.
Os canais de croma U e V podem ter a mesma resolução do canal Y,
mas dado que o olho humano possui muito menos resolução espacial para cor do que resolução espacial para luminosidade,
a resolução do croma é normalmente dividida por dois ou mesmo por quatro na direção horizontal ou na direção vertical,
ou mesmo em ambas, normalmente sem qualquer impacto significativo na qualidade aparente da imagem.
Praticamente todas as possíveis variantes de sub-amostragem foram usadas em algum momento,
mas as escolhas comuns hoje em dia são
vídeo 4:4:4, que na realidade não é sub-amostrado,
vídeo 4:2:2 no qual a resolução horizontal dos canais U e V é dividida por dois,
e o mais comum de todos, o vídeo 4:2:0 no qual tanto a resolução horizontal quanto a vertical
dos canais croma são divididas por dois, resultando em planos U e V que ocupam cada um deles um quarto do tamanho de Y.
Os termos 4:2:2, 4:2:0, 4:1:1 e assim por diante não são descrições completas da sub-amostragem do croma.
Há múltiplas maneiras possíveis de posicionar os pixels de croma em relação ao luma,
e mais uma vez, inúmeras variantes são atualmente usadas para cada sub-amostragem.
Por exemplo, motion JPEG, vídeos MPEG-1 e MPEG-2, DV, Theora e WebM todos usam
ou podem usar a sub-amostragem 4:2:0, mas eles posicionam os pixels croma de três maneiras diferentes.
Motion JPEG, vídeo MPEG1, Theora e WebM todos posicionam os pixels croma
entre os pixels luma tanto horizontalmente quanto verticalmente.
MPEG2 posiciona os pixels croma entre as linhas, mas alinhados horizontalmente com os pixels luma, um sim e um não.
Os modos intercalados complicam as coisas um tanto, resultando em um arranjo de posicionamento que é um pouquinho bizarro.
E finalmente o PAL-DV, que é sempre intercalado, posiciona os pixels croma
na mesma posição que os pixels luma pares na direção horizontal,
e verticalmente alterna os canais croma a cada linha.
Isso é só para o vídeo 4:2:0. Vou deixar as outras sub-amostragens como lição de casa para o espectador.
Vocês pegaram a ideia geral, vamos em frente.
Em áudio, nós sempre representamos múltiplos canais em um stream PCM entrelaçando as amostras
de cada canal em ordem. Em vídeo são usados tanto formatos em pacotes que entrelaçam os canais de cor,
quanto formatos planares que mantêm juntos os pixels de cada canal em planos separados
empilhados em ordem no quadro. Existem no mínimo 50 formatos diferentes nestas duas grandes categorias
sendo possivelmente 10 ou 15 comumente usados. Cada sub-amostragem do croma e nível de quantização diferente requer
um empacotamento diferente, assim como um formato de pixel diferente. Para cada sub-amostragem,
existem normalmente vários formatos equivalentes que consistem em reordenações e re-empacotamentos
triviais dos canais de cor devido ou à conveniência de um algum hardware em particular
de tempos idos ou simplesmente devido ao bom e velho rancor.
Formatos de pixels são descritos por uma denominação unívoca ou por um código de 4 caracteres.
Existem um monte desses e não faz sentido passar por cada um deles agora.
O Google é seu amigo. Fique atento ao fato de que códigos de 4 caracteres para vídeo não-compactado especificam a ordem dos pixels
e a sub-amostragem do croma, mas em geral não subentendem nada seguro acerca do posicionamento do croma ou do espaço de cores.
Vídeo YV12, pra dar um exemplo, pode usar posicionamento do croma do JPEG, MPEG-2 ou DV,
e qualquer um das várias definições de espaço de cor YUV.
Isso conclui nosso não tão curto e ainda assim muito incompleto tour pelos padrões de vídeo.
O lado bom é que nós já podemos fazer um monte de coisas de verdade apenas com esta visão panorâmica.
Em inúmeras situações um quadro de dados de vídeo é apenas um quadro de dados de vídeo.
Os detalhes importam, e bastante, quando chega a hora de escrever software,
mas neste momento eu estou contente que o estimado espectador está bastante consciente das questões relevantes.
Então. Já temos dados de áudio. Já temos dados de vídeo.
O que falta são outros dados mais familiares (não sinais) e engenharia correta
que desenvolvedores de software estão acostumados. E bastante!
Porções de dados de áudio e vídeo não possuem nenhuma estrutura externa visível,
mas eles vêm frequentemente em tamanhos uniformes. Poderíamos simplesmente costurá-los
em uma ordem rígida e pré-definida para transmissão e armazenamento,
e alguns sistemas simples fazem aproximadamente isso.
Quadros compactados por outro lado não têm necessariamente um tamanho previsível,
e normalmente queremos ter flexibilidade para usar um certo número de tipos de dados diferentes em streams.
Se costurarmos dados aleatórios e amorfos, perderemos as fronteiras que separam os quadros
e não saberemos quais dados pertencem a quais streams.
Um stream precisa de uma estrutura genérica para ser útil em geral.
Além dos nossos dados dos sinais, temos também os parâmetros do PCM e do vídeo.
Provavelmente há uma série de outros meta-dados que gostaríamos de incluir também,
como informações sobre o áudio, ou capítulos e legendas do vídeo, todos componentes essenciais de mídias ricas em conteúdo.
Faz sentido guardar estes meta-dados, ou seja, dados sobre os dados, dentro da própria mídia.
Armazenar e estruturar dados amorfos e meta-dados díspares é a função de um contêiner.
Contêineres fornecem enquadramentos para os grupos de dados,
intercalam e identificam múltiplos streams de dados,
fornecem informação temporal, e armazenam os meta-dados necessários
para permitir a análise, navegação, manipulação e apresentação da mídia.
Em geral, um contêiner pode guardar qualquer tipo de dado.
E dados podem ser colocados em qualquer contêiner.
Nos últimos trinta minutos nós cobrimos áudio digital, vídeo,
um tanto de história, um tanto de matemática e um pouco de engenharia.
Nós mal arranhamos a superfície, mas é hora de uma merecida pausa.
Há muito mais sobre o que falar, então espero vê-los de novo no nosso próximo episódio.
Até lá --- Saúde!