Các từ khoá PHẢI, KHÔNG ĐƯỢC, NÊN và RẤT NÊN trong tài liệu này được diễn giải như mô tả trong RFC 2119.
Hệ thống khách (hình ảnh máy ảo)
Các yêu cầu trong phần này áp dụng cho hệ thống khách.
Bộ nhớ
Hệ thống PHẢI cung cấp tối thiểu 2 GB bộ nhớ cho mỗi máy ảo.
Giao diện nhị phân của ứng dụng
Triển khai thiết bị:
- PHẢI tương thích với một hoặc nhiều ABI NDK Android đã xác định.
- PHẢI sử dụng cùng một Android NDK ABI cho tất cả hình ảnh máy ảo trên cùng một thiết bị.
- PHẢI tương thích với nguồn (ví dụ: tương thích với tiêu đề) và tương thích với nhị phân (đối với ABI) với từng thư viện bắt buộc trong danh sách sau.
- PHẢI cung cấp tất cả các thư viện sau đây (cung cấp API gốc) cho ứng dụng SDV:
libc(thư viện C)libdl(trình liên kết động)libdrm.so(thư viện không gian người dùng của Trình quản lý kết xuất trực tiếp)libgbm.so(Quản lý bộ đệm chung)libEGL.so(quản lý bề mặt OpenGL gốc)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(ghi nhật ký Android)libtinyalsav2.so(ghi và phát âm thanh)libvulkan.so(Vulkan)
- KHÔNG ĐƯỢC thêm hoặc xoá các hàm công khai cho các thư viện gốc trước đó.
- PHẢI xuất tất cả các ký hiệu hàm OpenGL ES 3.1 và Gói tiện ích Android, như được xác định trong NDK, thông qua thư viện libGLESv3.so. Xin lưu ý rằng mặc dù tất cả các ký hiệu PHẢI có mặt, nhưng OpenGL ES mô tả chi tiết hơn các yêu cầu về thời điểm dự kiến triển khai đầy đủ từng hàm tương ứng.
- PHẢI xuất các ký hiệu hàm Vulkan 1.1 cốt lõi, cũng như các tiện ích
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1vàVK_KHR_get_physical_device_properties2thông qua thư việnlibvulkan.so. Xin lưu ý rằng mặc dù tất cả các ký hiệu PHẢI có mặt, Vulkan mô tả chi tiết hơn các yêu cầu về thời điểm dự kiến triển khai đầy đủ từng hàm tương ứng. - NÊN được xây dựng bằng mã nguồn và tệp tiêu đề có trong Dự án nguồn mở Android thượng nguồn.
Đồ hoạ
- Hệ thống PHẢI sử dụng
virtio-gpucho đồ hoạ tăng tốc phần cứng. Trình điều khiển phía khách NÊN sử dụnggfxstreamđể kết xuất.
Đầu vào
Hệ thống khách PHẢI hỗ trợ các sự kiện đầu vào được chuyển tiếp từ hệ thống máy chủ bằng virtio-input.
OpenGL ES
Triển khai thiết bị:
- PHẢI xác định chính xác các phiên bản OpenGL ES được hỗ trợ (1.1, 2.0, 3.0, 3.1, 3.2) thông qua các API gốc.
- PHẢI hỗ trợ tất cả các API gốc tương ứng cho mọi phiên bản OpenGL ES mà chúng hỗ trợ.
- PHẢI hỗ trợ cả OpenGL ES 1.1 và 2.0.
- RẤT NÊN hỗ trợ OpenGL ES 3.1.
- NÊN hỗ trợ OpenGL ES 3.2.
- PHẢI báo cáo bằng cách sử dụng API được quản lý OpenGL ES và API gốc mọi tiện ích OpenGL ES khác mà chúng đã triển khai, và ngược lại, KHÔNG ĐƯỢC báo cáo các chuỗi tiện ích mà chúng không hỗ trợ.
- PHẢI hỗ trợ các tiện ích sau:
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
Các cách triển khai thiết bị RẤT NÊN triển khai OpenGL ES bằng thư viện ANGLE với phần phụ trợ Vulkan.
Vulkan
Triển khai thiết bị:
- RẤT NÊN hỗ trợ Vulkan 1.3.
- KHÔNG ĐƯỢC hỗ trợ phiên bản biến thể Vulkan (tức là phần biến thể của phiên bản cốt lõi Vulkan PHẢI bằng 0).
- PHẢI hỗ trợ các tiện ích sau:
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
Khả năng tương thích với nội dung đa phương tiện
Các cách triển khai thiết bị PHẢI cho phép phát nội dung âm thanh thô có các đặc điểm sau:
- Định dạng nguồn: PCM tuyến tính, 16 bit, 8 bit, dấu phẩy động
- Kênh: Đơn âm, âm thanh nổi, cấu hình đa kênh hợp lệ với tối đa 8 kênh
- Tốc độ lấy mẫu (tính bằng Hz):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 trong các cấu hình kênh được liệt kê trước đó
- 96000 ở chế độ đơn âm và âm thanh nổi
Các cách triển khai thiết bị PHẢI cho phép ghi lại nội dung âm thanh thô. Ở mức tối thiểu, các cách triển khai thiết bị PHẢI hỗ trợ các đặc điểm sau:
- Định dạng: PCM tuyến tính, 16 bit
- Tốc độ lấy mẫu: 8000, 11025, 16000, 44100, 48000 Hz
- Kênh: Đơn âm
Các cách triển khai thiết bị NÊN cho phép ghi lại nội dung âm thanh thô có các đặc điểm sau:
- Định dạng: PCM tuyến tính, 16 bit và 24 bit
- Tốc độ lấy mẫu: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- Kênh: Số kênh bằng số lượng micrô trên thiết bị
Các cách triển khai thiết bị PHẢI hỗ trợ phát và ghi âm thanh thông qua API
libtinyalsav2.so, sử dụng thiết bịvirtio-soundđể truy cập phần cứng và PHẢI hỗ trợ API ALSA.Bộ mã hoá và giải mã video PHẢI hỗ trợ ít nhất một trong các định dạng màu YUV420 8:8:8 phẳng hoặc bán phẳng.
Bộ mã hoá và giải mã video PHẢI hỗ trợ bộ mã hoá và giải mã H.264 AVC.
Các cách triển khai thiết bị PHẢI hỗ trợ Cấu hình chính H.264 Cấp 3.1 và Cấu hình cơ sở. Bạn có thể hỗ trợ sắp xếp lát cắt tuỳ ý (ASO), sắp xếp macroblock linh hoạt (FMO) và lát cắt dư thừa (RS).
Bộ mã hoá video:
- PHẢI hỗ trợ các cấu hình mã hoá video ở độ phân giải chuẩn (SD) trong bảng sau.
NÊN hỗ trợ các cấu hình mã hoá video ở độ phân giải cao (HD) như trong bảng sau.
SD (chất lượng thấp) SD (chất lượng cao) HD 720p HD 1080p Độ phân giải video 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Tốc độ khung hình video 20 khung hình/giây 30 khung hình/giây 30 khung hình/giây 30 khung hình/giây Tốc độ bit video 384 Kbps 2 Mbps 4 Mbps 10 Mbps
Bộ giải mã video:
- PHẢI hỗ trợ các cấu hình giải mã video HD 720p trong bảng sau.
PHẢI hỗ trợ các cấu hình giải mã video HD 1080p trong bảng sau.
SD (chất lượng thấp) SD (chất lượng cao) HD 720p HD 1080p Độ phân giải video 320 x 240 px 720 x 480 px 1280 x 720 px 1920 x 1080 px Tốc độ khung hình video 30 khung hình/giây 30 khung hình/giây 60 khung hình/giây 30 khung hình/giây Tốc độ bit video 800 Kbps 2 Mbps 8 Mbps 20 Mbps
Các cách triển khai thiết bị PHẢI hỗ trợ bộ mã hoá và giải mã nội dung đa phương tiện bằng API Video4Linux.
Các cách triển khai thiết bị PHẢI cung cấp quyền truy cập vào bộ giải mã video phần cứng bằng API Video4Linux.
Tất cả bộ mã hoá video và hình ảnh tăng tốc phần cứng PHẢI hỗ trợ mã hoá khung hình từ máy ảnh phần cứng. Các cách triển khai thiết bị PHẢI cung cấp quyền truy cập phần cứng để mã hoá và giải mã video thông qua
virtio-media.Các cách triển khai thiết bị PHẢI cung cấp quyền truy cập vào máy quay video bằng API Video4Linux.
Hệ thống máy chủ (trình điều khiển ảo hoá và phần cứng)
Các yêu cầu trong phần này áp dụng cho hệ thống máy chủ và môi trường trình điều khiển ảo hoá.
Ảo hóa
- Ngoài các thiết bị
virtiomà hồ sơ cốt lõi yêu cầu, hệ thống máy chủ PHẢI cung cấp những thiết bị sau:virtio-gpu: Dành cho GPU và màn hình ảovirtio-input: Dành cho việc chuyển tiếp các sự kiện đầu vào (ví dụ: chạm, bàn phím)virtio-sound: Dành cho thiết bị âm thanh ảovirtio-videohoặcvirtio-media: Dành cho thiết bị bộ mã hoá và giải mã video ảo
Đầu vào
- Thiết bị PHẢI hỗ trợ các thiết bị đầu vào và chuyển tiếp sự kiện đến hệ thống khách bằng
virtio-input. Thiết bị NÊN hỗ trợ các đầu vào của con trỏ, nút và bộ điều khiển xoay.