HDR на скриншотах Android

С момента появления видео с расширенным динамическим диапазоном (HDR) потоковые сервисы начали транслировать HDR-видео, уделяя особое внимание полноэкранному режиму. Недавно приложения для социальных сетей начали поддерживать HDR-видео и Ultra HDR, что указывает на растущий интерес к внедрению HDR в различных приложениях.

Поддержка HDR в Android

Ниже приведены основные этапы поддержки Android технологии HDR за несколько лет:

Андроид 7

  • Начальная поддержка декодирования и отображения HDR-видео.
  • Продолжающееся развитие возможностей HDR.

Андроид 13

  • Комплексная поддержка захвата, кодирования и отображения HDR-видео.
  • Введение смешанной композиции SDR и HDR , определяющей различные диапазоны отображаемой яркости между SDR и HDR.

Андроид 14

  • Поддержка изображений HDR с Ultra HDR .

Поддержка снимков экрана с HDR также развивалась и претерпела ряд изменений за прошедшие годы.

Улучшения в возможностях скриншотов HDR

В этом разделе отслеживается развитие возможностей HDR-снимков в последних обновлениях Android.

Андроид 9

SurfaceFlinger, графический наборщик Android, представляет поддержку HDR-видео. Графический рендеринг HDR-видео и снимков экрана поддерживается с помощью сложного полиномиального преобразователя тонов. Эта кривая тонального отображения не всегда эквивалентна тональному преобразователю дисплея, поэтому снимки экрана отличаются от содержимого на экране.

Андроид 13

Плагин отображения тонов добавлен в блок рендеринга графического процессора SurfaceFlinger, что позволяет OEM-производителю предоставлять шейдер графического процессора, соответствующий кривой тонального отображения их дисплея. Скриншоты практически соответствуют тому, что на экране, но со следующими отличиями:

  • Скриншоты остаются в формате SDR. Следовательно, при просмотре рядом со сценой HDR области HDR на снимке экрана кажутся более тусклыми.
  • Яркость SDR не управляется, в результате чего содержимое SDR на снимке экрана выглядит таким же ярким, как содержимое HDR.

Другими словами, любое HDR-видео, снятое на снимке экрана, преобразуется в SDR-видео.

Андроид 14

Ultra HDR представляет собой серьезную проблему для создания скриншотов. В отличие от видео, изображения обычно визуализируются внутри кадрового буфера пользовательского интерфейса, что имеет два основных последствия:

  • Изображения не могут иметь обработку изображений, включая тональное отображение, которая отличается от окружающего пользовательского интерфейса.
  • Приложения отвечают за отображение тонов на основе источника при рендеринге своего пользовательского интерфейса.

Чтобы облегчить эту проблему, существует три возможных реализации создания снимков экрана:

  • Сохраните детали HDR изображения Ultra HDR, в результате чего пользовательский интерфейс приложения на снимке экрана будет затемнен.
  • Сохраните детали пользовательского интерфейса приложения, что приведет к обрезке изображения Ultra HDR.
  • Найдите компромисс, улучшив пользовательский интерфейс приложения и обрезав блики HDR.

В Android 14 реализован третий подход: повышение яркости пользовательского интерфейса приложения и обрезка ярких участков HDR.

Андроид 15-QPR1

SurfaceFlinger включает в себя локальный алгоритм тонального отображения снимков экрана. Этот процесс включает в себя:

  • Разделение входного изображения на более мелкие изображения.
  • Вычисление максимальной яркости в каждом изображении и отбрасывание значений низкой яркости в каждом разделе.
  • Интерполяция вычисленных яркостей посредством размытия и повторной выборки.
  • Применение параметризованного тонального преобразователя Рейнхарда к входному изображению на основе интерполированных значений яркости.

Этот алгоритм демонстрирует значительные улучшения снимков экрана между Android 14 и Android 15-QPR1, как показано в следующих примерах:

  • Пример 1 — это снимок экрана HDR-видео, наложенного поверх страницы Chrome, содержащей Ultra HDR. В новой реализации в основном сохранены цвета пользовательского интерфейса, а изображение больше не обрезается.

    Андроид 14 Андроид 15-QPR1
    Пример 1 в Android 14Пример 1 в Android 15qpr

    Рисунок 1. Сравнение Android 14 и Android 15-QPR1 для примера 1.

  • Пример 2 — это снимок экрана HDR-видео, наложенный поверх настроек с последующими снимками экрана. В Android 14 цвета скриншотов становятся темнее. В Android 15-QPR1 тональный преобразователь правильно воспроизводит и сохраняет цвета пользовательского интерфейса.

    Андроид 14 Андроид 15-QPR1
    Пример 2 в Android 14Пример 2 в Android 15qpr

    Рисунок 2. Сравнение Android 14 и Android 15-QPR1 для примера 2.