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

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

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

매개변수 프레임워크

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

HIDL의 CAP 구조

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

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

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

AIDL의 CAP 구조

AIDL로 전환하면서 HAL API 출시는 하위 호환성을 유지해야 합니다(HIDL 용어로 AIDL HAL의 각 출시는 '마이너' 업데이트임). 스키마의 하위 호환 업데이트를 정의하는 확립된 방법이 없으므로 XSD 스키마는 더 이상 HAL API의 일부로 사용할 수 없습니다. 따라서 이전에 XML 파일에 정의된 구성은 이제 HAL에서 AIDL API를 사용하여 제공해야 합니다. 이를 위해 Android 15의 AIDL 오디오 HAL에 있는 오디오 정책 구성 XML과 마찬가지로 CAP 구성의 구조가 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에 있으며 lunch 타겟 이름은 aosp_cf_x86_64_auto입니다. Android.bp 파일은 전체 CAP 공급업체 파일 세트를 생성할 때 참조로 사용할 수 있습니다.