Persyaratan Media SDV

Kata-kata seperti HARUS, TIDAK HARUS, SEBAIKNYA, dan SANGAT DISARANKAN dalam dokumen ini harus ditafsirkan seperti yang dijelaskan dalam RFC 2119.

Sistem tamu (image VM)

Persyaratan di bagian ini berlaku untuk sistem tamu.

Memori

Sistem HARUS menyediakan memori minimal 2 GB per VM.

Antarmuka biner aplikasi

Implementasi perangkat:

  • HARUS kompatibel dengan satu atau beberapa ABI Android NDK yang ditentukan.
  • HARUS menggunakan ABI Android NDK yang sama untuk semua image VM di perangkat yang sama.
  • HARUS kompatibel dengan sumber (misalnya, kompatibel dengan header) dan kompatibel dengan biner (untuk ABI) dengan setiap library yang diperlukan dalam daftar berikut.
  • HARUS menyediakan semua library berikut, yang menyediakan API native, untuk aplikasi SDV:
    • libc (library C)
    • libdl (linker dinamis)
    • libdrm.so (library ruang pengguna Direct Rendering Manager)
    • libgbm.so (Pengelolaan Buffer Generik)
    • libEGL.so (pengelolaan platform OpenGL native)
    • libGLESv1_CM.so (OpenGL ES 1.x)
    • libGLESv2.so (OpenGL ES 2.0)
    • libGLESv3.so (OpenGL ES 3.x)
    • liblog (logging Android)
    • libtinyalsav2.so (perekaman dan pemutaran audio)
    • libvulkan.so (Vulkan)
  • TIDAK HARUS menambahkan atau menghapus fungsi publik untuk library native sebelumnya.
  • HARUS mengekspor semua simbol fungsi OpenGL ES 3.1 dan Android Extension Pack, seperti yang ditentukan dalam NDK, melalui library libGLESv3.so. Perhatikan bahwa meskipun semua simbol HARUS ada, OpenGL ES menjelaskan secara lebih mendetail persyaratan untuk kapan implementasi lengkap setiap fungsi yang sesuai diharapkan.
  • HARUS mengekspor simbol fungsi Vulkan 1.1 inti, serta ekstensi VK_KHR_surface, VK_KHR_swapchain, VK_KHR_maintenance1, dan VK_KHR_get_physical_device_properties2 melalui library libvulkan.so. Perhatikan bahwa meskipun semua simbol HARUS ada, Vulkan menjelaskan secara lebih mendetail persyaratan untuk kapan implementasi lengkap setiap fungsi yang sesuai diharapkan.
  • SEBAIKNYA dibuat menggunakan kode sumber dan file header yang tersedia di Project Open Source Android upstream.

Grafik

  • Sistem HARUS menggunakan virtio-gpu untuk grafis yang dipercepat hardware. Driver sisi tamu SEBAIKNYA menggunakan gfxstream untuk rendering.

Input

Sistem tamu HARUS menyertakan dukungan untuk peristiwa input yang diteruskan dari sistem host menggunakan virtio-input.

OpenGL ES

Implementasi perangkat:

  • HARUS mengidentifikasi versi OpenGL ES yang didukung (1.1, 2.0, 3.0, 3.1, 3.2) dengan benar melalui API native.
  • HARUS menyertakan dukungan untuk semua API native yang sesuai untuk setiap versi OpenGL ES yang didukung.
  • HARUS mendukung OpenGL ES 1.1 dan 2.0.
  • SANGAT DISARANKAN untuk mendukung OpenGL ES 3.1.
  • SEBAIKNYA mendukung OpenGL ES 3.2.
  • HARUS melaporkan menggunakan API terkelola OpenGL ES dan API native ekstensi OpenGL ES lainnya yang telah diimplementasikan, dan sebaliknya TIDAK HARUS melaporkan string ekstensi yang tidak didukung.
  • HARUS mendukung ekstensi berikut:
    • 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

Implementasi perangkat SANGAT DISARANKAN untuk mengimplementasikan OpenGL ES menggunakan library ANGLE dengan backend Vulkan.

Vulkan

Implementasi perangkat:

  • SANGAT DISARANKAN untuk menyertakan dukungan untuk Vulkan 1.3.
  • TIDAK HARUS mendukung versi varian Vulkan (yaitu, bagian varian dari versi inti Vulkan HARUS nol).
  • HARUS mendukung ekstensi berikut:
    • 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

