Exigences concernant les contenus multimédias pour la validation SDV

Les mots clés DOIT, NE DOIT PAS, DEVRAIT et FORTEMENT RECOMMANDÉ dans ce document doivent être interprétés comme décrit dans la RFC 2119.

Système invité (image de VM)

Les exigences de cette section s'appliquent au système invité.

Mémoire

Le système DOIT fournir au moins 2 Go de mémoire par VM.

Interfaces binaires d'application

Implémentations sur les appareils :

  • DOIT être compatible avec une ou plusieurs ABI NDK Android définies.
  • Vous DEVEZ utiliser la même ABI NDK Android pour toutes les images de VM sur le même appareil.
  • DOIT être compatible avec la source (par exemple, compatible avec l'en-tête) et compatible avec le binaire (pour l'ABI) avec chaque bibliothèque requise dans la liste suivante.
  • DOIT mettre à la disposition des applications SDV toutes les bibliothèques suivantes, qui fournissent des API natives :
    • libc (bibliothèque C)
    • libdl (éditeur de liens dynamiques)
    • libdrm.so (bibliothèque userspace Direct Rendering Manager)
    • libgbm.so (Gestion générique de la mémoire tampon)
    • libEGL.so (gestion native des surfaces OpenGL)
    • libGLESv1_CM.so (OpenGL ES 1.x)
    • libGLESv2.so (OpenGL ES 2.0)
    • libGLESv3.so (OpenGL ES 3.x)
    • liblog (journalisation Android)
    • libtinyalsav2.so (enregistrement et lecture audio)
    • libvulkan.so (Vulkan)
  • NE DOIT PAS ajouter ni supprimer les fonctions publiques des bibliothèques natives précédentes.
  • DOIT exporter tous les symboles de fonction OpenGL ES 3.1 et Android Extension Pack, tels que définis dans le NDK, via la bibliothèque libGLESv3.so. Notez que, bien que tous les symboles DOIVENT être présents, OpenGL ES décrit plus en détail les exigences concernant l'implémentation complète de chaque fonction correspondante.
  • DOIT exporter les symboles de fonction Vulkan 1.1 de base, ainsi que les extensions VK_KHR_surface, VK_KHR_swapchain, VK_KHR_maintenance1 et VK_KHR_get_physical_device_properties2 via la bibliothèque libvulkan.so. Notez que si tous les symboles DOIVENT être présents, Vulkan décrit plus en détail les exigences concernant l'implémentation complète de chaque fonction correspondante.
  • DOIT être compilé à l'aide du code source et des fichiers d'en-tête disponibles dans le projet Android Open Source en amont.

Graphiques

  • Le système DOIT utiliser virtio-gpu pour les graphiques avec accélération matérielle. Le pilote côté invité DOIT utiliser gfxstream pour le rendu.

Entrée

Le système invité DOIT inclure la prise en charge des événements d'entrée transférés depuis le système hôte à l'aide de virtio-input.

OpenGL ES

Implémentations sur les appareils :

  • DOIT identifier correctement les versions OpenGL ES compatibles (1.1, 2.0, 3.0, 3.1, 3.2) via les API natives.
  • DOIT inclure la compatibilité avec toutes les API natives correspondantes pour chaque version d'OpenGL ES qu'il prend en charge.
  • DOIT être compatible avec OpenGL ES 1.1 et 2.0.
  • Il est FORTEMENT RECOMMANDÉ de prendre en charge OpenGL ES 3.1.
  • DOIT être compatible avec OpenGL ES 3.2.
  • DOIVENT signaler à l'aide des API gérées OpenGL ES et des API natives toutes les autres extensions OpenGL ES qu'elles ont implémentées, et inversement NE DOIVENT PAS signaler les chaînes d'extension qu'elles ne prennent pas en charge.
  • DOIT être compatible avec les extensions suivantes :
    • 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

Il est FORTEMENT RECOMMANDÉ aux implémentations d'appareils d'implémenter OpenGL ES à l'aide de la bibliothèque ANGLE avec un backend Vulkan.

Vulkan

