summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/service
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2016-04-19 02:41:45 -0700
committerSteve Kondik <steve@cyngn.com>2016-04-19 22:21:40 -0700
commit32ef0556ae58ff6b7c6fe6fb0a17d3ff7f01de31 (patch)
treee134a8ab7a0b5a00c7f3680b7b3ed6562ccbef80 /services/audiopolicy/service
parent489c9fb62f02e1d23d6d6c89b22f7d19c596e65e (diff)
downloadframeworks_av-32ef0556ae58ff6b7c6fe6fb0a17d3ff7f01de31.zip
frameworks_av-32ef0556ae58ff6b7c6fe6fb0a17d3ff7f01de31.tar.gz
frameworks_av-32ef0556ae58ff6b7c6fe6fb0a17d3ff7f01de31.tar.bz2
audiopolicy: Clean up the mess
* Since we're not using the policy directly to auto-attach, let's clean it up and remove the unused stuff. * Also fixes notifications for session release. This reverts commit 47f8c7303c9e2054f1492b02b6c7472385c52dc9. Change-Id: Ibe65f427773c6ef012dde4f289d10e4089c094ea
Diffstat (limited to 'services/audiopolicy/service')
-rw-r--r--services/audiopolicy/service/AudioPolicyEffects.cpp42
-rw-r--r--services/audiopolicy/service/AudioPolicyEffects.h5
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp33
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp38
-rw-r--r--services/audiopolicy/service/AudioPolicyService.cpp76
-rw-r--r--services/audiopolicy/service/AudioPolicyService.h41
6 files changed, 27 insertions, 208 deletions
diff --git a/services/audiopolicy/service/AudioPolicyEffects.cpp b/services/audiopolicy/service/AudioPolicyEffects.cpp
index bd1cc33..6a43bea 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.cpp
+++ b/services/audiopolicy/service/AudioPolicyEffects.cpp
@@ -275,10 +275,11 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output,
procDesc->setProcessorEnabled(true);
}
+
return status;
}
-status_t AudioPolicyEffects::doAddOutputSessionEffects(audio_io_handle_t output,
+status_t AudioPolicyEffects::doAddOutputSessionEffects(audio_io_handle_t /* output */,
audio_stream_type_t stream,
int session,
audio_output_flags_t flags,
@@ -289,12 +290,6 @@ status_t AudioPolicyEffects::doAddOutputSessionEffects(audio_io_handle_t output,
}
ALOGV("doAddOutputSessionEffects()");
- // create audio processors according to stream
- status_t status = addOutputSessionEffects(output, stream, session);
- if (status <= 0 && (status != NO_ERROR && status != ALREADY_EXISTS)) {
- ALOGW("Failed to add effects on session %d", session);
- }
-
// notify listeners
mAudioPolicyService->onOutputSessionEffectsUpdate(stream, (audio_session_t)session,
flags, channelMask, uid, true);
@@ -319,42 +314,9 @@ status_t AudioPolicyEffects::releaseOutputSessionEffects(audio_io_handle_t outpu
}
EffectVector *procDesc = mOutputSessions.valueAt(index);
-
- // just in case it already has a death wish
- if (procDesc->mRefCount == 0) {
- return NO_ERROR;
- }
-
procDesc->mRefCount--;
ALOGV("releaseOutputSessionEffects(): session: %d, refCount: %d",
audioSession, procDesc->mRefCount);
-
- if (procDesc->mRefCount == 0) {
- mAudioPolicyService->releaseOutputSessionEffectsDelayed(
- output, stream, audioSession, 10000);
- }
-
- return status;
-}
-
-status_t AudioPolicyEffects::doReleaseOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- int audioSession)
-{
- status_t status = NO_ERROR;
- (void) output; // argument not used for now
-
- Mutex::Autolock _l(mLock);
- ssize_t index = mOutputSessions.indexOfKey(audioSession);
- if (index < 0) {
- ALOGV("doReleaseOutputSessionEffects: no output processing was attached to this stream");
- return NO_ERROR;
- }
-
- EffectVector *procDesc = mOutputSessions.valueAt(index);
- ALOGV("doReleaseOutputSessionEffects(): session: %d, refCount: %d",
- audioSession, procDesc->mRefCount);
-
if (procDesc->mRefCount == 0) {
procDesc->setProcessorEnabled(false);
procDesc->mEffects.clear();
diff --git a/services/audiopolicy/service/AudioPolicyEffects.h b/services/audiopolicy/service/AudioPolicyEffects.h
index 6364e40..1c251e0 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.h
+++ b/services/audiopolicy/service/AudioPolicyEffects.h
@@ -86,11 +86,6 @@ public:
audio_stream_type_t stream,
int audioSession);
- // For deferred release
- status_t doReleaseOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- int audioSession);
-
status_t doAddOutputSessionEffects(audio_io_handle_t output,
audio_stream_type_t stream,
int audioSession,
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 51af20b..96bc4c7 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -182,30 +182,12 @@ status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr,
}
if (audioPolicyEffects != 0) {
- addOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
+ audioPolicyEffects->doAddOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
}
return status;
}
-status_t AudioPolicyService::addOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid)
-{
- if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
- return BAD_VALUE;
- }
- if (mAudioPolicyManager == NULL) {
- return NO_INIT;
- }
- ALOGV("addOutputSessionEffects()");
- return mOutputCommandThread->addOutputSessionEffectsCommand(
- output, stream, session, flags, channelMask, uid);
-}
-
status_t AudioPolicyService::startOutput(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session)
@@ -231,8 +213,19 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output,
return NO_INIT;
}
ALOGV("doStartOutput()");
+ sp<AudioPolicyEffects>audioPolicyEffects;
+ {
+ Mutex::Autolock _l(mLock);
+ audioPolicyEffects = mAudioPolicyEffects;
+ }
+ if (audioPolicyEffects != 0) {
+ // create audio processors according to stream
+ status_t status = audioPolicyEffects->addOutputSessionEffects(output, stream, session);
+ if (status != NO_ERROR && status != ALREADY_EXISTS) {
+ ALOGW("Failed to add effects on session %d", session);
+ }
+ }
Mutex::Autolock _l(mLock);
-
return mAudioPolicyManager->startOutput(output, stream, session);
}
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp
index e3d69ba..318c6d2 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImplLegacy.cpp
@@ -147,24 +147,6 @@ audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream,
format, channelMask, flags, offloadInfo);
}
-status_t AudioPolicyService::addOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid)
-{
- if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
- return BAD_VALUE;
- }
- if (mAudioPolicyManager == NULL) {
- return NO_INIT;
- }
- ALOGV("addOutputSessionEffects()");
- return mOutputCommandThread->addOutputSessionEffectsCommand(
- output, stream, session, flags, channelMask, uid);
-}
-
status_t AudioPolicyService::startOutput(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session)
@@ -190,6 +172,18 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output,
return NO_INIT;
}
ALOGV("doStartOutput()");
+ sp<AudioPolicyEffects>audioPolicyEffects;
+ {
+ Mutex::Autolock _l(mLock);
+ audioPolicyEffects = mAudioPolicyEffects;
+ }
+ if (audioPolicyEffects != 0) {
+ // create audio processors according to stream
+ status_t status = audioPolicyEffects->addOutputSessionEffects(output, stream, session);
+ if (status != NO_ERROR && status != ALREADY_EXISTS) {
+ ALOGW("Failed to add effects on session %d", session);
+ }
+ }
Mutex::Autolock _l(mLock);
return mpAudioPolicy->start_output(mpAudioPolicy, output, stream, session);
@@ -615,14 +609,6 @@ status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr,
if (*output == AUDIO_IO_HANDLE_NONE) {
return INVALID_OPERATION;
}
-
- Mutex::Autolock _l(mLock);
- sp<AudioPolicyEffects> audioPolicyEffects;
- audioPolicyEffects = mAudioPolicyEffects;
- if (audioPolicyEffects != 0) {
- addOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
- }
-
return NO_ERROR;
}
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 0e871c2..eead3ac 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -366,13 +366,6 @@ void AudioPolicyService::binderDied(const wp<IBinder>& who) {
IPCThreadState::self()->getCallingPid());
}
-void AudioPolicyService::releaseOutputSessionEffectsDelayed(
- audio_io_handle_t output, audio_stream_type_t stream,
- audio_unique_id_t sessionId, int delayMs)
-{
- mAudioCommandThread->releaseOutputSessionEffectsCommand(output, stream, sessionId, delayMs);
-}
-
static bool tryLock(Mutex& mutex)
{
bool locked = false;
@@ -658,35 +651,6 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
data->mFlags, data->mChannelMask, data->mUid, data->mAdded);
mLock.lock();
} break;
- case RELEASE_OUTPUT_SESSION_EFFECTS: {
- ReleaseOutputSessionEffectsData *data =
- (ReleaseOutputSessionEffectsData *)command->mParam.get();
- ALOGV("AudioCommandThread() processing release output session effects %d %d %d",
- data->mOutput, data->mStream, data->mSessionId);
- svc = mService.promote();
- if (svc == 0) {
- break;
- }
- mLock.unlock();
- svc->mAudioPolicyEffects->doReleaseOutputSessionEffects(
- data->mOutput, data->mStream, data->mSessionId);
- mLock.lock();
- } break;
- case ADD_OUTPUT_SESSION_EFFECTS: {
- AddOutputSessionEffectsData *data = (AddOutputSessionEffectsData *)command->mParam.get();
- ALOGV("AudioCommandThread() processing add output session effects %d",
- data->mOutput);
- svc = mService.promote();
- if (svc == 0) {
- break;
- }
- mLock.unlock();
- svc->mAudioPolicyEffects->doAddOutputSessionEffects(
- data->mOutput, data->mStream, data->mSessionId,
- data->mFlags, data->mChannelMask, data->mUid);
- mLock.lock();
- }break;
-
default:
ALOGW("AudioCommandThread() unknown command %d", command->mCommand);
@@ -852,29 +816,6 @@ status_t AudioPolicyService::AudioCommandThread::startOutputCommand(audio_io_han
return sendCommand(command);
}
-status_t AudioPolicyService::AudioCommandThread::addOutputSessionEffectsCommand(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid)
-{
- sp<AudioCommand> command = new AudioCommand();
- command->mCommand = ADD_OUTPUT_SESSION_EFFECTS;
- sp<AddOutputSessionEffectsData> data = new AddOutputSessionEffectsData();
- data->mOutput = output;
- data->mStream = stream;
- data->mSessionId = session;
- data->mFlags = flags;
- data->mChannelMask = channelMask;
- data->mUid = uid;
- command->mParam = data;
- command->mWaitStatus = false;
- ALOGV("AudioCommandThread() adding start output %d", output);
- return sendCommand(command);
-}
-
-
void AudioPolicyService::AudioCommandThread::stopOutputCommand(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session)
@@ -1003,23 +944,6 @@ void AudioPolicyService::AudioCommandThread::effectSessionUpdateCommand(
sendCommand(command);
}
-void AudioPolicyService::AudioCommandThread::releaseOutputSessionEffectsCommand(
- audio_io_handle_t output, audio_stream_type_t stream,
- audio_unique_id_t sessionId, int delayMs)
-{
- sp<AudioCommand> command = new AudioCommand();
- command->mCommand = RELEASE_OUTPUT_SESSION_EFFECTS;
- ReleaseOutputSessionEffectsData *data = new ReleaseOutputSessionEffectsData();
- data->mOutput = output;
- data->mStream = stream;
- data->mSessionId = sessionId;
- command->mParam = data;
- ALOGV("AudioCommandThread() sending release output session effects (id=%d) for stream %d",
- sessionId, stream);
- sendCommand(command, delayMs);
-}
-
-
status_t AudioPolicyService::AudioCommandThread::sendCommand(sp<AudioCommand>& command, int delayMs)
{
{
diff --git a/services/audiopolicy/service/AudioPolicyService.h b/services/audiopolicy/service/AudioPolicyService.h
index 01e0e5e..bc2875d 100644
--- a/services/audiopolicy/service/AudioPolicyService.h
+++ b/services/audiopolicy/service/AudioPolicyService.h
@@ -204,13 +204,6 @@ public:
virtual status_t setEffectSessionCallbacksEnabled(bool enabled);
- virtual status_t addOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid);
-
status_t doStartOutput(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session);
@@ -248,10 +241,6 @@ public:
audio_output_flags_t flags,
audio_channel_mask_t channelMask,
uid_t uid, bool added);
- void releaseOutputSessionEffectsDelayed(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_unique_id_t sessionId,
- int delayMs);
private:
AudioPolicyService() ANDROID_API;
@@ -286,8 +275,6 @@ private:
SET_AUDIOPORT_CONFIG,
DYN_POLICY_MIX_STATE_UPDATE,
EFFECT_SESSION_UPDATE,
- RELEASE_OUTPUT_SESSION_EFFECTS,
- ADD_OUTPUT_SESSION_EFFECTS
};
AudioCommandThread (String8 name, const wp<AudioPolicyService>& service);
@@ -335,17 +322,6 @@ private:
audio_output_flags_t flags,
audio_channel_mask_t channelMask,
uid_t uid, bool added);
- void releaseOutputSessionEffectsCommand(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_unique_id_t sessionId,
- int delayMs = 0);
- status_t addOutputSessionEffectsCommand(audio_io_handle_t output,
- audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid);
-
private:
class AudioCommandData;
@@ -452,23 +428,6 @@ private:
bool mAdded;
};
- class ReleaseOutputSessionEffectsData : public AudioCommandData {
- public:
- audio_io_handle_t mOutput;
- audio_stream_type_t mStream;
- audio_unique_id_t mSessionId;
- };
-
- class AddOutputSessionEffectsData : public AudioCommandData {
- public:
- audio_io_handle_t mOutput;
- audio_stream_type_t mStream;
- audio_session_t mSessionId;
- audio_output_flags_t mFlags;
- audio_channel_mask_t mChannelMask;
- uid_t mUid;
- };
-
Mutex mLock;
Condition mWaitWorkCV;
Vector < sp<AudioCommand> > mAudioCommands; // list of pending commands