С появлением HDR-видео стриминговые сервисы начали транслировать HDR-видео, ориентируясь на полноэкранный режим. Недавно приложения социальных сетей начали поддерживать HDR-видео и Ultra HDR, что свидетельствует о растущем интересе к использованию HDR в различных приложениях.
Поддержка HDR на Android
Ниже приведены основные этапы поддержки технологии HDR в Android за несколько лет:
Андроид 7
- Первоначальная поддержка декодирования и отображения HDR-видео.
- Дальнейшее развитие возможностей HDR.
Андроид 13
- Комплексная поддержка захвата, кодирования и отображения HDR-видео.
- Введение смешанной композиции SDR и HDR , определяющей различные отображаемые диапазоны яркости между SDR и HDR.
Андроид 14
- Поддержка HDR-изображений с Ultra HDR .
Поддержка снимков экрана с HDR также развивалась и претерпела ряд изменений за прошедшие годы.
Улучшения в возможностях создания скриншотов HDR
В этом разделе отслеживается развитие возможностей создания скриншотов HDR в последних обновлениях Android.
Андроид 9
SurfaceFlinger, графический редактор для Android, представляет поддержку HDR-видео. Рендеринг HDR-видео и скриншотов на GPU поддерживается комплексным полиномиальным тональным картографом. Эта кривая тональной компрессии не всегда эквивалентна тональной компрессии дисплея, поэтому скриншоты отличаются от содержимого экрана.
Андроид 13
Плагин тональной компрессии добавлен в блок рендеринга графического процессора SurfaceFlinger, позволяя производителю оборудования предоставлять шейдер графического процессора, соответствующий кривой тональной компрессии своего дисплея. Скриншоты практически соответствуют тому, что происходит на экране, но со следующими отличиями:
- Скриншоты сохраняются в формате SDR. Следовательно, при просмотре вместе с HDR-сценой HDR-области на скриншоте выглядят более тусклыми.
- Яркость SDR не контролируется, в результате чего содержимое SDR на снимке экрана выглядит таким же ярким, как и содержимое HDR.
Другими словами, любое HDR-видео, захваченное на снимке экрана, преобразуется в SDR-видео.
Андроид 14
Создание скриншотов в формате Ultra HDR представляет собой серьёзную проблему. В отличие от видео, изображения обычно визуализируются в кадровом буфере пользовательского интерфейса, что имеет два основных последствия:
- Изображения не могут иметь обработку, включая тональную коррекцию, отличную от окружающего пользовательского интерфейса.
- Приложения отвечают за тональную компрессию на основе источника при визуализации своего пользовательского интерфейса.
Чтобы облегчить эту проблему, есть три возможных варианта реализации скриншотов:
- Сохраняет детали HDR изображения Ultra HDR, что приводит к затемнению интерфейса приложения на снимке экрана.
- Сохраняет детали пользовательского интерфейса приложения, вызывая обрезку изображения Ultra HDR.
- Компромисс достигается за счет увеличения яркости пользовательского интерфейса приложения и обрезки ярких участков HDR.
В Android 14 реализован третий подход — увеличение яркости пользовательского интерфейса приложения и обрезка бликов HDR.
Android 15-QPR1
SurfaceFlinger включает в себя алгоритм локальной тональной компрессии для снимков экрана. Этот процесс включает в себя:
- Разделение входного изображения на более мелкие изображения.
- Вычисление максимальной яркости на каждом изображении и отбрасывание значений низкой яркости в каждом разделе.
- Интерполяция вычисленных яркостей посредством размытия и повторной выборки.
- Применение параметризованного тонального преобразователя Рейнхарда к входному изображению на основе интерполированных значений яркости.
Этот алгоритм демонстрирует значительные улучшения в качестве снимков экрана между Android 14 и Android 15-QPR1, как показано в следующих примерах:
Пример 1 — скриншот HDR-видео, наложенного поверх страницы Chrome с Ultra HDR. Цвета пользовательского интерфейса в новой реализации в основном сохранены, а изображение больше не обрезается.
Андроид 14 Android 15-QPR1 Рисунок 1. Сравнение Android 14 и Android 15-QPR1 для примера 1.
Пример 2 — скриншот HDR-видео, наложенный поверх настроек с последующими скриншотами. В Android 14 цвета на скриншотах постепенно становятся темнее. В Android 15-QPR1 тональный корректор корректно воспроизводит и сохраняет цвета пользовательского интерфейса.
Андроид 14 Android 15-QPR1 Рисунок 2. Сравнение Android 14 и Android 15-QPR1 для примера 2.
Андроид 16
Подобно Ultra HDR , скриншоты HDR сохраняют карту усиления в файле снимка экрана для восстановления HDR-представления во время рендеринга. Однако, в отличие от Ultra HDR, скриншот сохраняется в формате PNG для обратной совместимости с системами, принимающими скриншоты PNG.
Подробности создания скриншота следующие:
- При отображении на устройстве HDR-контента снимок экрана создается с использованием пикселей FP16.
- Локальный преобразователь тонов, описанный в Android 15-QPR1, генерирует 8-битную базовую SDR-версию.
- 8-битная карта усиления создается путем объединения базового SDR-изображения с HDR-изображением.
- Базовая версия SDR и карта усиления кодируются в один файл PNG.
Подробности кодирования PNG следующие:
- Карта усиления закодирована как изображение PNG, которое включает фрагмент gmAP, содержащий метаданные ISO 21496-1 для карты усиления.
- Базовая версия SDR кодируется как PNG-изображение, включающее фрагмент gmAP, содержащий версию метаданных ISO 21496-1 . Это PNG-изображение также включает фрагмент gdAT, содержащий весь закодированный PNG-файл карты усиления.
На следующем рисунке показана структура фрагментов PNG:
Рисунок 3. Расположение фрагментов PNG.
В Android 16 кодек PNG поддерживает как кодирование, так и декодирование PNG-файлов. Приложения могут отображать PNG-файлы с картой усиления так же, как Ultra HDR .