summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--media/libeffects/downmix/EffectDownmix.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/media/libeffects/downmix/EffectDownmix.c b/media/libeffects/downmix/EffectDownmix.c
index 5439b87..f37cd5e 100644
--- a/media/libeffects/downmix/EffectDownmix.c
+++ b/media/libeffects/downmix/EffectDownmix.c
@@ -24,6 +24,27 @@
#define MINUS_3_DB_IN_Q19_12 2896 // -3dB = 0.707 * 2^12 = 2896
+typedef enum {
+ CHANNEL_MASK_SURROUND = AUDIO_CHANNEL_OUT_SURROUND,
+ CHANNEL_MASK_QUAD_BACK = AUDIO_CHANNEL_OUT_QUAD,
+ // like AUDIO_CHANNEL_OUT_QUAD with *_SIDE_* instead of *_BACK_*, same channel order
+ CHANNEL_MASK_QUAD_SIDE =
+ AUDIO_CHANNEL_OUT_FRONT_LEFT |
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT |
+ AUDIO_CHANNEL_OUT_SIDE_LEFT |
+ AUDIO_CHANNEL_OUT_SIDE_RIGHT,
+ CHANNEL_MASK_5POINT1_BACK = AUDIO_CHANNEL_OUT_5POINT1,
+ // like AUDIO_CHANNEL_OUT_5POINT1 with *_SIDE_* instead of *_BACK_*, same channel order
+ CHANNEL_MASK_5POINT1_SIDE =
+ AUDIO_CHANNEL_OUT_FRONT_LEFT |
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT |
+ AUDIO_CHANNEL_OUT_FRONT_CENTER |
+ AUDIO_CHANNEL_OUT_LOW_FREQUENCY |
+ AUDIO_CHANNEL_OUT_SIDE_LEFT |
+ AUDIO_CHANNEL_OUT_SIDE_RIGHT,
+ CHANNEL_MASK_7POINT1_SIDE_BACK = AUDIO_CHANNEL_OUT_7POINT1,
+} downmix_input_channel_mask_t;
+
// effect_handle_t interface implementation for downmix effect
const struct effect_interface_s gDownmixInterface = {
Downmix_Process,
@@ -236,17 +257,19 @@ static int Downmix_Process(effect_handle_t self,
case DOWNMIX_TYPE_FOLD:
// optimize for the common formats
- switch(pDwmModule->config.inputCfg.channels) {
- case AUDIO_CHANNEL_OUT_QUAD:
+ switch((downmix_input_channel_mask_t)pDwmModule->config.inputCfg.channels) {
+ case CHANNEL_MASK_QUAD_BACK:
+ case CHANNEL_MASK_QUAD_SIDE:
Downmix_foldFromQuad(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_SURROUND:
+ case CHANNEL_MASK_SURROUND:
Downmix_foldFromSurround(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_5POINT1:
+ case CHANNEL_MASK_5POINT1_BACK:
+ case CHANNEL_MASK_5POINT1_SIDE:
Downmix_foldFrom5Point1(pSrc, pDst, numFrames, accumulate);
break;
- case AUDIO_CHANNEL_OUT_7POINT1:
+ case CHANNEL_MASK_7POINT1_SIDE_BACK:
Downmix_foldFrom7Point1(pSrc, pDst, numFrames, accumulate);
break;
default: