Słowa MUSI, NIE MOŻE, POWINIEN i ZDECYDOWANIE ZALECANE na tej stronie należy interpretować zgodnie z opisem w dokumencie RFC 2119.
System gościa (obraz maszyny wirtualnej)
Wymagania w tej sekcji dotyczą systemu gościa.
Pamięć
System MUSI zapewniać co najmniej 2 GB pamięci na maszynę wirtualną.
Interfejsy binarne aplikacji
Implementacje urządzeń:
- MUSI być zgodna z co najmniej jednym zdefiniowanym interfejsem ABI NDK Androida.
- MUSI używać tego samego interfejsu ABI Android NDK w przypadku wszystkich obrazów maszyn wirtualnych na tym samym urządzeniu.
- MUSI być zgodna ze źródłem (np. z nagłówkiem) i binarnie (z interfejsem ABI) z każdą wymaganą biblioteką z tej listy.
MUSI udostępniać aplikacjom SDV (Software Defined Vehicle) wszystkie te biblioteki z natywnymi interfejsami API:
libc(biblioteka C)libdl(dynamiczny linker)libdrm.so(biblioteka przestrzeni użytkownika Direct Rendering Manager)libgbm.so(ogólne zarządzanie buforem)libEGL.so(natywne zarządzanie powierzchnią OpenGL)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(logowanie w Androidzie)libtinyalsav2.so(nagrywanie i odtwarzanie dźwięku)libvulkan.so(Vulkan)
NIE WOLNO dodawać ani usuwać funkcji publicznych w przypadku poprzednich bibliotek natywnych.
MUSI eksportować wszystkie symbole funkcji OpenGL ES 3.1 i pakietu rozszerzeń Androida, zgodnie z definicją w NDK, za pomocą biblioteki libGLESv3.so. Pamiętaj, że wszystkie symbole MUSZĄ być obecne, ale OpenGL ES dokładniej opisuje wymagania dotyczące tego, kiedy oczekiwane jest pełne wdrożenie każdej odpowiedniej funkcji.
MUSI eksportować podstawowe symbole funkcji interfejsu Vulkan 1.1, a także rozszerzenia
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1iVK_KHR_get_physical_device_properties2za pomocą bibliotekilibvulkan.so. Pamiętaj, że wszystkie symbole MUSZĄ być obecne. Vulkan szczegółowo opisuje wymagania dotyczące tego, kiedy oczekiwana jest pełna implementacja każdej odpowiedniej funkcji.POWINNO być tworzone przy użyciu kodu źródłowego i plików nagłówkowych dostępnych w projekcie Android Open Source Project.
Grafika
System MUSI używać virtio-gpu do akceleracji sprzętowej grafiki. Sterownik po stronie gościa POWINIEN używać gfxstream do renderowania.
Dane wejściowe
System gościa MUSI obsługiwać zdarzenia wejściowe przekazywane z systemu hosta za pomocą virtio-input.
OpenGL ES
Implementacje urządzeń:
- MUSI prawidłowo identyfikować obsługiwane wersje OpenGL ES (1.1, 2.0, 3.0, 3.1, 3.2) za pomocą natywnych interfejsów API.
- MUSI obsługiwać wszystkie odpowiednie natywne interfejsy API dla każdej obsługiwanej wersji OpenGL ES.
- Musi obsługiwać zarówno OpenGL ES 1.1, jak i 2.0.
- Zdecydowanie zalecamy obsługę OpenGL ES 3.1.
- POWINNO obsługiwać OpenGL ES 3.2.
- MUSZĄ zgłaszać za pomocą interfejsów API zarządzanych przez OpenGL ES i interfejsów API natywnych wszelkie inne zaimplementowane rozszerzenia OpenGL ES, a z kolei NIE MOGĄ zgłaszać ciągów rozszerzeń, których nie obsługują.
- MUSI obsługiwać te rozszerzenia:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
Zdecydowanie zalecamy, aby implementacje urządzeń korzystały z biblioteki ANGLE z backendem Vulkan do implementacji OpenGL ES.
Vulkan
Implementacje urządzeń:
- ZDECYDOWANIE ZALECA się obsługę Vulkan 1.3.
- NIE MOŻE obsługiwać wersji wariantu Vulkana (czyli część wariantu wersji podstawowej Vulkana MUSI wynosić zero).
- MUSI obsługiwać te rozszerzenia:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
Zgodność z multimediami
Urządzenia MUSZĄ umożliwiać odtwarzanie surowych treści audio o tych cechach:
- Formaty źródłowe: Linear PCM, 16-bitowy, 8-bitowy, zmiennoprzecinkowy
- Kanały: mono, stereo, prawidłowe konfiguracje wielokanałowe z maksymalnie 8 kanałami
- Częstotliwości próbkowania (w Hz):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 w konfiguracjach kanałów wymienionych wcześniej.
- 96 000 w mono i stereo
Urządzenia MUSZĄ umożliwiać rejestrowanie surowych treści audio. Urządzenia MUSZĄ obsługiwać co najmniej te funkcje:
- Format: Linear PCM, 16-bit
- Częstotliwości próbkowania: 8000, 11025, 16000, 44100, 48000 Hz
- Kanały: mono
Urządzenia powinny umożliwiać rejestrowanie surowych treści audio o tych cechach:
- Format: Linear PCM, 16-bitowy i 24-bitowy
- Częstotliwości próbkowania: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- Kanały: tyle kanałów, ile mikrofonów ma urządzenie.
Implementacje urządzeń MUSZĄ obsługiwać odtwarzanie i nagrywanie dźwięku za pomocą interfejsu
libtinyalsav2.soAPI, korzystając z urządzeniavirtio-soundw celu uzyskania dostępu do sprzętu, i MUSZĄ obsługiwać interfejs ALSA API.Koder i dekoder wideo MUSZĄ obsługiwać co najmniej jeden z tych formatów kolorów: płaski lub półpłaski YUV420 8:8:8.
Dekodery i enkodery wideo MUSZĄ obsługiwać kodek H.264 AVC.
Urządzenia MUSZĄ obsługiwać profil główny H.264 na poziomie 3.1 i profil podstawowy. Obsługa dowolnego porządkowania wycinków (ASO), elastycznego porządkowania makrobloków (FMO) i nadmiarowych wycinków (RS) jest opcjonalna.
Kodery wideo:
- MUSI obsługiwać profile kodowania wideo w standardowej rozdzielczości (SD) w tabeli poniżej.
POWINNO obsługiwać profile kodowania wideo w wysokiej rozdzielczości (HD) zgodnie z tabelą poniżej.
SD (niska jakość) SD (wysoka jakość) HD 720p HD 1080p Rozdzielczość wideo 320 x 240 pikseli 720 x 480 pikseli 1280 x 720 pikseli 1920 x 1080 pikseli Liczba klatek filmu 20 kl./s 30 kl./s 30 kl./s 30 kl./s Szybkość transmisji wideo 384 Kb/s 2 Mb/s 4 Mb/s 10 Mb/s
Dekodery wideo:
- MUSI obsługiwać profile dekodowania wideo HD 720p w tabeli poniżej.
MUSI obsługiwać profile dekodowania wideo HD 1080p w tabeli poniżej.
SD (niska jakość) SD (wysoka jakość) HD 720p HD 1080p Rozdzielczość wideo 320 x 240 pikseli 720 x 480 pikseli 1280 x 720 pikseli 1920 x 1080 pikseli Liczba klatek filmu 30 kl./s 30 kl./s 60 kl./s 30 kl./s Szybkość transmisji wideo 800 Kb/s 2 Mb/s 8 Mb/s 20 Mb/s
Implementacje urządzeń MUSZĄ obsługiwać kodeki multimediów za pomocą interfejsu Video4Linux API.
Implementacje urządzeń MUSZĄ zapewniać dostęp do sprzętowego dekodera wideo za pomocą interfejsu Video4Linux API.
Wszystkie akcelerowane sprzętowo kodery wideo i obrazów MUSZĄ obsługiwać kodowanie klatek z kamer sprzętowych. Implementacje urządzeń MUSZĄ zapewniać dostęp do sprzętu do kodowania i dekodowania wideo za pomocą interfejsu
virtio-media.Implementacje urządzeń MUSZĄ zapewniać dostęp do kamery wideo za pomocą interfejsu Video4Linux API.
System hosta (hiperwizor i sprzęt)
Wymagania w tej sekcji dotyczą systemu hosta i środowiska hiperwizora.
Wirtualizacja
- Oprócz
virtiourządzeń wymaganych przez profil podstawowy system hosta MUSI udostępniać te elementy:virtio-gpu: w przypadku wirtualnego procesora graficznego i wyświetlaczavirtio-input: do przekazywania zdarzeń wejściowych (np. dotyku, klawiatury).virtio-sound: w przypadku wirtualnych urządzeń audiovirtio-videolubvirtio-media: w przypadku wirtualnych urządzeń kodeka wideo
Dane wejściowe
- Urządzenie MUSI obsługiwać urządzenia wejściowe i przekazywać zdarzenia do systemów gości za pomocą
virtio-input. Urządzenie POWINNO obsługiwać wprowadzanie danych za pomocą wskaźnika, przycisków i kontrolera obrotowego.