×

Windows Media Player nos anos 90 usava técnica secreta de chroma key para vídeos

Se você abriu o bom e velho Windows Media Player nos tempos do Windows 95, 98 ou XP, prepare-se para um leve choque: ele estava mentindo para você.

E, por mentir, bem, o que eu realmente quero dizer é que ele renderizava o vídeo em um lugar diferente da janela real que estava aberta na sua área de trabalho – uma espécie de plano de existência paralela à área de trabalho que você estava realmente vendo – antes de transferi-lo sorrateiramente.

Se você assistiu a uma única transmissão no Twitch ou a um filme da Marvel nos últimos 15 anos, provavelmente está muito familiarizado com o conceito de uma tela verde, uma superfície de cor sólida e brilhante que facilita a remoção de um fundo e o preenchimento com outra coisa. Uma praia havaiana, um monte de super-heróis de CGI se socando, etc. O termo mais preciso e agnóstico em relação à cor para a técnica é chroma keying, que é, na verdade, como o Windows renderizava todos os seus vídeos nos velhos tempos.

‘O programa de media player não renderizava os pixels de vídeo na tela’, escreveu recentemente Raymond Chen, um desenvolvedor veterano da Microsoft, em uma postagem de blog. Em vez disso, o Windows renderizava uma tela verde (ou uma cor diferente, dependendo da versão) e, em seguida, ‘renderizava os pixels de vídeo para uma superfície gráfica compartilhada com a placa de vídeo’. A etapa final era ‘dizer à placa de vídeo que sempre que ela visse um pixel verde prestes a ser escrito na tela, ela deveria substituí-lo por um pixel daquela superfície gráfica compartilhada.’

As superfícies gráficas eram geralmente chamadas de overlays porque (invisivelmente) sobrepunham a área de trabalho (isso será importante em breve). Chen disse que a técnica oferecia algumas vantagens: evitar conversões de formato de pixel se o formato de vídeo fosse diferente do do monitor do usuário e manter o desempenho estável ao desacoplar essa superfície gráfica do thread do processo que governava a interface do usuário. Assim, mesmo se o shell do Windows travasse por um segundo, o vídeo poderia continuar sendo reproduzido sem problemas.

Uma técnica mais avançada, chamada flipping, explorava essa vantagem de desempenho com duas superfícies gráficas compartilhadas, uma com o frame de vídeo ‘atual’ e outra com o frame de vídeo ‘próximo’, entre as quais a placa de vídeo alternava durante o vertical blank (enquanto a tela atualizava).

Essa antiga técnica de reprodução de vídeo não é muito interessante até chegarmos a como você poderia, intencionalmente ou inadvertidamente, atrapalhar a forma como o Windows usava o chroma keying, como Chen explicou:

‘Quando você tirava uma captura de tela, você obtinha os pixels que o Windows dava à placa de vídeo como o conteúdo da área de trabalho. Se um overlay está ativo, então estes não são os mesmos pixels que saíam da placa de vídeo e eram enviados para o seu monitor. O computador nunca vê esses pixels do monitor; eles são algo gerado dinamicamente pela placa de vídeo e enviados diretamente para o monitor. Sua captura de tela era uma captura de tela da tela da área de trabalho e continha pixels verdes onde o vídeo iria.

Agora, quando você carrega a imagem no Paint ou em qualquer outro visualizador de imagens, o Windows envia esses pixels verdes para a placa de vídeo, mas se o media player ainda estiver em execução, então seu overlay ainda está ativo, e se você colocar o Paint no mesmo lugar onde a janela do media player está, então os pixels verdes no Paint são alterados para os pixels do vídeo ativo. A placa de vídeo não sabe que os pixels vieram do Paint. Seu trabalho é procurar por pixels verdes em uma certa região da tela e alterá-los para os pixels da superfície compartilhada.

Se você mover a janela do Paint para outra posição onde ela não sobreponha o media player, ou se o media player não estiver reproduzindo um vídeo, você verá a verdadeira natureza do bitmap: São apenas um monte de pixels verdes.’

Renderizar vídeo costumava ser uma tarefa bastante exigente para os computadores, mas hoje em dia não há necessidade para esse tipo de técnica que permitia ao Windows reproduzir um pequeno arquivo mpeg de 240p a 60 quadros por segundo. Eu sei que é para melhor, mas, pessoalmente, fico um pouco triste que o Microsoft Paint seja inteligente o suficiente agora para fazer remoção de fundo e até salvar camadas como o Photoshop. Os computadores são muito mais divertidos quando você pode enganá-los.

Share this content:

Publicar comentário