Implémentations sur les appareils :

  • Il est FORTEMENT RECOMMANDÉ d'inclure la compatibilité avec Vulkan 1.3.
  • NE DOIT PAS être compatible avec une version variante de Vulkan (c'est-à-dire que la partie variante de la version principale de Vulkan DOIT être égale à zéro).
  • DOIT être compatible avec les extensions suivantes :
    • 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

Compatibilité multimédia

  • Les implémentations d'appareils DOIVENT permettre la lecture de contenu audio brut présentant les caractéristiques suivantes :

    • Formats sources : PCM linéaire, 16 bits, 8 bits, float
    • Canaux : configurations mono, stéréo et multicanaux valides avec jusqu'à huit canaux
    • Taux d'échantillonnage (en Hz) :
      • 8 000, 11 025, 16 000, 22 050, 24 000, 32 000, 44 100, 48 000 dans les configurations de canaux listées précédemment
      • 96 000 en mono et en stéréo
  • Les implémentations d'appareils DOIVENT permettre la capture de contenu audio brut. Au minimum, les implémentations d'appareils DOIVENT prendre en charge les caractéristiques suivantes :

    • Format : PCM linéaire, 16 bits
    • Taux d'échantillonnage : 8 000, 11 025, 16 000, 44 100 ou 48 000 Hz
    • Canaux : mono
  • Les implémentations d'appareils DOIVENT permettre la capture de contenu audio brut présentant les caractéristiques suivantes :

    • Format : PCM linéaire, 16 bits et 24 bits
    • Taux d'échantillonnage : 8 000, 11 025, 16 000, 22 050, 24 000, 32 000, 44 100, 48 000 Hz
    • Canaux : autant de canaux que de micros sur l'appareil
  • Les implémentations d'appareils DOIVENT prendre en charge la lecture et la capture audio via l'API libtinyalsav2.so, en utilisant l'appareil virtio-sound pour l'accès matériel, et DOIVENT prendre en charge l'API ALSA.

  • Les encodeurs et décodeurs vidéo DOIVENT être compatibles avec au moins un format de couleur YUV420 8:8:8 planaire ou semi-planaire.

  • Les encodeurs et décodeurs vidéo DOIVENT être compatibles avec le codec H.264 AVC.

  • Les implémentations d'appareils DOIVENT être compatibles avec le profil principal H.264 de niveau 3.1 et le profil de référence. La prise en charge de l'ordre arbitraire des tranches (ASO), de l'ordre flexible des macroblocs (FMO) et des tranches redondantes (RS) est facultative.

  • Encodeurs vidéo :

    • DOIT être compatible avec les profils d'encodage vidéo en définition standard (SD) du tableau ci-dessous.
    • DOIT être compatible avec les profils d'encodage vidéo haute définition (HD) indiqués dans le tableau suivant.

      SD (qualité médiocre) SD (haute qualité) HD 720p HD 1080p
      Résolution vidéo 320 x 240 px 720 x 480 px 1 280 x 720 px 1 920 x 1 080 px
      Fréquence d'images de la vidéo 20 fps 30 fps 30 fps 30 fps
      Débit vidéo 384 Kbit/s 2 Mbit/s 4 Mbit/s 10 Mbit/s
  • Décodeurs vidéo :

    • DOIT être compatible avec les profils de décodage vidéo HD 720p du tableau ci-dessous.
    • DOIT être compatible avec les profils de décodage vidéo HD 1080p du tableau ci-dessous.

      SD (qualité médiocre) SD (haute qualité) HD 720p HD 1080p
      Résolution vidéo 320 x 240 px 720 x 480 px 1 280 x 720 px 1 920 x 1 080 px
      Fréquence d'images de la vidéo 30 fps 30 fps 60 fps 30 fps
      Débit vidéo 800 Kbit/s 2 Mbit/s 8 Mbit/s 20 Mbit/s
  • Les implémentations d'appareils DOIVENT prendre en charge les codecs multimédias à l'aide de l'API Video4Linux.

  • Les implémentations d'appareils DOIVENT fournir un accès à un décodeur vidéo matériel à l'aide de l'API Video4Linux.

  • Tous les encodeurs vidéo et d'images avec accélération matérielle DOIVENT être compatibles avec l'encodage des frames des caméras matérielles. Les implémentations d'appareils DOIVENT fournir un accès matériel pour l'encodage et le décodage vidéo via virtio-media.

  • Les implémentations d'appareils DOIVENT fournir un accès à une caméra vidéo à l'aide de l'API Video4Linux.

Système hôte (hyperviseur et matériel)

Les exigences de cette section s'appliquent au système hôte et à l'environnement de l'hyperviseur.

Virtualisation

  • En plus des virtio appareils requis par le profil principal, le système hôte DOIT fournir les éléments suivants :
    • virtio-gpu : pour le GPU et l'écran virtuels
    • virtio-input : pour transférer les événements d'entrée (par exemple, les événements tactiles ou de clavier)
    • virtio-sound : pour les périphériques audio virtuels
    • virtio-video ou virtio-media : pour les périphériques de codec vidéo virtuels

Entrée

  • L'appareil DOIT être compatible avec les périphériques d'entrée et transmettre les événements aux systèmes invités à l'aide de virtio-input. L'appareil DOIT être compatible avec les entrées de pointeur, de bouton et de sélecteur rotatif.