Audio effect framework is extended to suport effects on output and input audio path. AudioFlinger: Support for audio effects and effect chains is moved from PlaybackThread class to ThreadBase class so that RecordThread can manage effects. Effects of type pre processing are allowed on record thread only. When a pre processing is enabled, the effect interface handle is passed down to the input stream so that the audio HAL can call the process function. The record thread loop calls the effect chain process function that will only manage the effect state and commands and skip the process function. AudioRecord: The audio session is allocated before calling getInput() into audio policy serice so that the session is known before the input theead is created and pre processings can be created on the correct session. AudioPolicyService: default pre processing for a given input source are loaded from audio_effects.conf file. When an input is created, corresponding effects are created and enabled. Change-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2010 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef ANDROID_EFFECTSFACTORY_H_
|
|
#define ANDROID_EFFECTSFACTORY_H_
|
|
|
|
#include <cutils/log.h>
|
|
#include <pthread.h>
|
|
#include <dirent.h>
|
|
#include <media/EffectsFactoryApi.h>
|
|
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
typedef struct list_elem_s {
|
|
void *object;
|
|
struct list_elem_s *next;
|
|
} list_elem_t;
|
|
|
|
typedef struct lib_entry_s {
|
|
audio_effect_library_t *desc;
|
|
char *name;
|
|
char *path;
|
|
void *handle;
|
|
list_elem_t *effects; //list of effect_descriptor_t
|
|
pthread_mutex_t lock;
|
|
} lib_entry_t;
|
|
|
|
typedef struct effect_entry_s {
|
|
struct effect_interface_s *itfe;
|
|
effect_handle_t subItfe;
|
|
lib_entry_t *lib;
|
|
} effect_entry_t;
|
|
|
|
#if __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
|
|
#endif /*ANDROID_EFFECTSFACTORY_H_*/
|