이 문서의 키워드 MUST, MUST NOT, SHOULD, STRONGLY RECOMMENDED 는 RFC 2119에 설명된 대로 해석해야 합니다.
게스트 시스템 (VM 이미지)
이 섹션의 요구사항은 게스트 시스템에 적용됩니다.
메모리
시스템은 VM당 최소 2GB의 메모리를 제공해야 합니다(MUST).
애플리케이션 바이너리 인터페이스
기기 구현은 다음을 충족해야 합니다.
- 1개 이상의 정의된 Android NDK ABI와 호환되어야 합니다(MUST).
- 동일한 기기의 모든 VM 이미지에 동일한 Android NDK ABI를 사용해야 합니다(MUST).
- 다음 목록의 각 필수 라이브러리와 소스 호환(예: 헤더 호환) 및 바이너리 호환(ABI의 경우)이 되어야 합니다(MUST).
- 네이티브 API를 제공하는 다음과 같은 모든 라이브러리를 SDV 앱에 제공해야 합니다(MUST).
libc(C 라이브러리)libdl(동적 링커)libdrm.so(Direct Rendering Manager 사용자 공간 라이브러리)libgbm.so(일반 버퍼 관리)libEGL.so(네이티브 OpenGL 서페이스 관리)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)
- 이전 네이티브 라이브러리에 공개 함수를 추가하거나 삭제하면 안 됩니다(MUST NOT).
- NDK에 정의된 모든 OpenGL ES 3.1 및 Android 확장 팩 함수 기호를 libGLESv3.so 라이브러리를 통해 내보내야 합니다(MUST). 모든 기호가 있어야 하지만(MUST) OpenGL ES 에서는 해당하는 각 함수의 전체 구현이 예상되는 시기와 관련된 요구사항을 상세히 설명합니다.
- 코어 Vulkan 1.1 함수 기호는 물론
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1,VK_KHR_get_physical_device_properties2확장 프로그램까지libvulkan.so라이브러리를 통해 내보내야 합니다(MUST). 모든 기호가 있어야 하지만(MUST) Vulkan 에서는 해당하는 각 함수의 전체 구현이 예상되는 시기와 관련된 요구사항을 상세히 설명합니다. - 업스트림 Android 오픈소스 프로젝트에서 제공되는 소스 코드와 헤더 파일을 사용하여 빌드되어야 합니다(SHOULD).
그래픽
- 시스템은 하드웨어 가속 그래픽에
virtio-gpu를 사용해야 합니다(MUST). 게스트 측 드라이버는 렌더링에gfxstream을 사용해야 합니다(SHOULD).
입력
게스트 시스템은 virtio-input을 사용하여 호스트 시스템에서 전달된 입력 이벤트에 대한 지원을 포함해야 합니다(MUST).
OpenGL ES
기기 구현은 다음을 충족해야 합니다.
- 네이티브 API를 통해 지원되는 OpenGL ES 버전(1.1, 2.0, 3.0, 3.1, 3.2)을 올바르게 식별해야 합니다(MUST).
- 지원하는 모든 OpenGL ES 버전과 관련하여 모든 해당하는 네이티브 API에 대한 지원을 포함해야 합니다(MUST).
- OpenGL ES 1.1과 2.0을 모두 지원해야 합니다(MUST).
- OpenGL ES 3.1을 지원할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- OpenGL ES 3.2를 지원해야 합니다(SHOULD).
- OpenGL ES 관리 API 및 네이티브 API를 통해 구현한 다른 모든 OpenGL ES 확장 프로그램을 보고해야 하며(MUST) 지원하지 않는 확장 프로그램 문자열은 보고하면 안 됩니다(MUST NOT).
- 다음 확장 프로그램을 지원해야 합니다(MUST).
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
기기 구현은 Vulkan 백엔드가 있는 ANGLE 라이브러리를 사용하여 OpenGL ES를 구현할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
Vulkan
기기 구현은 다음을 충족해야 합니다.
- Vulkan 1.3에 대한 지원을 포함할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- Vulkan 변형 버전을 지원하면 안 됩니다(MUST NOT). 즉, Vulkan 핵심 버전의 변형 부분이 0이어야 합니다(MUST).
- 다음 확장 프로그램을 지원해야 합니다(MUST).
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
멀티미디어 호환성
기기 구현은 다음 특성을 가진 원본 오디오 콘텐츠의 재생을 허용해야 합니다(MUST).
- 소스 형식: 선형 PCM, 16비트, 8비트, 부동
- 채널: 모노, 스테레오, 최대 8채널을 보유한 유효한 멀티채널 구성
- 샘플링 레이트 (Hz):
- 이전에 나열된 채널 구성에서 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
- 모노 및 스테레오에서 96000
기기 구현은 원본 오디오 콘텐츠의 캡처를 허용해야 합니다(MUST). 기기 구현은 최소한 다음 특성을 지원해야 합니다(MUST).
- 형식: 선형 PCM, 16비트
- 샘플링 레이트: 8000, 11025, 16000, 44100, 48000Hz
- 채널: 모노
기기 구현은 다음 특성을 가진 원본 오디오 콘텐츠의 캡처를 허용해야 합니다(SHOULD).
- 형식: 선형 PCM, 16비트 및 24비트
- 샘플링 레이트: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000Hz
- 채널: 기기 마이크의 개수와 같은 수의 채널
기기 구현은 하드웨어 액세스에
virtio-sound기기를 사용하여libtinyalsav2.soAPI를 통해 오디오 재생 및 캡처를 지원해야 하며(MUST) ALSA API를 지원해야 합니다(MUST).동영상 인코더 및 디코더가 평면 또는 반평면 YUV420 8:8:8 색상 형식을 1개 이상 지원해야 합니다(MUST).
동영상 디코더 및 인코더가 H.264 AVC 코덱을 지원해야 합니다(MUST).
기기 구현은 H.264 기본 프로필 레벨 3.1 및 기준 프로필을 지원해야 합니다(MUST). 임의 슬라이스 정렬 (ASO), 탄력적 매크로블록 정렬 (FMO), 중복 슬라이스 (RS) 지원은 선택사항입니다.
동영상 인코더:
- 다음 표의 표준 화질(SD) 동영상 인코딩 프로필을 지원해야 합니다(MUST).
다음 표에 표시된 것처럼 고화질(HD) 동영상 인코딩 프로필을 지원해야 합니다(SHOULD).
SD (저화질) SD (고화질) HD 720p HD 1080p 동영상 해상도 320x240픽셀 720x480픽셀 1280x720픽셀 1920x1080픽셀 동영상 프레임 속도 20fps 30fps 30fps 30fps 동영상 비트 전송률 384Kbps 2Mbps 4Mbps 10Mbps
동영상 디코더:
- 다음 표의 HD 720p 동영상 디코딩 프로필을 지원해야 합니다(MUST).
다음 표의 HD 1080p 동영상 디코딩 프로필을 지원해야 합니다(MUST).
SD (저화질) SD (고화질) HD 720p HD 1080p 동영상 해상도 320x240픽셀 720x480픽셀 1280x720픽셀 1920x1080픽셀 동영상 프레임 속도 30fps 30fps 60fps 30fps 동영상 비트 전송률 800Kbps 2Mbps 8Mbps 20Mbps
기기 구현은 Video4Linux API를 사용하여 미디어 코덱을 지원해야 합니다(MUST).
기기 구현은 Video4Linux API를 사용하여 하드웨어 동영상 디코더에 액세스할 수 있도록 지원해야 합니다(MUST).
모든 하드웨어 가속 동영상 및 이미지 인코더는 하드웨어 카메라에서 인코딩 프레임을 지원해야 합니다(MUST). 기기 구현은
virtio-media를 통해 동영상 인코딩 및 디코딩을 위한 하드웨어 액세스를 제공해야 합니다(MUST).기기 구현은 Video4Linux API를 사용하여 동영상 카메라에 액세스할 수 있도록 지원해야 합니다(MUST).
호스트 시스템 (하이퍼바이저 및 하드웨어)
이 섹션의 요구사항은 호스트 시스템 및 하이퍼바이저 환경에 적용됩니다.
가상화
- 핵심 프로필에 필요한
virtio기기 외에도 호스트 시스템은 다음을 제공해야 합니다(MUST).virtio-gpu: 가상 GPU 및 디스플레이용virtio-input: 입력 이벤트 전달용 (예: 터치, 키보드)virtio-sound: 가상 오디오 기기용virtio-video또는virtio-media: 가상 동영상 코덱 기기용
입력
- 기기는 입력 기기를 지원하고
virtio-input을 사용하여 게스트 시스템에 이벤트를 전달해야 합니다(MUST). 기기는 포인터, 버튼, 로터리 컨트롤러 입력을 지원해야 합니다(SHOULD).