Las palabras clave DEBE, NO DEBE, DEBERÍA y ALTAMENTE RECOMENDADO en este documento se deben interpretar como se describe en RFC 2119.
Sistema invitado (imagen de VM)
Los requisitos de esta sección se aplican al sistema invitado.
Memoria
El sistema DEBE proporcionar un mínimo de 2 GB de memoria por VM.
Interfaces binarias de aplicaciones
Implementaciones de dispositivos:
- DEBE ser compatible con una o más ABI del NDK de Android definidas.
- DEBE usar la misma ABI del NDK de Android para todas las imágenes de VM en el mismo dispositivo.
- DEBE ser compatible con el código fuente (por ejemplo, con el encabezado) y con el código binario (para la ABI) con cada biblioteca requerida en la siguiente lista.
- DEBE poner a disposición de las apps de SDV todas las siguientes bibliotecas, que proporcionan APIs nativas:
libc(biblioteca en C)libdl(vinculador dinámico)libdrm.so(biblioteca de espacio de usuario de Direct Rendering Manager)libgbm.so(Administración genérica de búferes)libEGL.so(administración de superficies OpenGL nativas)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(Registro de Android)libtinyalsav2.so(grabación y reproducción de audio)libvulkan.so(Vulkan)
- NO DEBE agregar ni quitar las funciones públicas de las bibliotecas nativas anteriores.
- DEBE exportar todos los símbolos de funciones de OpenGL ES 3.1 y Android Extension Pack, según se definen en el NDK, a través de la biblioteca libGLESv3.so. Ten en cuenta que, si bien todos los símbolos DEBEN estar presentes, OpenGL ES describe con más detalle los requisitos para cuando se espera la implementación completa de cada función correspondiente.
- DEBE exportar los símbolos de funciones principales de Vulkan 1.1, así como las extensiones
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1yVK_KHR_get_physical_device_properties2a través de la bibliotecalibvulkan.so. Ten en cuenta que, si bien todos los símbolos DEBEN estar presentes, Vulkan describe con más detalle los requisitos para cuando se espera la implementación completa de cada función correspondiente. - DEBE compilarse con el código fuente y los archivos de encabezado disponibles en el proyecto de código abierto de Android upstream.
Gráficos
- El sistema DEBE usar
virtio-gpupara los gráficos acelerados por hardware. El controlador del lado del huésped DEBE usargfxstreampara la renderización.
Entrada
El sistema invitado DEBE incluir compatibilidad con los eventos de entrada reenviados desde el sistema host con virtio-input.
OpenGL ES
Implementaciones de dispositivos:
- DEBE identificar correctamente las versiones compatibles de OpenGL ES (1.1, 2.0, 3.0, 3.1 y 3.2) a través de las APIs nativas.
- DEBE incluir compatibilidad con todas las APIs nativas correspondientes para cada versión de OpenGL ES que admita.
- DEBE admitir OpenGL ES 1.1 y 2.0.
- Se RECOMIENDA ENCARECIDAMENTE que admitan OpenGL ES 3.1.
- DEBE admitir OpenGL ES 3.2.
- DEBEN informar con las APIs administradas de OpenGL ES y las APIs nativas cualquier otra extensión de OpenGL ES que hayan implementado y, a la inversa, NO DEBEN informar cadenas de extensión que no admitan.
- DEBE admitir las siguientes extensiones:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
SE RECOMIENDA ENCARECIDAMENTE que las implementaciones de dispositivos implementen OpenGL ES con la biblioteca de ANGLE y el backend de Vulkan.
Vulkan
Implementaciones de dispositivos:
- Se RECOMIENDA ENCARECIDAMENTE que incluyan compatibilidad con Vulkan 1.3.
- NO DEBE admitir una versión variante de Vulkan (es decir, la parte variante de la versión principal de Vulkan DEBE ser cero).
- DEBE admitir las siguientes extensiones:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
Compatibilidad con contenido multimedia
Las implementaciones de dispositivos DEBEN permitir la reproducción de contenido de audio sin procesar con las siguientes características:
- Formatos de origen: PCM lineal, 16 bits, 8 bits, flotante
- Canales: Mono, estéreo y configuraciones multicanal válidas con hasta ocho canales
- Tasas de muestreo (en Hz):
- 8,000, 11,025, 16,000, 22,050, 24,000, 32,000, 44,100 y 48,000 en las configuraciones de canales que se mencionaron anteriormente
- 96,000 en mono y estéreo
Las implementaciones de dispositivos DEBEN permitir la captura de contenido de audio sin procesar. Como mínimo, las implementaciones de dispositivos DEBEN admitir las siguientes características:
- Formato: PCM lineal, 16 bits
- Tasas de muestreo: 8,000, 11,025, 16,000, 44,100 y 48,000 Hz
- Canales: Mono
Las implementaciones de dispositivos DEBEN permitir la captura de contenido de audio sin procesar con las siguientes características:
- Formato: PCM lineal, 16 y 24 bits
- Tasas de muestreo: 8,000, 11,025, 16,000, 22,050, 24,000, 32,000, 44,100 y 48,000 Hz
- Canales: La cantidad de canales debe ser igual a la cantidad de micrófonos del dispositivo.
Las implementaciones de dispositivos DEBEN proporcionar compatibilidad con la reproducción y captura de audio a través de la API de
libtinyalsav2.so, usando el dispositivovirtio-soundpara el acceso al hardware, y DEBEN admitir la API de ALSA.Los codificadores y decodificadores de video DEBEN admitir al menos un formato de color YUV420 8:8:8 planar o semiplanar.
Los codificadores y decodificadores de video DEBEN admitir el códec H.264 AVC.
Las implementaciones de dispositivos DEBEN admitir el perfil principal de H.264 en el nivel 3.1 y el perfil de Baseline. La compatibilidad con el ordenamiento arbitrario de segmentos (ASO), el ordenamiento flexible de macrobloques (FMO) y los segmentos redundantes (RS) es opcional.
Codificadores de video:
- DEBE admitir los perfiles de codificación de video en definición estándar (SD) que se indican en la siguiente tabla.
DEBE admitir los perfiles de codificación de video en alta definición (HD) como se indica en la siguiente tabla.
SD (baja calidad) SD (alta calidad) HD 720p HD 1080p Resolución de video 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Velocidad de fotogramas del video 20 fps 30 FPS 30 FPS 30 FPS Tasa de bits de video 384 Kbps 2 Mbps 4 Mbps 10 Mbps
Decodificadores de video:
- DEBE admitir los perfiles de decodificación de video en HD de 720 p que se indican en la siguiente tabla.
DEBE admitir los perfiles de decodificación de video en HD 1080p que se indican en la siguiente tabla.
SD (baja calidad) SD (alta calidad) HD 720p HD 1080p Resolución de video 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Velocidad de fotogramas del video 30 FPS 30 FPS 60 fps 30 FPS Tasa de bits de video 800 Kbps 2 Mbps 8 Mbps 20 Mbps
Las implementaciones de dispositivos DEBEN proporcionar compatibilidad con los códecs de medios a través de la API de Video4Linux.
Las implementaciones de dispositivos DEBEN proporcionar acceso a un decodificador de video por hardware a través de la API de Video4Linux.
Todos los codificadores de imágenes y videos acelerados por hardware DEBEN admitir la codificación de fotogramas desde las cámaras de hardware. Las implementaciones de dispositivos DEBEN proporcionar acceso de hardware para la codificación y decodificación de videos a través de
virtio-media.Las implementaciones de dispositivos DEBEN proporcionar acceso a una cámara de video a través de la API de Video4Linux.
Sistema host (hipervisor y hardware)
Los requisitos de esta sección se aplican al sistema host y al entorno del hipervisor.
Virtualización
- Además de los dispositivos
virtiorequeridos por el perfil principal, el sistema host DEBE proporcionar lo siguiente:virtio-gpu: Para GPU y pantalla virtualesvirtio-input: Para reenviar eventos de entrada (por ejemplo, táctiles o de teclado)virtio-sound: Para dispositivos de audio virtualesvirtio-videoovirtio-media: Para dispositivos de códec de video virtuales
Entrada
- El dispositivo DEBE admitir dispositivos de entrada y reenviar eventos a sistemas invitados con
virtio-input. El dispositivo DEBE admitir entradas de puntero, botón y control rotativo.