@ -48,12 +48,13 @@ AudioEffect::AudioEffect(const effect_uuid_t *type,
effect_callback_t cbf ,
void * user ,
audio_session_t sessionId ,
audio_io_handle_t io
audio_io_handle_t io ,
const AudioDeviceTypeAddr & device
)
: mStatus ( NO_INIT ) , mOpPackageName ( opPackageName )
{
AutoMutex lock ( mConstructLock ) ;
mStatus = set ( type , uuid , priority , cbf , user , sessionId , io );
mStatus = set ( type , uuid , priority , cbf , user , sessionId , io , device );
}
AudioEffect : : AudioEffect ( const char * typeStr ,
@ -63,7 +64,8 @@ AudioEffect::AudioEffect(const char *typeStr,
effect_callback_t cbf ,
void * user ,
audio_session_t sessionId ,
audio_io_handle_t io
audio_io_handle_t io ,
const AudioDeviceTypeAddr & device
)
: mStatus ( NO_INIT ) , mOpPackageName ( opPackageName )
{
@ -87,7 +89,7 @@ AudioEffect::AudioEffect(const char *typeStr,
}
AutoMutex lock ( mConstructLock ) ;
mStatus = set ( pType , pUuid , priority , cbf , user , sessionId , io );
mStatus = set ( pType , pUuid , priority , cbf , user , sessionId , io , device );
}
status_t AudioEffect : : set ( const effect_uuid_t * type ,
@ -96,7 +98,8 @@ status_t AudioEffect::set(const effect_uuid_t *type,
effect_callback_t cbf ,
void * user ,
audio_session_t sessionId ,
audio_io_handle_t io )
audio_io_handle_t io ,
const AudioDeviceTypeAddr & device )
{
sp < IEffect > iEffect ;
sp < IMemory > cblk ;
@ -109,6 +112,10 @@ status_t AudioEffect::set(const effect_uuid_t *type,
return INVALID_OPERATION ;
}
if ( sessionId = = AUDIO_SESSION_DEVICE & & io ! = AUDIO_IO_HANDLE_NONE ) {
ALOGW ( " IO handle should not be specified for device effect " ) ;
return BAD_VALUE ;
}
const sp < IAudioFlinger > & audioFlinger = AudioSystem : : get_audio_flinger ( ) ;
if ( audioFlinger = = 0 ) {
ALOGE ( " set(): Could not get audioflinger " ) ;
@ -133,7 +140,7 @@ status_t AudioEffect::set(const effect_uuid_t *type,
mClientPid = IPCThreadState : : self ( ) - > getCallingPid ( ) ;
iEffect = audioFlinger - > createEffect ( ( effect_descriptor_t * ) & mDescriptor ,
mIEffectClient , priority , io , mSessionId , mOpPackageName, mClientPid ,
mIEffectClient , priority , io , mSessionId , device, mOpPackageName, mClientPid ,
& mStatus , & mId , & enabled ) ;
if ( iEffect = = 0 | | ( mStatus ! = NO_ERROR & & mStatus ! = ALREADY_EXISTS ) ) {