49c56de516
audio.h and its dependencies (audio-effect.h, sound_trigger.h...) used to be shared between system and vendor code. This led to multiple problems: 1) Such sharing contradicts the Treble policy of strict independence of framework and vendor code. 2) When audio.h was changed, every vendor needed to update its code in the next release. This meant that audio*.h headers were mostly changed in backward compatible manner. Nevertheless, for P the HIDL interface and thus the audio.h interface are changed in backward incompatible way. (Some enum are becoming 64 bit long). 3) As the headers were common, some API used only by the framework needed to be visible to the vendors (mostly enum values). 4) Treble policy is to support at least one previous HAL version As a result the audio*.h headers are now duplicated, one set for the framework, and one for the vendor. Each set will evolve independently. After this split, the framework-only APIs will be removed from the vendor headers and vice versa. The split is implements as such: + for system code - NOT moving the libaudio_system_headers Eg: system/audio.h and system/audio_effects/effect_equalizer.h are still in system/media/audio - the legacy audio HAL API that were in libhardware headers are now in libaudiohal_legacy_headers Eg: hardware/audio.h and hardware/audio_effect.h are now in frameworks/av/media/libaudiohal/legacy/ + for vendor code - moving libaudio_system_headers and the legacy audio HAL API that were in libhardware_headers in android.hardware.audio.common.legacy@2.0 Note that those headers are now versioned, so migrating to a @4.0 HIDL HAL will mean changing the legacy dependency too. Eg: system/audio.h, system/audio-effect.h, hardware/audio.h are now in hardware/interfaces/audio/common/2.0/legacy - the legacy audio effect HAL API that was in libaudioeffects is now moved in android.hardware.audio.effect.legacy@2.0 Eg: audio_effects/effect*.h are now in hardware/interfaces/audio/effect/2.0/legacy - the legacy sound trigger HAL API that were in libhardware_headers is now moved in android.hardware.soundtrigger.legacy@2.0 Eg: hardware/sound_trigger.h is now in hardware/interfaces/audio/effect/2.0/legacy libaudioutil being used by both system and vendor, had to be renamed for system to libaudioutil_system. Vendor libs that now depend on the audio.h of a specific version and are not extensively referenced in non google code, append @2.0 to their name. Note that headers that are not expected to change in the 4.0 HAL are left in all-versions folder to avoid duplication. This is an implementation detail as the versioned libraries export the all-versions headers. Note that strict vendor-system separation is enforced by the build-system. The system headers are not available for vendor libs and vice-versa. Note that this patch is split between numerous git repository (>10), all the commits having the same Change-id for searchability. Note that audio_policy.h is no longer exposed to vendors as the legacy audio policy HAL API was never officially supported. As a result the audiopolicy stub implementation has been removed. Test: compile taimen-userdebug walleye-userdebug sailfish-userdebug marlin-userdebug gce_x86_phone-userdebug gce_x86_phone full-eng aosp_arm aosp_x86-eng Test: check that the emulator booted and played audio Test: full QA on sailfish-userdebug and taimen-userdebug Bug: 38184704 Change-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a Signed-off-by: Kevin Rocard <krocard@google.com> |
||
---|---|---|
.. | ||
2.0 | ||
2.1 |