Ключевые слова MUST, MUST NOT, SHOULD и STRONGLY RECOMMENDED в этом документе следует интерпретировать в соответствии с RFC 2119 .
Гостевая система (образ виртуальной машины)
Требования, изложенные в этом разделе, относятся к гостевой системе.
Память
Система ОБЯЗАТЕЛЬНО должна предоставлять минимум 2 ГБ оперативной памяти на каждую виртуальную машину.
Двоичные интерфейсы приложений
Варианты реализации устройств:
- Должен быть совместим с одним или несколькими определенными ABI Android NDK .
- Для всех образов виртуальных машин на одном устройстве необходимо использовать один и тот же ABI Android NDK .
- Необходимо обеспечить совместимость исходного кода (например, совместимость заголовочных файлов) и бинарную совместимость (по ABI) с каждой из необходимых библиотек в следующем списке.
- Необходимо обеспечить доступность для приложений SDV всех следующих библиотек, предоставляющих собственные API:
-
libc(библиотека на языке C) -
libdl(динамический компоновщик) -
libdrm.so(Библиотека пользовательского пространства Direct Rendering Manager) -
libgbm.so(Универсальное управление буфером) -
libEGL.so(собственное управление поверхностями OpenGL) -
libGLESv1_CM.so(OpenGL ES 1.x) -
libGLESv2.so(OpenGL ES 2.0) -
libGLESv3.so(OpenGL ES 3.x) -
liblog(ведение логов в Android) -
libtinyalsav2.so(запись и воспроизведение аудио) -
libvulkan.so(Vulkan)
-
- Не допускается добавление или удаление общедоступных функций для указанных выше собственных библиотек.
- Необходимо экспортировать все символы функций OpenGL ES 3.1 и Android Extension Pack, определенные в NDK, через библиотеку libGLESv3.so. Обратите внимание, что хотя все символы ДОЛЖНЫ присутствовать, OpenGL ES более подробно описывает требования к полной реализации каждой соответствующей функции.
- Необходимо экспортировать основные символы функций Vulkan 1.1, а также расширения
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1иVK_KHR_get_physical_device_properties2через библиотекуlibvulkan.so. Обратите внимание, что хотя все символы ДОЛЖНЫ присутствовать, Vulkan более подробно описывает требования, когда ожидается полная реализация каждой соответствующей функции. - Сборка должна производиться с использованием исходного кода и заголовочных файлов, доступных в основном проекте Android Open Source Project.
Графика
- Система ОБЯЗАТЕЛЬНО должна использовать
virtio-gpuдля аппаратного ускорения графики. Драйвер гостевой системы ДОЛЖЕН использоватьgfxstreamдля рендеринга.
Вход
Гостевая система ОБЯЗАТЕЛЬНО должна поддерживать входные события, пересылаемые из хост-системы с помощью virtio-input .
OpenGL ES
Варианты реализации устройств:
- Необходимо корректно определить поддерживаемые версии OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) через собственные API.
- ОБЯЗАТЕЛЬНО должна включать поддержку всех соответствующих нативных API для каждой поддерживаемой версии OpenGL ES.
- ОБЯЗАТЕЛЬНО должна поддерживать OpenGL ES 1.1 и 2.0.
- Настоятельно рекомендуется поддерживать OpenGL ES 3.1.
- Должна поддерживать OpenGL ES 3.2.
- Необходимо сообщать об использовании управляемых API OpenGL ES и собственных API, а также о любых других реализованных расширениях OpenGL ES, и, наоборот, НЕ следует сообщать о строках расширений, которые не поддерживаются.
- ОБЯЗАТЕЛЬНО должна поддерживать следующие расширения:
-
EGL_EXT_image_dma_buf_import -
EGL_EXT_image_dma_buf_import_modifiers -
EGL_KHR_fence_sync -
EGL_KHR_image_base -
EGL_KHR_wait_sync -
GL_OES_EGL_image
-
Настоятельно рекомендуется использовать библиотеку ANGLE с бэкендом Vulkan для реализации OpenGL ES на устройствах.
Вулкан
Варианты реализации устройств:
- Настоятельно рекомендуется включить поддержку Vulkan 1.3.
- НЕ ДОЛЖНО поддерживать вариант версии Vulkan (то есть, вариантная часть основной версии Vulkan ДОЛЖНА быть равна нулю).
- ОБЯЗАТЕЛЬНО должна поддерживать следующие расширения:
-
VK_ANDROID_external_memory_android_hardware_buffer -
VK_EXT_external_memory_dma_buf -
VK_EXT_queue_family_foreign -
VK_KHR_external_memory_fd -
VK_KHR_external_semaphore_fd
-
Мультимедийная совместимость
В устройствах ОБЯЗАТЕЛЬНО должна быть возможность воспроизведения необработанного аудиоконтента со следующими характеристиками:
- Исходные форматы: линейный PCM, 16-битный, 8-битный, с плавающей запятой.
- Каналы: моно, стерео, поддерживаются многоканальные конфигурации с количеством каналов до восьми.
- Частота дискретизации (в Гц):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 в указанных выше конфигурациях каналов.
- 96000 в моно и стерео режимах
Устройства ДОЛЖНЫ позволять захват необработанного аудиоконтента. Как минимум, устройства ДОЛЖНЫ поддерживать следующие характеристики:
- Формат: линейный PCM, 16-бит
- Частота дискретизации: 8000, 11025, 16000, 44100, 48000 Гц
- Каналы: Моно
Встроенные устройства ДОЛЖНЫ позволять захват необработанного аудиоконтента со следующими характеристиками:
- Формат: линейный PCM, 16-битный и 24-битный
- Частота дискретизации: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Гц
- Каналы: Количество каналов равно количеству микрофонов на устройстве.
Реализации устройств ДОЛЖНЫ обеспечивать поддержку воспроизведения и захвата звука через API
libtinyalsav2.so, используя устройствоvirtio-soundдля доступа к оборудованию, и ДОЛЖНЫ поддерживать API ALSA .Видеокодеры и декодеры ДОЛЖНЫ поддерживать как минимум один из планарных или полупланарных цветовых форматов YUV420 8:8:8.
Видеодекодеры и кодеры ОБЯЗАТЕЛЬНО должны поддерживать кодек H.264 AVC.
В устройствах ОБЯЗАТЕЛЬНО должна поддерживаться основная модель H.264 уровня 3.1 и базовая модель. Поддержка произвольного порядка срезов (ASO), гибкого порядка макроблоков (FMO) и избыточных срезов (RS) является необязательной.
Видеокодеры:
- Должен поддерживать профили кодирования видео стандартного разрешения (SD), указанные в следующей таблице.
Должен поддерживать профили кодирования видео высокой четкости (HD), указанные в следующей таблице.
SD (низкое качество) SD (высокое качество) HD 720p HD 1080p Разрешение видео 320 x 240 пикселей 720 x 480 пикселей 1280 x 720 пикселей 1920 x 1080 пикселей частота кадров видео 20 кадров в секунду 30 кадров в секунду 30 кадров в секунду 30 кадров в секунду Видеобитрейт 384 Кбит/с 2 Мбит/с 4 Мбит/с 10 Мбит/с
Видеодекодеры:
- Необходимо поддерживать профили декодирования видео HD 720p, указанные в следующей таблице.
Необходимо поддерживать профили декодирования видео HD 1080p, указанные в следующей таблице.
SD (низкое качество) SD (высокое качество) HD 720p HD 1080p Разрешение видео 320 x 240 пикселей 720 x 480 пикселей 1280 x 720 пикселей 1920 x 1080 пикселей частота кадров видео 30 кадров в секунду 30 кадров в секунду 60 кадров в секунду 30 кадров в секунду Видеобитрейт 800 Кбит/с 2 Мбит/с 8 Мбит/с 20 Мбит/с
Внедрение устройств ОБЯЗАТЕЛЬНО должно обеспечивать поддержку медиакодеков, использующих API Video4Linux.
В реализациях устройств ОБЯЗАТЕЛЬНО должен быть обеспечен доступ к аппаратному видеодекодеру с использованием API Video4Linux.
Все аппаратные кодировщики видео и изображений ДОЛЖНЫ поддерживать кодирование кадров с аппаратных камер. Реализации устройств ДОЛЖНЫ обеспечивать аппаратный доступ для кодирования и декодирования видео через
virtio-media.Внедрение устройств ОБЯЗАТЕЛЬНО должно обеспечивать доступ к видеокамере с использованием API Video4Linux.
Хост-система (гипервизор и аппаратное обеспечение)
Требования, изложенные в этом разделе, относятся к хост-системе и среде гипервизора.
Виртуализация
- Помимо устройств
virtio, необходимых для основного профиля, хост-система ДОЛЖНА обеспечивать следующее:-
virtio-gpu: Для виртуального графического процессора и дисплея -
virtio-input: Для пересылки событий ввода (например, касания, клавиатуры) -
virtio-sound: Для виртуальных аудиоустройств -
virtio-videoилиvirtio-media: для виртуальных видеокодеков.
-
Вход
- Устройство ДОЛЖНО поддерживать устройства ввода и пересылать события в гостевые системы с помощью
virtio-input. Устройство ДОЛЖНО поддерживать ввод с помощью указателя, кнопок и поворотного регулятора.