EffectsFactory.h revision f90c7e0bb8d83d8b7f733bdf430d331ea3f221e8
1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)/* 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * Copyright (C) 2010 The Android Open Source Project 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * you may not use this file except in compliance with the License. 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * You may obtain a copy of the License at 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * 8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * See the License for the specific language governing permissions and 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * limitations under the License. 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) */ 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef ANDROID_EFFECTSFACTORY_H_ 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define ANDROID_EFFECTSFACTORY_H_ 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <cutils/log.h> 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <pthread.h> 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <dirent.h> 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <hardware/audio_effect.h> 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if __cplusplus 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)extern "C" { 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef struct list_elem_s { 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void *object; 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) struct list_elem_s *next; 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} list_elem_t; 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Structure used for storing effects with their sub effects. 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Used in creating gSubEffectList. Here, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// object holds the effect desc and the list sub_elem holds the sub effects 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef struct list_sub_elem_s { 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void *object; 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) list_elem_t *sub_elem; 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) struct list_sub_elem_s *next; 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} list_sub_elem_t; 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef struct lib_entry_s { 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) audio_effect_library_t *desc; 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) char *name; 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) char *path; 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void *handle; 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) list_elem_t *effects; //list of effect_descriptor_t 50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) pthread_mutex_t lock; 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} lib_entry_t; 52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef struct effect_entry_s { 54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) struct effect_interface_s *itfe; 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) effect_handle_t subItfe; 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) lib_entry_t *lib; 57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} effect_entry_t; 58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Structure used to store the lib entry 60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// and the descriptor of the sub effects. 61010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// The library entry is to be stored in case of 62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// sub effects as the sub effects are not linked 63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// to the library list - gLibraryList. 64010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)typedef struct sub_effect_entry_s { 65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) lib_entry_t *lib; 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void *object; 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} sub_effect_entry_t; 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 70010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 71010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Function: EffectGetSubEffects 73010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// 74010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Description: Returns the descriptors of the sub effects of the effect 75010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// whose uuid is pointed to by first argument. 76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Input: 78010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// pEffectUuid: pointer to the effect uuid. 79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// size: max number of sub_effect_entry_t * in pSube. 80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Input/Output: 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// pSube: address where to return the sub effect structures. 83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Output: 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// returned value: 0 successful operation. 85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// -ENODEV factory failed to initialize 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// -EINVAL invalid pEffectUuid or pDescriptor 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// -ENOENT no effect with this uuid found 88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// *pDescriptor: updated with the sub effect descriptors. 89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// 90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)int EffectGetSubEffects(const effect_uuid_t *pEffectUuid, 92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) sub_effect_entry_t **pSube, 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t size); 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 95cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if __cplusplus 96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // extern "C" 976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 980de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 100010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif /*ANDROID_EFFECTSFACTORY_H_*/ 101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)