Как Ambilight стыкуется с полотном
Trapezoid Player делит один кадр на два слоя. Внутри четырёх углов полотна картинка резкая. Снаружи этих углов Ambilight берёт цвета края кадра. Слои сходятся в одном цвете, поэтому полотно не вырезает чёрную рамку в Ambilight на стене.
Полотно — это трапеция, а не обрезка
Вы ставите четыре точки на изображении проектора: левый верх, правый верх, правый низ и левый низ полотна. Плееру нужна только эта геометрия. Гомография, то же преобразование, которым выпрямляют снимок документа, переносит прямоугольник видео на этот четырёхугольник. Пиксели проектора вне четырёхугольника становятся Ambilight на стене.
Почему размытие по чёрному рисует рамку
Ambilight, полученный размытием кадра с чёрным полем вокруг трапеции, подмешивает этот чёрный в последние пиксели картинки. Получается тёмный обод ровно по краю полотна. Ambilight должен собираться из настоящих пикселей текущего кадра и стыковаться с резкой картинкой без пустого чёрного между ними.
Windows рисует только тот свет, который есть
На Windows кадр укладывается в трапецию через OpenCV. На границе повторно берутся крайние пиксели видео, поэтому у ребра нет чёрного штриха. Цвета края записываются только снаружи четырёхугольника. Обычное размытие всё равно приняло бы незакрашенную середину за чёрный. Размытие делится на маску тех мест, где краска есть, и пустые пиксели не тянут цвет к чёрному. Резкое видео копируется сверху, только внутри трапеции. Гомография считается один раз: углы во время фильма не двигаются.
Android не берёт чёрный вне трапеции
Телефон или приставка не могут крутить каждый кадр на процессоре и оставаться плавными. На Android кадры даёт ExoPlayer, а рисует OpenGL ES 2. Для каждого пикселя экрана шейдер находит точку в видео. Вне трапеции эта точка выпала бы из картинки, поэтому проход подсветки прижимает её к ближайшему краевому пикселю. Размытие идёт по уменьшенной копии этого поля, уже полного цвета. Затем поверх рисуется резкая картинка, с мягким краем шириной около одного пикселя. Полотно и Ambilight сходятся в общем цвете.
Кнопки используют то же отображение и остаются на полотне. Шаги для платформ — на страницах Windows и Android.