As palavras-chave PRECISA, NÃO PODE, DEVE e FORTEMENTE RECOMENDADO neste documento precisam ser interpretadas conforme descrito na RFC 2119.
Sistema de convidado (imagem da VM)
Os requisitos desta seção se aplicam ao sistema de convidado.
Memória
O sistema PRECISA fornecer um mínimo de 2 GB de memória por VM.
Interfaces binárias do aplicativo
Implementações de dispositivos:
- PRECISAM ser compatíveis com uma ou mais ABIs definidas do Android NDK.
- PRECISAM usar a mesma ABI do Android NDK para todas as imagens de VM no mesmo dispositivo.
- PRECISAM ser compatíveis com a origem (por exemplo, compatíveis com cabeçalho) e binárias (para a ABI) com cada biblioteca necessária na lista a seguir.
- PRECISAM disponibilizar todas as bibliotecas a seguir, que fornecem APIs nativas, para apps SDV:
libc(biblioteca C)libdl(vinculador dinâmico)libdrm.so(biblioteca de espaço do usuário do Direct Rendering Manager)libgbm.so(gerenciamento de buffer genérico)libEGL.so(gerenciamento de superfície OpenGL nativo)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(registro do Android)libtinyalsav2.so(gravação e reprodução de áudio)libvulkan.so(Vulkan)
- NÃO PODEM adicionar ou remover as funções públicas das bibliotecas nativas anteriores.
- PRECISAM exportar todos os símbolos de função do OpenGL ES 3.1 e do Android Extension Pack, conforme definido no NDK, pela biblioteca libGLESv3.so. Embora todos os símbolos PRECISAM estar presentes, OpenGL ES descreve com mais detalhes os requisitos para quando a implementação completa de cada função correspondente é esperada.
- PRECISAM exportar os símbolos de função principais do Vulkan 1.1, bem como as extensões
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1eVK_KHR_get_physical_device_properties2pela bibliotecalibvulkan.so. Embora todos os símbolos PRECISAM estar presentes, o Vulkan descreve com mais detalhes os requisitos para quando a implementação completa de cada função correspondente é esperada. - DEVEM ser criados usando o código-fonte e os arquivos de cabeçalho disponíveis no Android Open Source Project.
Gráficos
- O sistema PRECISA usar
virtio-gpupara gráficos acelerados por hardware. O driver do lado do convidado DEVE usargfxstreampara renderização.
Entrada
O sistema de convidado PRECISA incluir suporte para eventos de entrada encaminhados do sistema host usando virtio-input.
OpenGL ES
Implementações de dispositivos:
- PRECISAM identificar corretamente as versões compatíveis do OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) pelas APIs nativas.
- PRECISAM incluir suporte para todas as APIs nativas correspondentes de cada versão do OpenGL ES que oferecem suporte.
- PRECISAM oferecer suporte ao OpenGL ES 1.1 e 2.0.
- É FORTEMENTE RECOMENDADO oferecer suporte ao OpenGL ES 3.1.
- DEVEM oferecer suporte ao OpenGL ES 3.2.
- PRECISAM informar usando as APIs gerenciadas do OpenGL ES e as APIs nativas de outras extensões do OpenGL ES que implementaram e, inversamente, NÃO PODEM informar strings de extensão que não oferecem suporte.
- PRECISAM oferecer suporte às seguintes extensões:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
É FORTEMENTE RECOMENDADO que as implementações de dispositivos implementem o OpenGL ES usando a biblioteca ANGLE com o back-end do Vulkan.
Vulkan
Implementações de dispositivos:
- É FORTEMENTE RECOMENDADO incluir suporte ao Vulkan 1.3.
- NÃO PODEM oferecer suporte a uma versão variante do Vulkan (ou seja, a parte variante da versão principal do Vulkan PRECISA ser zero).
- PRECISAM oferecer suporte às seguintes extensões:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
Compatibilidade multimídia
As implementações de dispositivos PRECISAM permitir a reprodução de conteúdo de áudio bruto com as seguintes características:
- Formatos de origem:PCM linear, 16 bits, 8 bits, flutuante
- Canais:mono, estéreo, configurações multicanal válidas com até oito canais
- Taxas de amostragem (em Hz)
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 nas configurações de canal listadas anteriormente
- 96000 em mono e estéreo
As implementações de dispositivos PRECISAM permitir a captura de conteúdo de áudio bruto. No mínimo, as implementações de dispositivos PRECISAM oferecer suporte às seguintes características:
- Formato:PCM linear, 16 bits
- Taxas de amostragem:8000, 11025, 16000, 44100, 48000 Hz
- Canais:mono
As implementações de dispositivos DEVEM permitir a captura de conteúdo de áudio bruto com as seguintes características:
- Formato:PCM linear, 16 bits e 24 bits
- Taxas de amostragem:8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- Canais:quantos canais forem o número de microfones no dispositivo
As implementações de dispositivos PRECISAM oferecer suporte à reprodução e captura de áudio pela API
libtinyalsav2.so, usando o dispositivovirtio-soundpara acesso ao hardware, e PRECISAM oferecer suporte à API ALSA.Os codificadores e decodificadores de vídeo PRECISAM oferecer suporte a pelo menos um formato de cor YUV420 8:8:8 planar ou semiplanar.
Os decodificadores e codificadores de vídeo PRECISAM oferecer suporte ao codec H.264 AVC.
As implementações de dispositivos PRECISAM oferecer suporte ao H.264 Main Profile Level 3.1 e ao perfil de referência. O suporte para ordenação de fatias arbitrárias (ASO, na sigla em inglês), ordenação de macroblocos flexíveis (FMO, na sigla em inglês) e fatias redundantes (RS, na sigla em inglês) é opcional.
Codificadores de vídeo:
- PRECISAM oferecer suporte aos perfis de codificação de vídeo de definição padrão (SD) na tabela a seguir.
DEVEM oferecer suporte aos perfis de codificação de vídeo de alta definição (HD) conforme indicado na tabela a seguir.
SD (baixa qualidade) SD (alta qualidade) HD 720p HD 1080p Resolução do vídeo 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Frame rate do vídeo 20 fps 30 fps 30 fps 30 fps Taxa de bits do vídeo 384 Kbps 2 Mbps 4 Mbps 10 Mbps
Decodificadores de vídeo:
- PRECISAM oferecer suporte aos perfis de decodificação de vídeo HD 720p na tabela a seguir.
PRECISAM oferecer suporte aos perfis de decodificação de vídeo HD 1080p na tabela a seguir.
SD (baixa qualidade) SD (alta qualidade) HD 720p HD 1080p Resolução do vídeo 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Frame rate do vídeo 30 fps 30 fps 60 fps 30 fps Taxa de bits do vídeo 800 Kbps 2 Mbps 8 Mbps 20 Mbps
As implementações de dispositivos PRECISAM oferecer suporte a codecs de mídia usando a API Video4Linux.
As implementações de dispositivos PRECISAM fornecer acesso a um decodificador de vídeo de hardware usando a API Video4Linux.
Todos os codificadores de vídeo e imagem acelerados por hardware PRECISAM oferecer suporte à codificação de frames das câmeras de hardware. As implementações de dispositivos PRECISAM fornecer acesso de hardware para codificação e decodificação de vídeo pelo
virtio-media.As implementações de dispositivos PRECISAM fornecer acesso a uma câmera de vídeo usando a API Video4Linux.
Sistema host (hipervisor e hardware)
Os requisitos desta seção se aplicam ao sistema host e ao ambiente do hipervisor.
Virtualização
- Além dos dispositivos
virtioexigidos pelo perfil principal, o sistema host PRECISA fornecer o seguinte:virtio-gpu: para GPU e display virtuaisvirtio-input: para encaminhar eventos de entrada (por exemplo, toque, teclado)virtio-sound: para dispositivos de áudio virtuaisvirtio-videoouvirtio-media: para dispositivos de codec de vídeo virtuais
Entrada
- O dispositivo PRECISA oferecer suporte a dispositivos de entrada e encaminhar eventos para sistemas de convidado usando
virtio-input. O dispositivo DEVE oferecer suporte a entradas de ponteiro, botão e controle giratório.