本文中的 MUST、MUST NOT、SHOULD 和 STRONGLY RECOMMENDED 關鍵字,應按照 RFC 2119 的說明解讀。
訪客系統 (VM 映像檔)
本節中的需求適用於訪客系統。
記憶體
系統必須為每個 VM 提供至少 2 GB 的記憶體。
應用程式二進位檔介面
裝置實作方式:
- 必須與一或多個已定義的 Android NDK ABI 相容。
- 同一裝置上的所有 VM 映像檔都「必須」使用相同的 Android NDK ABI。
- 必須與下列清單中的每個必要程式庫來源相容 (例如標頭相容),且與 ABI 二進位檔相容。
- 必須向 SDV 應用程式提供下列所有程式庫,並提供原生 API:
libc(C 程式庫)libdl(動態連結器)libdrm.so(Direct Rendering Manager 使用者空間程式庫)libgbm.so(一般緩衝區管理)libEGL.so(原生 OpenGL Surface 管理)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(Android 記錄)libtinyalsav2.so(音訊錄音及播放)libvulkan.so(Vulkan)
- 不得新增或移除上述原生程式庫的公開函式。
- 必須透過 libGLESv3.so 程式庫,匯出 NDK 中定義的所有 OpenGL ES 3.1 和 Android 擴充套件函式符號。請注意,雖然所有符號都「必須」存在,但 OpenGL ES 會更詳細地說明何時需要完整實作每個對應函式。
- 必須透過
libvulkan.so程式庫匯出核心 Vulkan 1.1 函式符號,以及VK_KHR_surface、VK_KHR_swapchain、VK_KHR_maintenance1和VK_KHR_get_physical_device_properties2擴充功能。請注意,所有符號都「必須」存在,但 Vulkan 會更詳細地說明何時應完整實作每個對應函式。 - 應使用上游 Android 開放原始碼計畫提供的原始碼和標頭檔建構。
圖形
- 系統「必須」使用
virtio-gpu進行硬體加速圖形處理。客端驅動程式「應」使用gfxstream進行算繪。
輸入
訪客系統「必須」支援使用 virtio-input 從主機系統轉送的輸入事件。
OpenGL ES
裝置實作方式:
- 必須透過原生 API 正確識別支援的 OpenGL ES 版本 (1.1、2.0、3.0、3.1、3.2)。
- 必須支援所支援的每個 OpenGL ES 版本,以及所有對應的原生 API。
- 必須支援 OpenGL ES 1.1 和 2.0。
- 強烈建議支援 OpenGL ES 3.1。
- 應支援 OpenGL ES 3.2。
- 必須使用 OpenGL ES 管理 API 和原生 API 回報已實作的任何其他 OpenGL 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
強烈建議裝置實作項目使用 ANGLE 程式庫和 Vulkan 後端實作 OpenGL ES。
Vulkan
裝置實作方式:
- 強烈建議加入 Vulkan 1.3 的支援。
- 不得支援 Vulkan 變體版本 (也就是 Vulkan 核心版本的變體部分必須為零)。
- 必須支援下列擴充功能:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
多媒體相容性
裝置實作「必須」允許播放具有下列特徵的原始音訊內容:
- 來源格式:線性 PCM、16 位元、8 位元、浮點數
- 聲道:單聲道、立體聲,最多八個聲道的有效多聲道設定
- 取樣率 (以 Hz 為單位):
- 8000、11025、16000、22050、24000、32000、44100、48000 (先前列出的頻道設定)
- 單聲道和立體聲皆為 96000
裝置實作項目「必須」允許擷取原始音訊內容。裝置實作至少須支援下列特性:
- 格式:線性 PCM,16 位元
- 取樣率:8000、11025、16000、44100、48000 Hz
- 聲道:單聲道
裝置實作「應」允許擷取具有下列特性的原始音訊內容:
- 格式:線性 PCM,16 位元和 24 位元
- 取樣率:8000、11025、16000、22050、24000、32000、44100、48000 Hz
- 聲道:聲道數量與裝置上的麥克風數量相同
裝置實作項目「必須」透過
libtinyalsav2.soAPI 支援音訊播放和擷取作業,並使用virtio-sound裝置存取硬體,且「必須」支援 ALSA API。影片編碼器和解碼器必須支援平面或半平面 YUV420 8:8:8 顏色格式。
視訊解碼器和編碼器必須支援 H.264 AVC 轉碼器。
裝置實作項目必須支援 H.264 Main 設定檔等級 3.1 和基準設定檔。任意切片排序 (ASO)、彈性巨集區塊排序 (FMO) 和冗餘切片 (RS) 支援為選用功能。
影片編碼器:
- 必須支援下表中的標準畫質 (SD) 影片編碼設定檔。
應支援下表所示的高畫質 (HD) 影片編碼設定檔。
SD (畫質不佳) SD (高畫質) HD 720p HD 1080p 影片解析度 320 x 240 像素 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 影片影格率 20 fps 30 fps 30 fps 30 fps 影片位元率 384 Kbps 2 Mbps 4 Mbps 10 Mbps
視訊解碼器:
- 必須支援下表中的 HD 720p 影片解碼設定檔。
必須支援下表中的 HD 1080p 影片解碼設定檔。
SD (畫質不佳) SD (高畫質) HD 720p HD 1080p 影片解析度 320 x 240 像素 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 影片影格率 30 fps 30 fps 60 fps 30 fps 影片位元率 800 Kbps 2 Mbps 8 Mbps 20 Mbps
裝置實作項目「必須」使用 Video4Linux API 支援媒體轉碼器。
裝置實作項目「必須」使用 Video4Linux API 提供硬體視訊解碼器存取權。
所有硬體加速的影片和圖片編碼器都「必須」支援從硬體攝影機編碼影格。裝置實作項目「必須」透過
virtio-media提供影片編碼和解碼的硬體存取權。裝置實作項目必須使用 Video4Linux API 提供攝影機存取權。
主機系統 (管理程序和硬體)
本節中的規定適用於主機系統和管理程序環境。
虛擬化
- 除了核心設定檔規定的
virtio裝置外,主機系統還必須提供下列項目:virtio-gpu:適用於虛擬 GPU 和螢幕virtio-input:用於轉送輸入事件 (例如觸控、鍵盤)virtio-sound:適用於虛擬音訊裝置virtio-video或virtio-media:適用於虛擬視訊轉碼器裝置
輸入
- 裝置「必須」支援輸入裝置,並使用
virtio-input將事件轉送至訪客系統。裝置「應」支援指標、按鈕和旋轉控制器輸入。