Kompatibilitas multimedia

  • Implementasi perangkat HARUS mengizinkan pemutaran konten audio mentah dengan karakteristik berikut:

    • Format sumber: PCM Linear, 16-bit, 8-bit, float
    • Saluran: Mono, stereo, konfigurasi multi-saluran yang valid dengan maksimal delapan saluran
    • Frekuensi sampling (dalam Hz):
      • 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 dalam konfigurasi saluran yang tercantum sebelumnya
      • 96000 dalam mono dan stereo
  • Implementasi perangkat HARUS mengizinkan perekaman konten audio mentah. Minimal, implementasi perangkat HARUS mendukung karakteristik berikut:

    • Format: PCM Linear, 16-bit
    • Frekuensi sampling: 8000, 11025, 16000, 44100, 48000 Hz
    • Saluran: Mono
  • Implementasi perangkat SEBAIKNYA mengizinkan perekaman konten audio mentah dengan karakteristik berikut:

    • Format: PCM Linear, 16-bit dan 24-bit
    • Frekuensi sampling: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
    • Saluran: Sebanyak jumlah mikrofon di perangkat
  • Implementasi perangkat HARUS memberikan dukungan untuk pemutaran dan perekaman audio melalui libtinyalsav2.so API, menggunakan perangkat virtio-sound untuk akses hardware, dan HARUS mendukung ALSA API.

  • Encoder dan decoder video HARUS mendukung setidaknya satu format warna YUV420 8:8:8 planar atau semiplanar.

  • Decoder dan encoder video HARUS mendukung codec H.264 AVC.

  • Implementasi perangkat HARUS mendukung H.264 Main Profile Level 3.1 dan Profil Dasar. Dukungan untuk pengurutan slice arbitrer (ASO), pengurutan makroblok fleksibel (FMO), dan slice berlebihan (RS) bersifat opsional.

  • Encoder video:

    • HARUS mendukung profil encoding video definisi standar (SD) dalam tabel berikut.
    • SEBAIKNYA mendukung profil encoding video definisi tinggi (HD) seperti yang ditunjukkan dalam tabel berikut.

      SD (kualitas rendah) SD (kualitas tinggi) HD 720p HD 1080p
      Resolusi video 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
      Kecepatan frame video 20 fps 30 fps 30 fps 30 fps
      Bitrate video 384 Kbps 2 Mbps 4 Mbps 10 Mbps
  • Decoder video:

    • HARUS mendukung profil decoding video HD 720p dalam tabel berikut.
    • HARUS mendukung profil decoding video HD 1080p dalam tabel berikut.

      SD (kualitas rendah) SD (kualitas tinggi) HD 720p HD 1080p
      Resolusi video 320 x 240 piksel 720 x 480 piksel 1280 x 720 piksel 1920 x 1080 piksel
      Kecepatan frame video 30 fps 30 fps 60 fps 30 fps
      Bitrate video 800 Kbps 2 Mbps 8 Mbps 20 Mbps
  • Implementasi perangkat HARUS memberikan dukungan untuk codec media menggunakan Video4Linux API.

  • Implementasi perangkat HARUS memberikan akses ke decoder video hardware menggunakan Video4Linux API.

  • Semua encoder video dan gambar yang dipercepat hardware HARUS mendukung frame encoding dari kamera hardware. Implementasi perangkat HARUS menyediakan akses hardware untuk encoding dan decoding video melalui virtio-media.

  • Implementasi perangkat HARUS memberikan akses ke kamera video menggunakan Video4Linux API.

Sistem host (hypervisor dan hardware)

Persyaratan di bagian ini berlaku untuk sistem host dan lingkungan hypervisor.

Virtualisasi

  • Selain perangkat virtio yang diperlukan oleh profil inti, sistem host HARUS menyediakan hal berikut:
    • virtio-gpu: Untuk GPU dan layar virtual
    • virtio-input: Untuk meneruskan peristiwa input (misalnya, sentuh, keyboard)
    • virtio-sound: Untuk perangkat audio virtual
    • virtio-video atau virtio-media: Untuk perangkat codec video virtual

Input

  • Perangkat HARUS mendukung perangkat input dan meneruskan peristiwa ke sistem tamu menggunakan virtio-input. Perangkat SEBAIKNYA mendukung input pointer, tombol, dan rotary controller.