mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Background: android.hardware.audio.common was frozen in the upstream tm-dev. Previously, the interface had only V1 (as the in-development version) and it was in the VNDK. However, after the freeze, it will have V1 and V2, and only V1 will remain in the VNDK, because we can't have multiple versions of the same AIDL interface in VNDK (it's just waste of memory). android.hardware.audio.core is a new AIDL interface that doesn't exist in TM. It is also a member of VNDK and imports the audio.common interface. So far, the import has been done without an explicit version number (i.e. `imports: ["android.hardware.audio.common"]`). As a result, V1 was imported before the freeze, and V2 (the latest) will be imported after the freeze. Problem: audio.core depending on audio.common-V2 is NOT allowed since the former is a member of VNDK, but the latter isn't. VNDK should form a closure. We are actually hitting this: ``` > error: hardware/interfaces/audio/aidl/Android.bp:71:1: module "android.hardware.audio.core-V1-ndk" variant "android_vendor.Tiramisu_arm64_armv8-a_static" (created by module "android.hardware.audio.core-V1-ndk-generator" (created by module "android.hardware.audio.core_interface")): (native:vendor:vndk) should not link to "android.hardware.audio.common-V2-ndk" (native:vendor): VNDK-core must only depend on VNDK-core or VNDK-SP ``` To fix this, make the dependency to audio.common to be explicit about the version. This change can't be uploaded to tm-dev as audio.core doesn't exist there, and must be submitted before the AIDL APIs are frozen there. Bug: 225941299 Test: m Change-Id: Iadc96d558d5c7431b0a2b0cbd28b99319a24ee44
Audio HAL
Directory structure of the audio HAL related code.
Run common/all-versions/copyHAL.sh to create a new version of the audio HAL
based on an existing one.
Directory Structure
2.0— version 2.0 of the core HIDL API. Note that.halfiles can not be moved into thecoredirectory because that would change its namespace and include path.config— the XSD schema for the Audio Policy Manager configuration file.
4.0— version 4.0 of the core HIDL API.- ...
common— common types for audio core and effect HIDL API.2.0— version 2.0 of the common types HIDL API.4.0— version 4.0.- ...
7.0— version 7.0.example— example implementation of the core and effect V7.0 API. It represents a "fake" audio HAL that doesn't actually communicate with hardware.
all-versions— code common to all version of both core and effect API.default— shared code of the default implementation.service— vendor HAL service for hosting the default implementation.
test— utilities used by tests.util— utilities used by both implementation and tests.
core— VTS tests and the default implementation of the core API (not HIDL API, it's inaudio/N.M).7.0— code specific to version V7.0 of the core HIDL APIall-versions— the code is common between all versions, version-specific parts are enclosed into conditional directives of preprocessor or reside in dedicated files.default— code that wraps the legacy API (fromhardware/libhardware).util— utilities for the default implementation.
vtsVTS tests for the core HIDL API.
effect— same for the effect HIDL API.2.0config— the XSD schema for the Audio Effects configuration file.
4.0- ...
all-versionsdefault— code that wraps the legacy API (fromhardware/libhardware).util— utilities for the default implementation.
vtsVTS tests for the effect HIDL API.
policy— Configurable Audio Policy schemes.1.0— note that versions of CAP are not linked to the versions of audio HAL.vts— VTS tests for validating actual configuration files.xml— XSD schemas for CAP configuration files.