mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:09:42 +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
Merged-In: Iadc96d558d5c7431b0a2b0cbd28b99319a24ee44
Change-Id: Iadc96d558d5c7431b0a2b0cbd28b99319a24ee44
(cherry picked from commit cc489264af)
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.