Persyaratan Media SDV

Kata kunci HARUS, TIDAK BOLEH, SEBAIKNYA, dan SANGAT DISARANKAN di halaman 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 NDK Android 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 Software Defined Vehicle (SDV):

    • libc (C library)
    • libdl (linker dinamis)
    • libdrm.so (Library ruang pengguna Direct Rendering Manager)
    • libgbm.so (pengelolaan buffer umum)
    • 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 BOLEH menambahkan atau menghapus fungsi publik untuk pustaka 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 kapan implementasi penuh 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 kapan implementasi lengkap setiap fungsi yang sesuai diharapkan.

  • HARUS dibangun menggunakan kode sumber dan file header yang tersedia di Project Open Source Android upstream.

Grafik

Sistem HARUS menggunakan virtio-gpu untuk grafis dengan akselerasi hardware. Driver sisi tamu HARUS 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 dengan benar (1.1, 2.0, 3.0, 3.1, 3.2) melalui API native.
  • HARUS menyertakan dukungan untuk semua API native yang sesuai untuk setiap versi OpenGL ES yang didukungnya.
  • HARUS mendukung OpenGL ES 1.1 dan 2.0.
  • SANGAT DIREKOMENDASIKAN untuk mendukung OpenGL ES 3.1.
  • HARUS mendukung OpenGL ES 3.2.
  • HARUS melaporkan menggunakan API native dan API terkelola OpenGL ES ekstensi OpenGL ES lainnya yang telah mereka terapkan, dan sebaliknya TIDAK BOLEH melaporkan string ekstensi yang tidak mereka dukung.
  • 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 menerapkan OpenGL ES menggunakan library ANGLE dengan backend Vulkan.

Vulkan

Implementasi perangkat:

  • SANGAT DISARANKAN untuk menyertakan dukungan untuk Vulkan 1.3.
  • TIDAK BOLEH 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 multisaluran yang valid dengan hingga delapan saluran
    • Frekuensi pengambilan sampel (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
    • Channel: Mono
  • Penerapan perangkat HARUS 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 menyediakan dukungan untuk pemutaran dan pengambilan audio melalui libtinyalsav2.so API, menggunakan perangkat virtio-sound untuk akses hardware, dan HARUS mendukung ALSA API.

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

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

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

  • Encoder video:

    • HARUS mendukung profil encoding video definisi standar (SD) dalam tabel berikut.
    • HARUS 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 px 720 x 480 px 1280 x 720 px 1920 x 1080 px
      Kecepatan frame video 20 fps 30 fps 30 fps 30 fps
      Kecepatan bit 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 px 720 x 480 px 1280 x 720 px 1920 x 1080 px
      Kecepatan frame video 30 fps 30 fps 60 fps 30 fps
      Kecepatan bit video 800 Kbps 2 Mbps 8 Mbps 20 Mbps
  • Implementasi perangkat HARUS memberikan dukungan untuk codec media menggunakan Video4Linux API.

  • Penerapan perangkat HARUS menyediakan akses ke dekoder video hardware menggunakan Video4Linux API.

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

  • Implementasi perangkat HARUS menyediakan 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 virtual dan layar
    • virtio-input: Untuk meneruskan peristiwa input (misalnya, sentuhan, 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 HARUS mendukung input pointer, tombol, dan rotary controller.