summaryrefslogtreecommitdiffstats
path: root/media/libeffects/factory
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2011-07-11 15:20:27 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-11 15:20:27 -0700
commita5a0cea84cdf116f4de4f812c26be73e70a260e6 (patch)
tree8257599da1438dfd8311d9c9d59671c9fddd7bfd /media/libeffects/factory
parent52f556b976a9caceee183d8af2118ddbee02c70a (diff)
parentba7b8f881a9b6b21803752326d2932a3bd42d7cf (diff)
downloadframeworks_av-a5a0cea84cdf116f4de4f812c26be73e70a260e6.zip
frameworks_av-a5a0cea84cdf116f4de4f812c26be73e70a260e6.tar.gz
frameworks_av-a5a0cea84cdf116f4de4f812c26be73e70a260e6.tar.bz2
Merge "Audio Effect API: process reverse stream function"
Diffstat (limited to 'media/libeffects/factory')
-rw-r--r--media/libeffects/factory/EffectsFactory.c43
1 files changed, 41 insertions, 2 deletions
diff --git a/media/libeffects/factory/EffectsFactory.c b/media/libeffects/factory/EffectsFactory.c
index a3e76d9..a9689bc 100644
--- a/media/libeffects/factory/EffectsFactory.c
+++ b/media/libeffects/factory/EffectsFactory.c
@@ -130,10 +130,43 @@ int Effect_GetDescriptor(effect_handle_t self,
return ret;
}
+int Effect_ProcessReverse(effect_handle_t self, audio_buffer_t *inBuffer, audio_buffer_t *outBuffer)
+{
+ int ret = init();
+ if (ret < 0) {
+ return ret;
+ }
+ effect_entry_t *fx = (effect_entry_t *)self;
+ pthread_mutex_lock(&gLibLock);
+ if (fx->lib == NULL) {
+ pthread_mutex_unlock(&gLibLock);
+ return -EPIPE;
+ }
+ pthread_mutex_lock(&fx->lib->lock);
+ pthread_mutex_unlock(&gLibLock);
+
+ if ((*fx->subItfe)->process_reverse != NULL) {
+ ret = (*fx->subItfe)->process_reverse(fx->subItfe, inBuffer, outBuffer);
+ } else {
+ ret = -ENOSYS;
+ }
+ pthread_mutex_unlock(&fx->lib->lock);
+ return ret;
+}
+
+
const struct effect_interface_s gInterface = {
Effect_Process,
Effect_Command,
- Effect_GetDescriptor
+ Effect_GetDescriptor,
+ NULL
+};
+
+const struct effect_interface_s gInterfaceWithReverse = {
+ Effect_Process,
+ Effect_Command,
+ Effect_GetDescriptor,
+ Effect_ProcessReverse
};
/////////////////////////////////////////////////
@@ -266,7 +299,13 @@ int EffectCreate(effect_uuid_t *uuid, int32_t sessionId, int32_t ioId, effect_ha
// add entry to effect list
fx = (effect_entry_t *)malloc(sizeof(effect_entry_t));
fx->subItfe = itfe;
- fx->itfe = (struct effect_interface_s *)&gInterface;
+ if ((*itfe)->process_reverse != NULL) {
+ fx->itfe = (struct effect_interface_s *)&gInterfaceWithReverse;
+ LOGV("EffectCreate() gInterfaceWithReverse");
+ } else {
+ fx->itfe = (struct effect_interface_s *)&gInterface;
+ LOGV("EffectCreate() gInterface");
+ }
fx->lib = l;
e = (list_elem_t *)malloc(sizeof(list_elem_t));