History log of /frameworks/av/media/libaudiohal/EffectHalHidl.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6b111f32247800dccd34dd396e731b9e7888b185 28-Apr-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Always load A2DP module locally

This makes legitimate unix socket interaction between A2DP
module and the Bluetooth stack.

Implemented by allowing both "local" and "hidl" interface
wrappers to co-exist for devices and streams. A "hybrid" device
factory is introduced to create an appropriate implementation
of a device depending on the requested module name.

Bug: 37640821
Test: Play Music over BT headset
Change-Id: I5592961dd5b56840418fb122680979d11a261b6c
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
40be8a343e8ceb7ae087bfb8988247731fa5ae75 27-Apr-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Support stateful downmixer effects

Fraunhofer's downmixer has additional buffering, this is incompatible
with how DownmixerBufferProvider used to process incomplete buffers.

Now the effects HIDL wrapper delivers frameCount updates in
audiobuffers to the server side. This fixes playback of multichannel
sound streams.

Bug: 36181621
Test: play 5.1 track from Play Music
Change-Id: I3b2cd097d61873c6ba329f1a574235ac88b21cac
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
a843e7bac59fd8a97ab3b4d5171c5d21bbd325fd 13-Mar-2017 Steven Moreland <smoreland@google.com> audio: remove unused using statements.

Bug: 36099713
Test: pass
Change-Id: Ib7a48469788a60778186368667c7043c33129e91
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
d2ae9cd57cfbb6f2f4dd0a91dbc7ea2e9e5fc447 03-Mar-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Check for EINTR and retry when waiting for EventFlag

EINTR can be returned in the case when a futex wait has been
interrupted by a signal. We need to retry in that case.

Bug: 35813113
Change-Id: I7eaee5298f5c0bc5cd62309c3fd8349ee3eae629
Test: make
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
23feba2593973e8ab251db8b63d8c2e228acbd51 23-Feb-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Enforce flush of hwbinder commands queue after cleaning client refs

In binderized mode, the exact time of destroying the server object
is not defined. Enforce destruction by flusing hwbinder commands
queue after releasing the last client reference.

Bug: 35394629
Test: capture trace while following repro steps, verify that server-side object
gets destroyed

Change-Id: Id2756cab0f36ed4eaf290d3f5a1c750c9c75b1d3
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
ed01be521e6e265dd8a27e43b581d13342e2528b 17-Feb-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Support 64-bit audioflinger with 32-bit hal. Part II

Also convert "get config" effects command. It doesn't seem to
be really used, but nevertheless nice to have it called correctly
in mixed ABI case.

Change-Id: Ib29124933f5bfb8fd164f29a3059b3a5a3e8052b
Test: none
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
f508bd4692736e1455553099f3276f43f4229e27 16-Feb-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Support 64-bit audioflinger with 32-bit hal

effect_config_t size depends on the architecture because it
uses pointers. Need to convert it into HIDL structure when
passing to HAL.

Test: build 64-bit af with 32-bit hal server in binderized mode
run Play Music, apply effects

Change-Id: I16ff9cd3accc00b6cb30f86418880ca5b749fdad
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
b4e779137c1849b7b3b09ee782e8bc14de9e2655 15-Feb-2017 Mikhail Naganov <mnaganov@google.com> audiohal: Remove timeouts in eventflag waits

Having a timeout is causing issues on hal driver thread startup.
If thread startup is delayed, then eventflag wait exits with
timeout. This leaves fmqs in an intermediate state, and a pending
wakeup for the server enables the client and the server to run
in parallel, causing races.

The legacy HAL interface didn't have any timeouts for read / write
operations, so there is no good reason for having them in
the wrapping interface.

The only difference with legacy HAL is that Treble HAL can be in
a separate process, and can crash, but this is handled separately.

Test: Check logs on startup, must be no fmq read / write errors
Bug: 35346610
Change-Id: Id3f79d31305afab194a4543bfb4501665518a27b
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
0688880d2862e6cddfea1fceca24e8a081a6be60 19-Jan-2017 Mikhail Naganov <mnaganov@google.com> audioflinger and hal: Compatibility fixes for Treble

1. Treat both reply size being 0 and reply buffer being NULL
as an indication that the reply isn't needed.

2. Synchronize both input and output effect chain buffers,
and avoid excessive copies when the input buffer is the same as
the output buffer.

3. Improve effect chain debug dump by showing both
"external" and "allocated" pointers for effect audio data buffers.

Bug: 34368451
Change-Id: I56aba6908408b5fce3f15c8d29138555101e8720
Test: volume controls works when both Bass Boost and EQ effects enabled
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
1acece4c23ba36e71bc42d8b44b8b62bd4423620 18-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Monitor crashes of audio hal service via linkToDeath"
d621ac82e648c8ef395068edb1af2747f49b700a 13-Jan-2017 Mikhail Naganov <mnaganov@google.com> Monitor crashes of audio hal service via linkToDeath

Hwbinder 'linkToDeath' mechanism is used to track abrupt
disappearance of server hal objects due to hal server crash.

