Yêu cầu về nội dung nghe nhìn đối với SDV

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_maintenance1VK_KHR_get_physical_device_properties2 thông qua thư viện libvulkan.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-gpu cho đồ hoạ tăng tốc phần cứng. Trình điều khiển phía khách NÊN sử dụng gfxstream để 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_import
    • EGL_EXT_image_dma_buf_import_modifiers
    • EGL_KHR_fence_sync
    • EGL_KHR_image_base
    • EGL_KHR_wait_sync
    • GL_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_buffer
    • VK_EXT_external_memory_dma_buf
    • VK_EXT_queue_family_foreign
    • VK_KHR_external_memory_fd
    • VK_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ị virtio mà 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 ảo
    • virtio-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 ảo
    • virtio-video hoặc virtio-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.