Windows тайно использовал зеленые экраны для рендеринга видео, что позволяло превратить MS Paint в видеопроигрыватель.

Windows тайно использовал зеленые экраны для рендеринга видео, что позволяло превратить MS Paint в видеопроигрыватель.

Если вы когда-либо открывали старый Windows Media Player в эпоху Windows 95, 98 или XP, приготовьтесь к небольшому удивлению: он вас обманывал.

И под обманом я подразумеваю, что видео отображалось не внутри окна на вашем рабочем столе, а где-то в параллельной реальности, прежде чем хитро было перенесено на экран.

Если вы хоть раз смотрели стрим на Twitch или фильм Marvel за последние 15 лет, вы знакомы с концепцией зеленого экрана — яркой, однородной поверхности, которая позволяет легко заменить фон чем угодно. Гавайский пляж, группа супергероев, сражающихся друг с другом и так далее. Технический термин для этой технологии — хромакей, и именно так Windows обрабатывал все видео в те времена.

«Программа медиаплеера не выводила пиксели видео на экран», — недавно написал в блоге давний разработчик Microsoft Рэймонд Чен. Вместо этого Windows создавала зеленый экран (или другой цвет, в зависимости от версии), а затем «передавала пиксели видео на графическую поверхность, общую с видеокартой». Последним шагом было «сообщить видеокарте, что всякий раз, когда она видит зеленый пиксель, который должен быть выведен на экран, следует заменить его пикселем с этой общей графической поверхности».

Эти графические поверхности обычно назывались оверлеями, так как они (невидимо) накладывались на рабочий стол. Чен отметил, что такая техника имела несколько преимуществ: избегание преобразования форматов пикселей, если формат видео отличался от формата монитора пользователя, и поддержание стабильной производительности за счет отделения этой графической поверхности от потока процесса, управляющего пользовательским интерфейсом. Даже если оболочка Windows зависала на секунду, видео продолжало плавно воспроизводиться.

Более продвинутая техника, называемая переворачиванием, усиливала это преимущество, используя две общие графические поверхности: одну с «текущим» кадром видео и одну с «следующим» кадром, между которыми видеокарта переключалась во время вертикальной синхронизации (при обновлении экрана).

Этот старый метод воспроизведения видео не очень интересен, пока мы не рассмотрим, как можно было намеренно или случайно запутать работу Windows с хромакеем, как объяснил Чен:

«Когда вы делали скриншот, вы получали пиксели, которые Windows передавала видеокарте как содержимое рабочего стола. Если оверлей активен, то это не те пиксели, которые видеокарта отправляет на ваш монитор. Компьютер никогда не видит эти пиксели монитора; они генерируются на лету видеокартой и отправляются напрямую на монитор. Ваш скриншот — это снимок экрана рабочего стола, и он содержит зеленые пиксели там, где должно быть видео.

Теперь, когда вы загружаете изображение в Paint или любую другую программу просмотра изображений, Windows отправляет эти зеленые пиксели на видеокарту, но если медиаплеер все еще работает, его оверлей все еще активен, и если вы разместите окно Paint в том же месте, где находится окно медиаплеера, то зеленые пиксели в Paint превратятся в пиксели активного видео. Видеокарта не знает, что пиксели пришли из Paint. Ее задача — искать зеленые пиксели в определенной области экрана и заменять их пикселями с общей поверхности.

Если переместить окно Paint в другое место, где оно не пересекается с медиаплеером, или если медиаплеер не воспроизводит видео, вы увидите истинную природу изображения: это просто набор зеленых пикселей.»

Рендеринг видео когда-то был весьма сложной задачей для компьютеров, но теперь такие приемы больше не нужны, чтобы Windows могла воспроизвести крошечный 240p mpeg с частотой 60 кадров в секунду. Я понимаю, что это к лучшему, но мне немного грустно, что Microsoft Paint теперь достаточно умен, чтобы удалять фон и даже сохранять слои, как Photoshop. Компьютеры были интереснее, когда их можно было перехитрить.

Оставить коментарий
Комментарий:
Комментарии
  1. user

    Очень интересная статья! Не знал, что раньше видео обрабатывалось таким сложным способом. В наше время мы уже привыкли к высоким технологиям, и забываем, как далеко шагнули компьютеры. Приятно узнать, как раньше решали технические задачи.