Upon hal server crash, notifications can be sent to binder
clients if needed, then the audioserver crashes itself as the
current audio HAL design does not provide an easy way to restore
all the transient objects (devices, streams, effects) in their
pre-crash state.

Bug: 34158778
Test: In binderized mode, kill audio hal server
Change-Id: If9265711edc445984601fcb5c29d2c173a370762
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
bcd0a04befb085da19fec70a681096dad99afc30 17-Jan-2017 Mikhail Naganov <mnaganov@google.com> libaudiohal: Fix handling of NULL replySize param to Effect::command

Fix crash when the client passes NULL as 'replySize' for Effect::command.

Bug: 30222631
Change-Id: I015a49ba8c7a3103edfcbf9df39bb32093367a7a
Test: No crash when adjusting "Bass Boost" setting in Play Music
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
9dc1747e214a3d4b3c08e8c1f3d7982ef5108162 11-Jan-2017 Mikhail Naganov <mnaganov@google.com> Enable passthrough mode by default for audio, soundtrigger, and radio

Remove ENABLE_TREBLE flag usage for legacy hal fallback.
Introduce new build flag USE_LEGACY_LOCAL_AUDIO_HAL for fallback.

Bug: 32978887
Test: checked "OK Google" (from standby), Hangouts, YouTube,
Play Music, fake radio hal + test app
KI: issues when using equializer and virtualuzer in Play Music

Change-Id: I1c279e622c885f799481f1287e0660ca576fcea0
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
67d0d7eb36e7c36d0a9dec9264c0cab832196d57 11-Jan-2017 Martijn Coenen <maco@google.com> Fix _treble build targets breakage.

Test: ENABLE_TREBLE=true builds again.
Change-Id: I68470a8c9782f1938b3f8d35052baef0d1befde9
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
022b9953153bdb1984f0abb17d21ef8c1826ad49 05-Jan-2017 Mikhail Naganov <mnaganov@google.com> Re-implement HIDL effect processing using FMQ and IMemory

Result: no hwbinder calls due music processing.

Test: make, use Play Music with effects, check traces
Bug: 30222631
Change-Id: I06d0e94e603688874b31824427f3b0878b5f7c8e
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
e83be8af690ef1ac820a63414d522e77ca9d4db6 06-Jan-2017 Steven Moreland <smoreland@google.com> Remove usage of getStatus.

- remove from libaudiohal
- remove from services/radio
- remove from soundtrigger
- remove from omx

Bug: 31348667
Test: compiles
Change-Id: I75bb7b7388527dacfdc5bf128712cb8690bc286b
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
9f57e3c9da8923649adff62e63c644537f565e90 05-Dec-2016 Mikhail Naganov <mnaganov@google.com> Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL

audioflinger doesn't have a proper way to re-establish all
the opened streams if HAL crashes. The only valid way of dealing
with them is to restart the audioserver.

Although broadcastradio and sountrigger have cleaner protocols
for dealing with HAL failures and can handle HAL crash and restart,
since the audio side will anyway get broken, it makes sense
to also kill the audioserver when they detect HAL crash.

Change-Id: I5f8e8c1d0981042cdd435a3ddbb6526e9f226e6b
Test: kill audio-hal process, watch dmesg and logcat
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
34e5d30e54650b210c1b9730b1e4b412ec1cdb0c 10-Dec-2016 Samuel Saccone <samccone@google.com> Revert "Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL"

This reverts commit 9f55e5f998644d58cb8f3625e06d9b7a4e78555c.

Change-Id: Ic76c0cb5032af422699da2b43106b4b1de5ac935
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
9f55e5f998644d58cb8f3625e06d9b7a4e78555c 05-Dec-2016 Mikhail Naganov <mnaganov@google.com> Crash audioserver if EPIPE (DEAD_OBJECT) is received from the HAL

audioflinger doesn't have a proper way to re-establish all
the opened streams if HAL crashes. The only valid way of dealing
with them is to restart the audioserver.

Although broadcastradio and sountrigger have cleaner protocols
for dealing with HAL failures and can handle HAL crash and restart,
since the audio side will anyway get broken, it makes sense
to also kill the audioserver when they detect HAL crash.

Test: kill audio-hal process, watch dmesg and logcat
Change-Id: Ib2150b69c791ac49de9404de08fc6c309a3fcbd5
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp
f558e0218d2677a813c9c600886f673894eec927 15-Nov-2016 Mikhail Naganov <mnaganov@google.com> libaudiohal: Implement simple HIDL client

This client requires both HIDL client and server to be of the same
ABI version (e.g. 32-bit).

EffectHalHidl::process and EffectHalHidl::processReverse are stubs.

Some extra warnings are logged due to unimplemented functions
in the legacy HAL.

Bug: 30222631
Change-Id: Id074131dec6d6c4f1031695abcf3ea066e92a5af
Test: Play Music (play / EQ), YouTube, Loopback RTLT, Ok Google on N5X
/frameworks/av/media/libaudiohal/EffectHalHidl.cpp