В 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:
DYNAMIC_RANGE_TEN_BIT- Сведения о HAL для
availableDynamicRangeProfilesMap recommendedTenBitDynamicRangeProfile10BIT_OUTPUT
Пример реализации HAL камеры с поддержкой 10-битного вывода можно найти в /hardware/google/camera/devices/EmulatedCamera/hwl.
Проверка
Чтобы проверить реализацию 10-битного вывода камеры и убедиться, что сторонние приложения могут включить эту функцию, рекомендуем выполнить следующие три этапа проверки.
- Как проверить правильность работы API
- Как сравнить встроенное приложение "Камера" со сторонним
- Сравнение стандартного и расширенного динамического диапазона
Для визуальной проверки 10-битного видео предполагается, что устройство поддерживает HDR (яркость дисплея более 1000 нит), а приложение для просмотра видео (например, Google Фото) поддерживает воспроизведение HDR-видео.
Проверка функциональной корректности API
Чтобы проверить функциональную корректность API для 10-битного вывода камеры, запустите следующие тесты CTS, ITS и VTS:
hardware/interfaces/camera/provider/aidl/vts/: Проверяет основные функции обнаружения, настройки и потоковой передачи, а также наличие метаданных HDR, если они требуются.tests/camera/src/android/hardware/camera2/cts/– обеспечивает работу камеры в соответствии со спецификациями AOSP API.cts/apps/CameraITS: подтверждает, что при использовании профилей HDR видео работает корректно. Тест:tests/scene4/test_video_aspect_ratio_and_crop.py.
Сравнение встроенной камеры и стороннего приложения
Мы настоятельно рекомендуем убедиться, что результаты съемки 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-видео. Если это невозможно, убедитесь, что стороннее приложение работает так же, как и встроенное.