summaryrefslogtreecommitdiffstats
path: root/media/libeffects
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2013-09-27 14:53:24 -0700
committerEric Laurent <elaurent@google.com>2013-09-27 16:03:26 -0700
commit83f400056ac913250f0926326ff78697c68d18a1 (patch)
tree4dcd3ee8df9d39701190664ce5d0e9b4bb5b7cc9 /media/libeffects
parent5b8ce24b849f6cd5629b4ba508f7c78d6227d250 (diff)
downloadframeworks_av-83f400056ac913250f0926326ff78697c68d18a1.zip
frameworks_av-83f400056ac913250f0926326ff78697c68d18a1.tar.gz
frameworks_av-83f400056ac913250f0926326ff78697c68d18a1.tar.bz2
Revert "Effects Factory changes for effects offload"
This reverts commit 284c17e73bbff51cb5b1adcee98386d47733757a. Change-Id: I31db21e1ad4758b21356bfe4c4c64f15b2da8737
Diffstat (limited to 'media/libeffects')
-rw-r--r--media/libeffects/data/audio_effects.conf39
-rw-r--r--media/libeffects/factory/EffectsFactory.c218
-rw-r--r--media/libeffects/factory/EffectsFactory.h19
3 files changed, 2 insertions, 274 deletions
diff --git a/media/libeffects/data/audio_effects.conf b/media/libeffects/data/audio_effects.conf
index f1c5f5b..0c3c687 100644
--- a/media/libeffects/data/audio_effects.conf
+++ b/media/libeffects/data/audio_effects.conf
@@ -6,23 +6,6 @@
# }
# }
libraries {
-# This is a proxy library that will be an abstraction for
-# the HW and SW effects
-
- #proxy {
- #path /system/lib/soundfx/libProxy.so
- #}
-
-# This is the SW implementation library of the effect
- #libSW {
- #path /system/lib/soundfx/libswwrapper.so
- #}
-
-# This is the HW implementation library for the effect
- #libHW {
- #path /system/lib/soundfx/libhwwrapper.so
- #}
-
bundle {
path /system/lib/soundfx/libbundlewrapper.so
}
@@ -63,28 +46,6 @@ libraries {
# }
effects {
-
-# additions for the proxy implementation
-# Proxy implementation
- #effectname {
- #library proxy
- #uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-
- # SW implemetation of the effect. Added as a node under the proxy to
- # indicate this as a sub effect.
- #libsw {
- #library libSW
- #uuid yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
- #} End of SW effect
-
- # HW implementation of the effect. Added as a node under the proxy to
- # indicate this as a sub effect.
- #libhw {
- #library libHW
- #uuid zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
- #}End of HW effect
- #} End of effect proxy
-
bassboost {
library bundle
uuid 8631f300-72e2-11df-b57e-0002a5d5c51b
diff --git a/media/libeffects/factory/EffectsFactory.c b/media/libeffects/factory/EffectsFactory.c
index f8d6041..f158929 100644
--- a/media/libeffects/factory/EffectsFactory.c
+++ b/media/libeffects/factory/EffectsFactory.c
@@ -28,9 +28,6 @@
static list_elem_t *gEffectList; // list of effect_entry_t: all currently created effects
static list_elem_t *gLibraryList; // list of lib_entry_t: all currently loaded libraries
-// list of effect_descriptor and list of sub effects : all currently loaded
-// It does not contain effects without sub effects.
-static list_sub_elem_t *gSubEffectList;
static pthread_mutex_t gLibLock = PTHREAD_MUTEX_INITIALIZER; // controls access to gLibraryList
static uint32_t gNumEffects; // total number number of effects
static list_elem_t *gCurLib; // current library in enumeration process
@@ -53,8 +50,6 @@ static int loadLibraries(cnode *root);
static int loadLibrary(cnode *root, const char *name);
static int loadEffects(cnode *root);
static int loadEffect(cnode *node);
-// To get and add the effect pointed by the passed node to the gSubEffectList
-static int addSubEffect(cnode *root);
static lib_entry_t *getLibrary(const char *path);
static void resetEffectEnumeration();
static uint32_t updateNumEffects();
@@ -62,10 +57,6 @@ static int findEffect(const effect_uuid_t *type,
const effect_uuid_t *uuid,
lib_entry_t **lib,
effect_descriptor_t **desc);
-// To search a subeffect in the gSubEffectList
-int findSubEffect(const effect_uuid_t *uuid,
- lib_entry_t **lib,
- effect_descriptor_t **desc);
static void dumpEffectDescriptor(effect_descriptor_t *desc, char *str, size_t len);
static int stringToUuid(const char *str, effect_uuid_t *uuid);
static int uuidToString(const effect_uuid_t *uuid, char *str, size_t maxLen);
@@ -296,12 +287,7 @@ int EffectCreate(const effect_uuid_t *uuid, int32_t sessionId, int32_t ioId, eff
ret = findEffect(NULL, uuid, &l, &d);
if (ret < 0){
- // Sub effects are not associated with the library->effects,
- // so, findEffect will fail. Search for the effect in gSubEffectList.
- ret = findSubEffect(uuid, &l, &d);
- if (ret < 0 ) {
- goto exit;
- }
+ goto exit;
}
// create effect in library
@@ -368,27 +354,21 @@ int EffectRelease(effect_handle_t handle)
}
if (e1 == NULL) {
ret = -ENOENT;
- pthread_mutex_unlock(&gLibLock);
goto exit;
}
// release effect in library
if (fx->lib == NULL) {
ALOGW("EffectRelease() fx %p library already unloaded", handle);
- pthread_mutex_unlock(&gLibLock);
} else {
pthread_mutex_lock(&fx->lib->lock);
- // Releasing the gLibLock here as the list access is over as the
- // effect is removed from the list.
- // If the gLibLock is not released, we will have a deadlock situation
- // since we call the sub effect release inside the EffectRelease of Proxy
- pthread_mutex_unlock(&gLibLock);
fx->lib->desc->release_effect(fx->subItfe);
pthread_mutex_unlock(&fx->lib->lock);
}
free(fx);
exit:
+ pthread_mutex_unlock(&gLibLock);
return ret;
}
@@ -400,49 +380,6 @@ int EffectIsNullUuid(const effect_uuid_t *uuid)
return 1;
}
-// Function to get the sub effect descriptors of the effect whose uuid
-// is pointed by the first argument. It searches the gSubEffectList for the
-// matching uuid and then copies the corresponding sub effect descriptors
-// to the inout param
-int EffectGetSubEffects(const effect_uuid_t *uuid,
- effect_descriptor_t *pDescriptors, size_t size)
-{
- ALOGV("EffectGetSubEffects() UUID: %08X-%04X-%04X-%04X-%02X%02X%02X%02X%02X"
- "%02X\n",uuid->timeLow, uuid->timeMid, uuid->timeHiAndVersion,
- uuid->clockSeq, uuid->node[0], uuid->node[1],uuid->node[2],
- uuid->node[3],uuid->node[4],uuid->node[5]);
-
- // Check if the size of the desc buffer is large enough for 2 subeffects
- if ((uuid == NULL) || (pDescriptors == NULL) ||
- (size < 2*sizeof(effect_descriptor_t))) {
- ALOGW("NULL pointer or insufficient memory. Cannot query subeffects");
- return -EINVAL;
- }
- int ret = init();
- if (ret < 0)
- return ret;
- list_sub_elem_t *e = gSubEffectList;
- sub_effect_entry_t *subeffect;
- effect_descriptor_t *d;
- int count = 0;
- while (e != NULL) {
- d = (effect_descriptor_t*)e->object;
- if (memcmp(uuid, &d->uuid, sizeof(effect_uuid_t)) == 0) {
- ALOGV("EffectGetSubEffects: effect found in the list");
- list_elem_t *subefx = e->sub_elem;
- while (subefx != NULL) {
- subeffect = (sub_effect_entry_t*)subefx->object;
- d = (effect_descriptor_t*)(subeffect->object);
- pDescriptors[count++] = *d;
- subefx = subefx->next;
- }
- ALOGV("EffectGetSubEffects end - copied the sub effect descriptors");
- return count;
- }
- e = e->next;
- }
- return -ENOENT;
-}
/////////////////////////////////////////////////
// Local functions
/////////////////////////////////////////////////
@@ -566,65 +503,6 @@ error:
return -EINVAL;
}
-// This will find the library and UUID tags of the sub effect pointed by the
-// node, gets the effect descriptor and lib_entry_t and adds the subeffect -
-// sub_entry_t to the gSubEffectList
-int addSubEffect(cnode *root)
-{
- ALOGV("addSubEffect");
- cnode *node;
- effect_uuid_t uuid;
- effect_descriptor_t *d;
- lib_entry_t *l;
- list_elem_t *e;
- node = config_find(root, LIBRARY_TAG);
- if (node == NULL) {
- return -EINVAL;
- }
- l = getLibrary(node->value);
- if (l == NULL) {
- ALOGW("addSubEffect() could not get library %s", node->value);
- return -EINVAL;
- }
- node = config_find(root, UUID_TAG);
- if (node == NULL) {
- return -EINVAL;
- }
- if (stringToUuid(node->value, &uuid) != 0) {
- ALOGW("addSubEffect() invalid uuid %s", node->value);
- return -EINVAL;
- }
- d = malloc(sizeof(effect_descriptor_t));
- if (l->desc->get_descriptor(&uuid, d) != 0) {
- char s[40];
- uuidToString(&uuid, s, 40);
- ALOGW("Error querying effect %s on lib %s", s, l->name);
- free(d);
- return -EINVAL;
- }
-#if (LOG_NDEBUG==0)
- char s[256];
- dumpEffectDescriptor(d, s, 256);
- ALOGV("addSubEffect() read descriptor %p:%s",d, s);
-#endif
- if (EFFECT_API_VERSION_MAJOR(d->apiVersion) !=
- EFFECT_API_VERSION_MAJOR(EFFECT_CONTROL_API_VERSION)) {
- ALOGW("Bad API version %08x on lib %s", d->apiVersion, l->name);
- free(d);
- return -EINVAL;
- }
- sub_effect_entry_t *sub_effect = malloc(sizeof(sub_effect_entry_t));
- sub_effect->object = d;
- // lib_entry_t is stored since the sub effects are not linked to the library
- sub_effect->lib = l;
- e = malloc(sizeof(list_elem_t));
- e->object = sub_effect;
- e->next = gSubEffectList->sub_elem;
- gSubEffectList->sub_elem = e;
- ALOGV("addSubEffect end");
- return 0;
-}
-
int loadEffects(cnode *root)
{
cnode *node;
@@ -693,101 +571,9 @@ int loadEffect(cnode *root)
e->next = l->effects;
l->effects = e;
- // After the UUID node in the config_tree, if node->next is valid,
- // that would be sub effect node.
- // Find the sub effects and add them to the gSubEffectList
- node = node->next;
- int count = 2;
- bool hwSubefx = false, swSubefx = false;
- list_sub_elem_t *sube = NULL;
- if (node != NULL) {
- ALOGV("Adding the effect to gEffectSubList as there are sub effects");
- sube = malloc(sizeof(list_sub_elem_t));
- sube->object = d;
- sube->sub_elem = NULL;
- sube->next = gSubEffectList;
- gSubEffectList = sube;
- }
- while (node != NULL && count) {
- if (addSubEffect(node)) {
- ALOGW("loadEffect() could not add subEffect %s", node->value);
- // Change the gSubEffectList to point to older list;
- gSubEffectList = sube->next;
- free(sube->sub_elem);// Free an already added sub effect
- sube->sub_elem = NULL;
- free(sube);
- return -ENOENT;
- }
- sub_effect_entry_t *subEntry = (sub_effect_entry_t*)gSubEffectList->sub_elem->object;
- effect_descriptor_t *subEffectDesc = (effect_descriptor_t*)(subEntry->object);
- // Since we return a dummy descriptor for the proxy during
- // get_descriptor call,we replace it with the correspoding
- // sw effect descriptor, but with Proxy UUID
- // check for Sw desc
- if (!((subEffectDesc->flags & EFFECT_FLAG_HW_ACC_MASK) ==
- EFFECT_FLAG_HW_ACC_TUNNEL)) {
- swSubefx = true;
- *d = *subEffectDesc;
- d->uuid = uuid;
- ALOGV("loadEffect() Changed the Proxy desc");
- } else
- hwSubefx = true;
- count--;
- node = node->next;
- }
- // 1 HW and 1 SW sub effect found. Set the offload flag in the Proxy desc
- if (hwSubefx && swSubefx) {
- d->flags |= EFFECT_FLAG_OFFLOAD_SUPPORTED;
- }
return 0;
}
-// Searches the sub effect matching to the specified uuid
-// in the gSubEffectList. It gets the lib_entry_t for
-// the matched sub_effect . Used in EffectCreate of sub effects
-int findSubEffect(const effect_uuid_t *uuid,
- lib_entry_t **lib,
- effect_descriptor_t **desc)
-{
- list_sub_elem_t *e = gSubEffectList;
- list_elem_t *subefx;
- sub_effect_entry_t *effect;
- lib_entry_t *l = NULL;
- effect_descriptor_t *d = NULL;
- int found = 0;
- int ret = 0;
-
- if (uuid == NULL)
- return -EINVAL;
-
- while (e != NULL && !found) {
- subefx = (list_elem_t*)(e->sub_elem);
- while (subefx != NULL) {
- effect = (sub_effect_entry_t*)subefx->object;
- l = (lib_entry_t *)effect->lib;
- d = (effect_descriptor_t *)effect->object;
- if (memcmp(&d->uuid, uuid, sizeof(effect_uuid_t)) == 0) {
- ALOGV("uuid matched");
- found = 1;
- break;
- }
- subefx = subefx->next;
- }
- e = e->next;
- }
- if (!found) {
- ALOGV("findSubEffect() effect not found");
- ret = -ENOENT;
- } else {
- ALOGV("findSubEffect() found effect: %s in lib %s", d->name, l->name);
- *lib = l;
- if (desc != NULL) {
- *desc = d;
- }
- }
- return ret;
-}
-
lib_entry_t *getLibrary(const char *name)
{
list_elem_t *e;
diff --git a/media/libeffects/factory/EffectsFactory.h b/media/libeffects/factory/EffectsFactory.h
index 147ff18..c1d4319 100644
--- a/media/libeffects/factory/EffectsFactory.h
+++ b/media/libeffects/factory/EffectsFactory.h
@@ -32,15 +32,6 @@ typedef struct list_elem_s {
struct list_elem_s *next;
} list_elem_t;
-// Structure used for storing effects with their sub effects.
-// Used in creating gSubEffectList. Here,
-// object holds the effect desc and the list sub_elem holds the sub effects
-typedef struct list_sub_elem_s {
- void *object;
- list_elem_t *sub_elem;
- struct list_sub_elem_s *next;
-} list_sub_elem_t;
-
typedef struct lib_entry_s {
audio_effect_library_t *desc;
char *name;
@@ -56,16 +47,6 @@ typedef struct effect_entry_s {
lib_entry_t *lib;
} effect_entry_t;
-// Structure used to store the lib entry
-// and the descriptor of the sub effects.
-// The library entry is to be stored in case of
-// sub effects as the sub effects are not linked
-// to the library list - gLibraryList.
-typedef struct sub_effect_entry_s {
- lib_entry_t *lib;
- void *object;
-} sub_effect_entry_t;
-
#if __cplusplus
} // extern "C"
#endif