audio hal: Fix multichannel playback
Correctly operate on input and output buffers in DownmixerBufferProvider
Note that playback is a bit choppy, need to investigate further.
Change-Id: I350175dcc9cc7142a1935585a8bd5e9abb1b8eb6
Test: play back a 5.1 file
diff --git a/include/media/BufferProviders.h b/include/media/BufferProviders.h
index d5899ea..9d026f6 100644
--- a/include/media/BufferProviders.h
+++ b/include/media/BufferProviders.h
@@ -113,6 +113,8 @@
protected:
sp<EffectsFactoryHalInterface> mEffectsFactory;
sp<EffectHalInterface> mDownmixInterface;
+ size_t mInFrameSize;
+ size_t mOutFrameSize;
sp<EffectBufferHalInterface> mInBuffer;
sp<EffectBufferHalInterface> mOutBuffer;
effect_config_t mDownmixConfig;
diff --git a/include/media/audiohal/EffectBufferHalInterface.h b/include/media/audiohal/EffectBufferHalInterface.h
index 102ec56..6fa7940 100644
--- a/include/media/audiohal/EffectBufferHalInterface.h
+++ b/include/media/audiohal/EffectBufferHalInterface.h
@@ -42,6 +42,8 @@
virtual void update() = 0; // copies data from the external buffer, noop for allocated buffers
virtual void commit() = 0; // copies data to the external buffer, noop for allocated buffers
+ virtual void update(size_t size) = 0; // copies partial data from external buffer
+ virtual void commit(size_t size) = 0; // copies partial data to external buffer
static status_t allocate(size_t size, sp<EffectBufferHalInterface>* buffer);
static status_t mirror(void* external, size_t size, sp<EffectBufferHalInterface>* buffer);