10-битный выход камеры

В Android 13 и более поздних версиях поддерживается 10-битный вывод камеры с помощью профилей динамического диапазона, которые клиент камеры может настроить как часть конфигурации потока. Производители устройств могут добавить поддержку 10-битных профилей динамического диапазона, таких как HLG10, HDR 10, HDR 10+ и Dolby Vision.

Поддержка 10-битного вывода камеры позволяет клиентам камеры обнаруживать поддерживаемые 10-битные профили динамического диапазона устройства, вызывая getSupportedProfiles. Затем фреймворк возвращает экземпляр DynamicRangeProfiles, который содержит информацию о поддерживаемых профилях динамического диапазона и, если доступно, ограничениях запроса на съемку. Профиль HLG10 должен поддерживаться. Рекомендуемый профиль динамического диапазона указан в поле REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE.

Клиенты камеры могут настраивать комбинации потоков, вызывая setDynamicRangeProfile. Дополнительную информацию об обязательных сочетаниях выходных потоков можно найти в таблице Дополнительные гарантированные конфигурации 10-битного выходного сигнала в разделе Обычная запись.

Требования

Чтобы поддерживать 10-битный вывод камеры, устройство должно иметь датчик камеры с поддержкой 10 бит или выше и соответствующую поддержку ISP. Подробные сведения о требованиях к совместимости для поддержки 10-битного цвета приведены в разделе 7.5. Камеры в CDD.

Реализация

Чтобы обеспечить поддержку 10-битного вывода камеры, производители устройств должны выполнить следующие интеграции Camera AIDL HAL:

  • Добавьте ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT в возможности камеры.
  • Заполните ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP всеми поддерживаемыми профилями динамического диапазона и битовой картой их ограничений. Должен поддерживаться профиль HLG10. Также необходимо указать рекомендуемый профиль динамического диапазона, чтобы клиенты камеры знали, какой формат лучше всего поддерживается.
  • Обеспечьте поддержку значения профиля динамического диапазона при настройке потока для потоков, использующих формат P010, или поддержку формата, определенного реализацией (ImageFormat.PRIVATE).
  • В зависимости от профиля динамического диапазона задайте статический или динамический буфер метаданных обработанных буферов Gralloc 4, прежде чем уведомлять сервис камеры.

Дополнительную информацию о 10-битном выводе камеры в Camera HAL можно найти в следующих разделах metadata_definitions.xml:

Пример реализации HAL камеры с поддержкой 10-битного вывода можно найти в /hardware/google/camera/devices/EmulatedCamera/hwl.

Проверка

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

Для визуальной проверки 10-битного видео предполагается, что устройство поддерживает HDR (яркость дисплея более 1000 нит), а приложение для просмотра видео (например, Google Фото) поддерживает воспроизведение HDR-видео.

Проверка функциональной корректности API

Чтобы проверить функциональную корректность API для 10-битного вывода камеры, запустите следующие тесты CTS, ITS и VTS:

Сравнение встроенной камеры и стороннего приложения

Мы настоятельно рекомендуем убедиться, что результаты съемки 10-битных видео в стороннем приложении похожи на результаты в нативном приложении камеры или идентичны им. Это означает, что настройки экспозиции, динамического диапазона, цвета и другие должны переноситься из нативного приложения в сторонние. Чтобы проверить, как стороннее приложение, поддерживающее 10-битный вывод камеры, записывает видео на вашем устройстве, используйте пример приложения Camera2Video на GitHub. Приведенные ниже рекомендации иллюстрируют видимые аспекты HDR без объективных числовых значений, поскольку датчики, панели, условия просмотра и предпочтения поставщиков могут быть разными.

Рекомендуемые сцены для сравнения

Чтобы сравнить встроенное приложение камеры со сторонним, снимите видео в нескольких разных сценах с помощью встроенного приложения камеры и примера приложения Camera2Video. Ниже приведены примеры сцен, которые можно использовать для сравнения:

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

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

Сравнение стандартного и расширенного динамического диапазона

Чтобы убедиться, что использование 10-битного профиля динамического диапазона дает преимущества по сравнению со стандартным профилем динамического диапазона, сравните видео, снятые с использованием SDR (без профиля HDR), с видео HDR. Убедитесь, что ключевые аспекты HDR присутствуют в записях. Чтобы сравнить SDR и HDR, используйте пример приложения Camera2Video и предложенные сцены для сравнения встроенного приложения камеры и сторонних приложений.

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

  • В сцене с умеренным или слабым освещением яркие блики свечи или небольшого источника света в HDR-клипе отображаются с максимальной яркостью дисплея (возможно, до 1000 нит), а в SDR-клипе – с максимальной яркостью для SDR (примерно 100 нит). В HDR-клипе яркие блики должны выделяться на экране, передавая восприятие пользователем истинного динамического диапазона сцены. По сравнению с HDR-клипом SDR-клип должен выглядеть более плоским и менее ярким.
  • В яркой сцене HDR-клип показывает заметную разницу в яркости экрана по сравнению с SDR-клипом. Для HDR-клипа яркость экрана для всей сцены (в зависимости от запаса) должна быть выше, например до 800 нит, а для ярких бликов, таких как хромированные бамперы, – ещё выше, почти максимальной.
  • При съемке в помещении с низким динамическим диапазоном HDR- и SDR-клипы похожи по цвету и тону, но HDR-клип может быть ярче. HDR-видео не должно быть темнее SDR-видео. Если это невозможно, убедитесь, что стороннее приложение работает так же, как и встроенное.