Codecs

Para alguém que assiste e mexe muito com mídia, principalmente vídeos, codec é um assunto bem interessante e até bem debatido, as vezes havendo até problemas. Não sei muito disso mas vou escrever um pouco sobre isso.

Para começar o básico já dá para entender pelo nome: codec é algo que co difica e dec odifica alguma coisa, geralmente imagens e vídeos. O motivo de existirem é simples: transmitir informação é complicado logo é desejável encontrar formas de transmiti-la de forma eficiente.

Melhor entender com um exemplo bem prático: um número de telefone. Antes disso, vamos pegar um número para o exemplo. Acho que conhecem esse: 0500 2017 020. Caso não conheçam é o do Criança Esperança, não é que eu queira fazer uma propaganda dele porém o número é bem interessante para o exemplo…

Se vocês fossem falar esse número para alguém como fariam isso? Na propaganda está assim: "zero quinhentos dois mil e dezessete zero dois zero". Percebam que há várias formas de falar esse número: daria para falar cada número individualmente (o que, por exemplo, é a regra no Japão), daria para falar “zero vinte” (o que ficaria mais simples que “zero dois zero”), talvez daria para trocar alguns dos dígitos por aquelas letras que ficam nas teclas do telefone (o que é comum nos Estados Unidos), e claro, há várias outras formas possíveis.

A informação é a mesma, porém ela é pode ser codificada de várias formas para se tornar mais fácil de ser transmitida. A mesma coisa acontece com os codecs.

Agora aplicando isso na prática uma coisa que acaba sendo alvo de discussão entre o povo que mexe com vídeos é o famoso chroma subsampling , também conhecido como “8bit ou 10bit”. O pessoal gosta de falar “8bit tem menos cores que 10bit, 8bit geralmente é maior que 10bit e 8bit funciona em mais lugares que 10bit”, mas em geral parece que não entendem do que estão falando.

Esse “trosso” complicado não é nada mais do que duas formas de tirar informação desnecessária: é como se um tirasse a operadora e o DDD e o outro tirasse só a operadora. Só que no caso a informação que é tirada são cores, e aliás, apenas os detalhes que geralmente são difíceis de ser vistos. Eu até fiz uma imagem para ilustrar:

inline image

Claro, como está nos avisos da imagem, ela só dá uma ideia de como funciona: Lab e YCbCr tem em comum um canal de luminosidade, mas tirando isso são duas formas de codificar cores bem diferentes. Usei Lab devido a essa semelhança e já que o PhotoShop suporta ele não precisei ficar convertendo as imagens para YCbCr em outro programa. Pelo menos é melhor que a comparação, errada, que é encontrada em alguns sites que tentam justificar o uso de um ou outro colocando o 8bit como se fosse um gif.

Mudando de assunto, vou falar de outra questão chata com codecs: existem várias formas de codificar informações e por isso sempre vão surgindo maneiras novas, porém nem sempre isso é algo bom. Por exemplo: se eu resolver falar “zero quinhentos dois mil e dezessete zero vinte” todo mundo entende, ou seja é uma forma mais eficiente e que funciona sem precisar de ficar explicando nada.

Mas se alguém inventar uma nova forma que é bem mais eficiente, porém que precisa de alguma regra? Exemplo: “CE20”, onde “CE” significa “0500 + ano atual + quantos zeros forem necessários”. Só quem sabe essa a regra de como funciona que vai entender. Parece fácil, não? Só que não é: na prática essas regrinhas são difíceis de serem atualizadas.

Um exemplo comum para entender isso: uma TV. Ela tem um conjunto de regras para entender as informações que ela recebe, mas se alguém inventar um jeito novo como “ensiná-la” a entender essas regras novas? Comprar outra? A menos que você seja bem rico acho que essa não é uma opção viável. Atualizar o software? Pode dar certo, porém há um problema: geralmente essas regras ficam um chip especializado ultra rápido feito só para isso que não é fácil de ser atualizado.

Tudo bem, até agora podemos simplesmente dizer “parem de usar TVs velhas, assistam no computador”, certo? Mas e se quem inventou essa regra nova resolver deixar as coisas mais difíceis e simplesmente resolver cobrar de quem for usar essa regra? Provavelmente muita gente pagaria, mas há quem não vai pagar. Um exemplo? Vários dispositivos (como as TVs da minha casa) não reproduzem DTS e AC3 justamente por causa desse problema.

Aí o que acontece é que há quem encontra um jeito mais novo e mais eficiente de codificar a informação e já saem usando, ignorando o fato que ele não funciona em nada de três anos para trás e que ainda provavelmente haverão vários dispositivos que não irão suportar no futuro para não pagar os royalties. Aliás, ignorando também o fato que em menos de um ano haverão alternativas com a mesma eficiência porém sem o problema de custos. É falta de senso? Não sei, deve ser.

Falei muito de vídeo e números de telefone, eu poderia falar um pouco de áudio também, mas vou parar por aqui. Se alguém quiser me presentear com o primeiro volume de Ookami to Koushinryou eu fico feliz, meu aniversário é mês que vem. Até mais.