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
diff --git a/media/libaudiohal/EffectBufferHalHidl.h b/media/libaudiohal/EffectBufferHalHidl.h
index 6e9fd0b..66a81c2 100644
--- a/media/libaudiohal/EffectBufferHalHidl.h
+++ b/media/libaudiohal/EffectBufferHalHidl.h
@@ -37,6 +37,7 @@
virtual void setExternalData(void* external);
virtual void setFrameCount(size_t frameCount);
+ virtual bool checkFrameCountChange();
virtual void update();
virtual void commit();
@@ -51,6 +52,7 @@
static uint64_t makeUniqueId();
const size_t mBufferSize;
+ bool mFrameCountChanged;
void* mExternalData;
AudioBuffer mHidlBuffer;
sp<IMemory> mMemory;