AIDL HAL의 구성 가능한 오디오 정책 지원

Android 16부터 AIDL 오디오 HAL 인터페이스는 구성 가능한 오디오 정책 (CAP)을 완전히 지원합니다.

이 페이지에서는 파트너와 SoC 공급업체가 오디오 정책 구성을 이전하는 데 필요한 기술적 배경을 제공합니다.

매개변수 프레임워크

CAP 구현은 Intel 매개변수 프레임워크를 기반으로 합니다. CAP는 Android 6에서 도입되었습니다. 매개변수 프레임워크 (PfW)를 사용하면 매개변수 측면에서 시스템을 설명할 수 있습니다. 구성 XML 파일을 사용하여 PfW는 플러그인을 사용하여 매개변수를 작업에 바인딩하고 현재 기준에 따라 매개변수를 변경하는 규칙을 제공합니다.

HIDL의 CAP 구조

HIDL에서는 CAP의 모든 구성이 XML로 지정되었습니다. 자세한 내용은 매개변수 프레임워크매개변수 프레임워크를 사용한 구성을 참고하세요. XML 파일은 다음을 지정하는 데 사용되었습니다.

  • 파라미터 구조에 대한 설명 (즉, PfW의 오디오 도메인에 대한 설명)
  • 기준 정의
  • 라우팅 전략 규칙 (입력 및 출력 기기 선택)
  • 볼륨 테이블 사양

HIDL을 사용하면 Android 프레임워크가 공급업체 파티션에서 이러한 XML 파일을 직접 로드할 수 있었습니다. 이러한 XML 파일에 XSD 스키마가 HAL API의 일부로 정의되었기 때문에 허용되었습니다. HIDL HAL의 각 주요 출시에는 상응하는 XSD 스키마가 있었습니다. 주 출시 버전에는 하위 호환성이 필요하지 않았습니다.

AIDL의 CAP 구조

AIDL로 전환되면서 HAL API 출시가 하위 호환성을 유지해야 합니다(HIDL 용어로 AIDL HAL의 각 출시는 '부' 업데이트임). 스키마의 하위 호환 업데이트를 정의하는 방법이 확립되지 않았으므로 XSD 스키마는 더 이상 HAL API의 일부로 사용할 수 없습니다. 따라서 이전에 XML 파일에 정의된 구성은 이제 AIDL API를 사용하여 HAL에서 제공해야 합니다. 이를 용이하게 하기 위해 CAP 구성 구조는 Android 15의 AIDL 오디오 HAL에 있는 오디오 정책 구성 XML과 유사하게 AIDL로 변환됩니다.

CAP용 데이터 구조가 일반적인 안정적인 데이터 유형에 추가되며 다음 parcelable이 포함됩니다.

CAP 구성의 진입점은 AudioHalEngineConfig.CapSpecificConfig 구조에 있습니다. CAP 데이터 구조의 다이어그램은 AudioHalCapConfiguration.aidl의 주석을 참고하세요.

AIDL HAL의 기본 구현에는 파트너의 이전을 간소화하기 위해 레거시 CAP XML 파일의 콘텐츠를 기반으로 AIDL parcelable을 채우는 도우미 클래스가 포함되어 있습니다.

마이그레이션 시나리오

파트너는 이전에 CAP를 사용하지 않던 제품의 첫 출시인지 아니면 기존 제품의 이전인지에 따라 이 섹션에 나열된 옵션을 고려할 수 있습니다.

새 제품

오디오 정책 구현에 CAP를 사용하기 시작하는 새 제품의 경우 OEM은 공급업체 측에서 CAP 구성을 저장하는 데 XML을 사용할 수 있습니다.

XML을 사용하면 상위 수준 설명에서 구성을 쉽게 생성할 수 있는 스크립팅 도구가 있다는 장점이 있습니다.

OEM이 공급업체 파티션에 CAP 구성을 저장하는 데 XML을 사용하기로 결정한 경우 구성을 AIDL로 변환하는 데 XML 파서의 기본 구현을 사용하는 것이 좋습니다.

기존 제품 업데이트

제품에서 이미 CAP를 사용하고 XML 구성이 있는 경우 HAL의 AIDL 버전과 함께 기존 CAP를 계속 사용할 수 있습니다.

제품 전략의 명명 규칙은 CAP 구성의 HIDL 버전과 AIDL 버전에서 다릅니다. HIDL에서는 내장('레거시') 전략이 media와 같은 소문자 약칭을 사용하는 반면 AIDL에서는 내장 전략이 STRATEGY_로 시작하는 대문자 이름을 사용합니다(예: STRATEGY_MEDIA). CapProductStrategies.xml의 기본 제공 전략 목록을 참고하세요. 동일한 파일은 1000~1039의 숫자가 있는 vx_10xx의 명명 패턴을 따르는 OEM별 전략의 '사전 할당된' ID를 정의합니다.

기존 제품

CAP를 사용하는 제품이 공급업체 파티션을 업데이트하지 않고 HIDL에 남아 있는 경우 시스템 파티션을 Android 16으로 업데이트할 수 있습니다. 프레임워크는 기존 CAP 구성과 호환됩니다.

구현 예

파트너가 플랫폼에 CAP를 구현할 수 있도록 AOSP에는 AIDL HAL과 함께 CAP를 사용하는 Cuttlefish 가상 기기의 '자동차' 버전 예가 있습니다. 기기별 구성은 device/google/cuttlefish/shared/auto/audio/policy/engine에 있으며 aosp_cf_x86_64_autolunch 타겟 이름이 있습니다. Android.bp 파일은 전체 CAP 공급업체 파일을 생성하는 데 참고로 사용할 수 있습니다.