summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/service
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2016-04-22 18:26:43 -0700
committerSteve Kondik <steve@cyngn.com>2016-04-22 21:46:57 -0700
commit244deea89aaf3c5dfa8bd369a845276ae501cb5a (patch)
tree956a42c556f316d0ae3fe6678fec847700b97d4f /services/audiopolicy/service
parentc27a16c33c78a36482336a16199b1b8be794cea4 (diff)
downloadframeworks_av-244deea89aaf3c5dfa8bd369a845276ae501cb5a.zip
frameworks_av-244deea89aaf3c5dfa8bd369a845276ae501cb5a.tar.gz
frameworks_av-244deea89aaf3c5dfa8bd369a845276ae501cb5a.tar.bz2
audiopolicy: Revert all session callback patches.
* This has been rearchitected in a better way, as this feature turns out to be more difficult than it seems. * Reverting all of this stuff and rolling it into a single commit. This reverts commit c27a16c33c78a36482336a16199b1b8be794cea4. This reverts commit 32ef0556ae58ff6b7c6fe6fb0a17d3ff7f01de31. This reverts commit 489c9fb62f02e1d23d6d6c89b22f7d19c596e65e. This reverts commit a4123803d0a0e9e0c69faa4207d357cc74a65d58. This reverts commit e13b58b988ab642d4ae5ca6d0a89013510714956. This reverts commit 47f8c7303c9e2054f1492b02b6c7472385c52dc9. This reverts commit 0479d7c79a7fd6f112e8dc7e45c009cf6602dbaa. Change-Id: Iaed9f198d806aa414c95960713e8187c98db248b
Diffstat (limited to 'services/audiopolicy/service')
-rw-r--r--services/audiopolicy/service/AudioPolicyClientImpl.cpp9
-rw-r--r--services/audiopolicy/service/AudioPolicyEffects.cpp27
-rw-r--r--services/audiopolicy/service/AudioPolicyEffects.h12
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp32
-rw-r--r--services/audiopolicy/service/AudioPolicyService.cpp97
-rw-r--r--services/audiopolicy/service/AudioPolicyService.h45
6 files changed, 16 insertions, 206 deletions
diff --git a/services/audiopolicy/service/AudioPolicyClientImpl.cpp b/services/audiopolicy/service/AudioPolicyClientImpl.cpp
index f1a2ae9..489a9be 100644
--- a/services/audiopolicy/service/AudioPolicyClientImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyClientImpl.cpp
@@ -219,15 +219,6 @@ void AudioPolicyService::AudioPolicyClient::onDynamicPolicyMixStateUpdate(
mAudioPolicyService->onDynamicPolicyMixStateUpdate(regId, state);
}
-void AudioPolicyService::AudioPolicyClient::onOutputSessionEffectsUpdate(
- audio_stream_type_t stream, audio_session_t sessionId,
- audio_output_flags_t flags, audio_channel_mask_t channelMask,
- uid_t uid, bool added)
-{
- mAudioPolicyService->onOutputSessionEffectsUpdate(stream, sessionId,
- flags, channelMask, uid, added);
-}
-
audio_unique_id_t AudioPolicyService::AudioPolicyClient::newAudioUniqueId()
{
return AudioSystem::newAudioUniqueId();
diff --git a/services/audiopolicy/service/AudioPolicyEffects.cpp b/services/audiopolicy/service/AudioPolicyEffects.cpp
index fce471f..26857b1 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.cpp
+++ b/services/audiopolicy/service/AudioPolicyEffects.cpp
@@ -28,7 +28,6 @@
#include <utils/Vector.h>
#include <utils/SortedVector.h>
#include <cutils/config_utils.h>
-#include "AudioPolicyService.h"
#include "AudioPolicyEffects.h"
#include "ServiceUtilities.h"
@@ -38,8 +37,7 @@ namespace android {
// AudioPolicyEffects Implementation
// ----------------------------------------------------------------------------
-AudioPolicyEffects::AudioPolicyEffects(AudioPolicyService *audioPolicyService) :
- mAudioPolicyService(audioPolicyService)
+AudioPolicyEffects::AudioPolicyEffects()
{
// load automatic audio effect modules
if (access(AUDIO_EFFECT_VENDOR_CONFIG_FILE2, R_OK) == 0) {
@@ -246,7 +244,6 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output,
if (idx < 0) {
procDesc = new EffectVector(audioSession);
mOutputSessions.add(audioSession, procDesc);
-
} else {
// EffectVector is existing and we just need to increase ref count
procDesc = mOutputSessions.valueAt(idx);
@@ -275,29 +272,9 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output,
procDesc->setProcessorEnabled(true);
}
-
return status;
}
-status_t AudioPolicyEffects::doAddOutputSessionEffects(audio_io_handle_t /* output */,
- audio_stream_type_t stream,
- int session,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask, uid_t uid)
-{
- if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
- return BAD_VALUE;
- }
- ALOGV("doAddOutputSessionEffects()");
-
- // notify listeners
- mAudioPolicyService->onOutputSessionEffectsUpdate(stream, (audio_session_t)session,
- flags, channelMask, uid, true);
-
- // Never return an error if effects setup fails.
- return NO_ERROR;
-}
-
status_t AudioPolicyEffects::releaseOutputSessionEffects(audio_io_handle_t output,
audio_stream_type_t stream,
int audioSession)
@@ -322,7 +299,7 @@ status_t AudioPolicyEffects::releaseOutputSessionEffects(audio_io_handle_t outpu
procDesc->mEffects.clear();
delete procDesc;
mOutputSessions.removeItemsAt(index);
- ALOGV("doReleaseOutputSessionEffects(): output processing released from session: %d",
+ ALOGV("releaseOutputSessionEffects(): output processing released from session: %d",
audioSession);
}
return status;
diff --git a/services/audiopolicy/service/AudioPolicyEffects.h b/services/audiopolicy/service/AudioPolicyEffects.h
index 1c251e0..3845050 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.h
+++ b/services/audiopolicy/service/AudioPolicyEffects.h
@@ -31,8 +31,6 @@
namespace android {
-class AudioPolicyService;
-
// ----------------------------------------------------------------------------
// AudioPolicyEffects class
@@ -46,7 +44,7 @@ public:
// The constructor will parse audio_effects.conf
// First it will look whether vendor specific file exists,
// otherwise it will parse the system default file.
- AudioPolicyEffects(AudioPolicyService *audioPolicyService);
+ AudioPolicyEffects();
virtual ~AudioPolicyEffects();
// NOTE: methods on AudioPolicyEffects should never be called with the AudioPolicyService
@@ -86,12 +84,6 @@ public:
audio_stream_type_t stream,
int audioSession);
- status_t doAddOutputSessionEffects(audio_io_handle_t output,
- audio_stream_type_t stream,
- int audioSession,
- audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE,
- audio_channel_mask_t channelMask = 0, uid_t uid = 0);
-
private:
// class to store the description of an effects and its parameters
@@ -200,8 +192,6 @@ private:
KeyedVector< audio_stream_type_t, EffectDescVector* > mOutputStreams;
// Automatic output effects are unique for audiosession ID
KeyedVector< int32_t, EffectVector* > mOutputSessions;
-
- AudioPolicyService *mAudioPolicyService;
};
}; // namespace android
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 54b1982..c0d3866 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -18,7 +18,6 @@
//#define LOG_NDEBUG 0
#include <utils/Log.h>
-#include <media/AudioPolicyHelper.h>
#include "AudioPolicyService.h"
#include "ServiceUtilities.h"
@@ -163,29 +162,18 @@ status_t AudioPolicyService::getOutputForAttr(const audio_attributes_t *attr,
return NO_INIT;
}
ALOGV("getOutput()");
- status_t status;
- sp<AudioPolicyEffects> audioPolicyEffects;
- {
- Mutex::Autolock _l(mLock);
+ Mutex::Autolock _l(mLock);
- // if the caller is us, trust the specified uid
- if (IPCThreadState::self()->getCallingPid() != getpid_cached || uid == (uid_t)-1) {
- uid_t newclientUid = IPCThreadState::self()->getCallingUid();
- if (uid != (uid_t)-1 && uid != newclientUid) {
- ALOGW("%s uid %d tried to pass itself off as %d", __FUNCTION__, newclientUid, uid);
- }
- uid = newclientUid;
+ // if the caller is us, trust the specified uid
+ if (IPCThreadState::self()->getCallingPid() != getpid_cached || uid == (uid_t)-1) {
+ uid_t newclientUid = IPCThreadState::self()->getCallingUid();
+ if (uid != (uid_t)-1 && uid != newclientUid) {
+ ALOGW("%s uid %d tried to pass itself off as %d", __FUNCTION__, newclientUid, uid);
}
- status = mAudioPolicyManager->getOutputForAttr(attr, output, session, stream, uid, samplingRate,
- format, channelMask, flags, selectedDeviceId, offloadInfo);
- audioPolicyEffects = mAudioPolicyEffects;
- }
-
- if (audioPolicyEffects != 0) {
- audioPolicyEffects->doAddOutputSessionEffects(*output, *stream, session, flags, channelMask, uid);
+ uid = newclientUid;
}
-
- return status;
+ return mAudioPolicyManager->getOutputForAttr(attr, output, session, stream, uid, samplingRate,
+ format, channelMask, flags, selectedDeviceId, offloadInfo);
}
status_t AudioPolicyService::startOutput(audio_io_handle_t output,
@@ -282,8 +270,6 @@ void AudioPolicyService::doReleaseOutput(audio_io_handle_t output,
{
ALOGV("doReleaseOutput from tid %d", gettid());
Mutex::Autolock _l(mLock);
- onOutputSessionEffectsUpdate(stream, session,
- AUDIO_OUTPUT_FLAG_NONE, 0, -1, false);
mAudioPolicyManager->releaseOutput(output, stream, session);
}
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index eead3ac..12cca65 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -116,7 +116,7 @@ void AudioPolicyService::onFirstRef()
#endif
}
// load audio processing modules
- sp<AudioPolicyEffects>audioPolicyEffects = new AudioPolicyEffects(this);
+ sp<AudioPolicyEffects>audioPolicyEffects = new AudioPolicyEffects();
{
Mutex::Autolock _l(mLock);
mAudioPolicyEffects = audioPolicyEffects;
@@ -177,23 +177,6 @@ void AudioPolicyService::setAudioPortCallbacksEnabled(bool enabled)
mNotificationClients.valueFor(uid)->setAudioPortCallbacksEnabled(enabled);
}
-status_t AudioPolicyService::setEffectSessionCallbacksEnabled(bool enabled)
-{
- Mutex::Autolock _l(mNotificationClientsLock);
-
- uid_t uid = IPCThreadState::self()->getCallingUid();
- if (mNotificationClients.indexOfKey(uid) < 0) {
- return NO_INIT;
- }
- if (!modifyAudioRoutingAllowed()) {
- ALOGE("setEffectSessionCallbacksEnabled requires MODIFY_AUDIO_ROUTING");
- return PERMISSION_DENIED;
- }
- mNotificationClients.valueFor(uid)->setEffectSessionCallbacksEnabled(enabled);
- return OK;
-}
-
-
// removeNotificationClient() is called when the client process dies.
void AudioPolicyService::removeNotificationClient(uid_t uid)
{
@@ -271,37 +254,11 @@ status_t AudioPolicyService::clientSetAudioPortConfig(const struct audio_port_co
return mAudioCommandThread->setAudioPortConfigCommand(config, delayMs);
}
-void AudioPolicyService::onOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added)
-{
- ALOGV("AudioPolicyService::onOutputSessionEffectsUpdate(%d, %d, %d)",
- stream, sessionId, added);
- mOutputCommandThread->effectSessionUpdateCommand(stream, sessionId,
- flags, channelMask, uid, added);
-}
-
-void AudioPolicyService::doOnOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added)
-{
- Mutex::Autolock _l(mNotificationClientsLock);
- for (size_t i = 0; i < mNotificationClients.size(); i++) {
- mNotificationClients.valueAt(i)->onOutputSessionEffectsUpdate(stream, sessionId,
- flags, channelMask, uid, added);
- }
-}
-
AudioPolicyService::NotificationClient::NotificationClient(const sp<AudioPolicyService>& service,
const sp<IAudioPolicyServiceClient>& client,
uid_t uid)
: mService(service), mUid(uid), mAudioPolicyServiceClient(client),
- mAudioPortCallbacksEnabled(false),
- mEffectSessionCallbacksEnabled(false)
+ mAudioPortCallbacksEnabled(false)
{
}
@@ -332,17 +289,6 @@ void AudioPolicyService::NotificationClient::onAudioPatchListUpdate()
}
}
-void AudioPolicyService::NotificationClient::onOutputSessionEffectsUpdate(
- audio_stream_type_t stream, audio_session_t sessionId,
- audio_output_flags_t flags, audio_channel_mask_t channelMask,
- uid_t uid, bool added)
-{
- if (mAudioPolicyServiceClient != 0 && mEffectSessionCallbacksEnabled) {
- mAudioPolicyServiceClient->onOutputSessionEffectsUpdate(stream, sessionId,
- flags, channelMask, uid, added);
- }
-}
-
void AudioPolicyService::NotificationClient::onDynamicPolicyMixStateUpdate(
String8 regId, int32_t state)
{
@@ -356,10 +302,6 @@ void AudioPolicyService::NotificationClient::setAudioPortCallbacksEnabled(bool e
mAudioPortCallbacksEnabled = enabled;
}
-void AudioPolicyService::NotificationClient::setEffectSessionCallbacksEnabled(bool enabled)
-{
- mEffectSessionCallbacksEnabled = enabled;
-}
void AudioPolicyService::binderDied(const wp<IBinder>& who) {
ALOGW("binderDied() %p, calling pid %d", who.unsafe_get(),
@@ -637,21 +579,6 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
svc->doOnDynamicPolicyMixStateUpdate(data->mRegId, data->mState);
mLock.lock();
} break;
- case EFFECT_SESSION_UPDATE: {
- EffectSessionUpdateData *data =
- (EffectSessionUpdateData *)command->mParam.get();
- ALOGV("AudioCommandThread() processing effect session update %d %d %d",
- data->mStream, data->mSessionId, data->mAdded);
- svc = mService.promote();
- if (svc == 0) {
- break;
- }
- mLock.unlock();
- svc->doOnOutputSessionEffectsUpdate(data->mStream, data->mSessionId,
- data->mFlags, data->mChannelMask, data->mUid, data->mAdded);
- mLock.lock();
- } break;
-
default:
ALOGW("AudioCommandThread() unknown command %d", command->mCommand);
}
@@ -924,26 +851,6 @@ void AudioPolicyService::AudioCommandThread::dynamicPolicyMixStateUpdateCommand(
sendCommand(command);
}
-void AudioPolicyService::AudioCommandThread::effectSessionUpdateCommand(
- audio_stream_type_t stream, audio_session_t sessionId,
- audio_output_flags_t flags, audio_channel_mask_t channelMask,
- uid_t uid, bool added)
-{
- sp<AudioCommand> command = new AudioCommand();
- command->mCommand = EFFECT_SESSION_UPDATE;
- EffectSessionUpdateData *data = new EffectSessionUpdateData();
- data->mStream = stream;
- data->mSessionId = sessionId;
- data->mFlags = flags;
- data->mChannelMask = channelMask;
- data->mUid = uid;
- data->mAdded = added;
- command->mParam = data;
- ALOGV("AudioCommandThread() sending effect session update (id=%d) for stream %d (added=%d)",
- stream, sessionId, added);
- sendCommand(command);
-}
-
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 bc2875d..d11294b 100644
--- a/services/audiopolicy/service/AudioPolicyService.h
+++ b/services/audiopolicy/service/AudioPolicyService.h
@@ -202,8 +202,6 @@ public:
audio_io_handle_t *handle);
virtual status_t stopAudioSource(audio_io_handle_t handle);
- virtual status_t setEffectSessionCallbacksEnabled(bool enabled);
-
status_t doStartOutput(audio_io_handle_t output,
audio_stream_type_t stream,
audio_session_t session);
@@ -231,17 +229,6 @@ public:
void onDynamicPolicyMixStateUpdate(String8 regId, int32_t state);
void doOnDynamicPolicyMixStateUpdate(String8 regId, int32_t state);
- void onOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added);
- void doOnOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added);
-
private:
AudioPolicyService() ANDROID_API;
virtual ~AudioPolicyService();
@@ -273,8 +260,7 @@ private:
UPDATE_AUDIOPORT_LIST,
UPDATE_AUDIOPATCH_LIST,
SET_AUDIOPORT_CONFIG,
- DYN_POLICY_MIX_STATE_UPDATE,
- EFFECT_SESSION_UPDATE,
+ DYN_POLICY_MIX_STATE_UPDATE
};
AudioCommandThread (String8 name, const wp<AudioPolicyService>& service);
@@ -317,11 +303,6 @@ private:
int delayMs);
void dynamicPolicyMixStateUpdateCommand(String8 regId, int32_t state);
void insertCommand_l(AudioCommand *command, int delayMs = 0);
- void effectSessionUpdateCommand(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added);
private:
class AudioCommandData;
@@ -418,16 +399,6 @@ private:
int32_t mState;
};
- class EffectSessionUpdateData : public AudioCommandData {
- public:
- audio_stream_type_t mStream;
- audio_session_t mSessionId;
- audio_output_flags_t mFlags;
- audio_channel_mask_t mChannelMask;
- uid_t mUid;
- bool mAdded;
- };
-
Mutex mLock;
Condition mWaitWorkCV;
Vector < sp<AudioCommand> > mAudioCommands; // list of pending commands
@@ -537,12 +508,6 @@ private:
virtual audio_unique_id_t newAudioUniqueId();
- virtual void onOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added);
-
private:
AudioPolicyService *mAudioPolicyService;
};
@@ -559,12 +524,7 @@ private:
void onAudioPatchListUpdate();
void onDynamicPolicyMixStateUpdate(String8 regId, int32_t state);
void setAudioPortCallbacksEnabled(bool enabled);
- void setEffectSessionCallbacksEnabled(bool enabled);
- void onOutputSessionEffectsUpdate(audio_stream_type_t stream,
- audio_session_t sessionId,
- audio_output_flags_t flags,
- audio_channel_mask_t channelMask,
- uid_t uid, bool added);
+
// IBinder::DeathRecipient
virtual void binderDied(const wp<IBinder>& who);
@@ -576,7 +536,6 @@ private:
const uid_t mUid;
const sp<IAudioPolicyServiceClient> mAudioPolicyServiceClient;
bool mAudioPortCallbacksEnabled;
- bool mEffectSessionCallbacksEnabled;
};
// Internal dump utilities.