|
|
@ -829,67 +829,96 @@ bool AudioPolicyService::isSourceActive(audio_source_t source) const
|
|
|
|
return mAudioPolicyManager->isSourceActive(source);
|
|
|
|
return mAudioPolicyManager->isSourceActive(source);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::queryDefaultPreProcessing(audio_session_t audioSession,
|
|
|
|
status_t AudioPolicyService::getAudioPolicyEffects(sp<AudioPolicyEffects>& audioPolicyEffects)
|
|
|
|
effect_descriptor_t *descriptors,
|
|
|
|
|
|
|
|
uint32_t *count)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mAudioPolicyManager == NULL) {
|
|
|
|
if (mAudioPolicyManager == NULL) {
|
|
|
|
*count = 0;
|
|
|
|
|
|
|
|
return NO_INIT;
|
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Mutex::Autolock _l(mLock);
|
|
|
|
Mutex::Autolock _l(mLock);
|
|
|
|
audioPolicyEffects = mAudioPolicyEffects;
|
|
|
|
audioPolicyEffects = mAudioPolicyEffects;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (audioPolicyEffects == 0) {
|
|
|
|
if (audioPolicyEffects == 0) {
|
|
|
|
*count = 0;
|
|
|
|
|
|
|
|
return NO_INIT;
|
|
|
|
return NO_INIT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::queryDefaultPreProcessing(audio_session_t audioSession,
|
|
|
|
|
|
|
|
effect_descriptor_t *descriptors,
|
|
|
|
|
|
|
|
uint32_t *count)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
|
|
|
|
status_t status = getAudioPolicyEffects(audioPolicyEffects);
|
|
|
|
|
|
|
|
if (status != OK) {
|
|
|
|
|
|
|
|
*count = 0;
|
|
|
|
|
|
|
|
return status;
|
|
|
|
|
|
|
|
}
|
|
|
|
return audioPolicyEffects->queryDefaultInputEffects(
|
|
|
|
return audioPolicyEffects->queryDefaultInputEffects(
|
|
|
|
(audio_session_t)audioSession, descriptors, count);
|
|
|
|
(audio_session_t)audioSession, descriptors, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::addStreamDefaultEffect(const effect_uuid_t *type,
|
|
|
|
status_t AudioPolicyService::addSourceDefaultEffect(const effect_uuid_t *type,
|
|
|
|
const String16& opPackageName,
|
|
|
|
const String16& opPackageName,
|
|
|
|
const effect_uuid_t *uuid,
|
|
|
|
const effect_uuid_t *uuid,
|
|
|
|
int32_t priority,
|
|
|
|
int32_t priority,
|
|
|
|
audio_usage_t usage,
|
|
|
|
audio_source_t source,
|
|
|
|
audio_unique_id_t* id)
|
|
|
|
audio_unique_id_t* id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mAudioPolicyManager == NULL) {
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
return NO_INIT;
|
|
|
|
status_t status = getAudioPolicyEffects(audioPolicyEffects);
|
|
|
|
|
|
|
|
if (status != OK) {
|
|
|
|
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return audioPolicyEffects->addSourceDefaultEffect(
|
|
|
|
|
|
|
|
type, opPackageName, uuid, priority, source, id);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::addStreamDefaultEffect(const effect_uuid_t *type,
|
|
|
|
|
|
|
|
const String16& opPackageName,
|
|
|
|
|
|
|
|
const effect_uuid_t *uuid,
|
|
|
|
|
|
|
|
int32_t priority,
|
|
|
|
|
|
|
|
audio_usage_t usage,
|
|
|
|
|
|
|
|
audio_unique_id_t* id)
|
|
|
|
|
|
|
|
{
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
{
|
|
|
|
status_t status = getAudioPolicyEffects(audioPolicyEffects);
|
|
|
|
Mutex::Autolock _l(mLock);
|
|
|
|
if (status != OK) {
|
|
|
|
audioPolicyEffects = mAudioPolicyEffects;
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (audioPolicyEffects == 0) {
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
return NO_INIT;
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return audioPolicyEffects->addStreamDefaultEffect(
|
|
|
|
return audioPolicyEffects->addStreamDefaultEffect(
|
|
|
|
type, opPackageName, uuid, priority, usage, id);
|
|
|
|
type, opPackageName, uuid, priority, usage, id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::removeStreamDefaultEffect(audio_unique_id_t id)
|
|
|
|
status_t AudioPolicyService::removeSourceDefaultEffect(audio_unique_id_t id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mAudioPolicyManager == NULL) {
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
return NO_INIT;
|
|
|
|
status_t status = getAudioPolicyEffects(audioPolicyEffects);
|
|
|
|
|
|
|
|
if (status != OK) {
|
|
|
|
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return audioPolicyEffects->removeSourceDefaultEffect(id);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
status_t AudioPolicyService::removeStreamDefaultEffect(audio_unique_id_t id)
|
|
|
|
|
|
|
|
{
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
sp<AudioPolicyEffects>audioPolicyEffects;
|
|
|
|
{
|
|
|
|
status_t status = getAudioPolicyEffects(audioPolicyEffects);
|
|
|
|
Mutex::Autolock _l(mLock);
|
|
|
|
if (status != OK) {
|
|
|
|
audioPolicyEffects = mAudioPolicyEffects;
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (audioPolicyEffects == 0) {
|
|
|
|
if (!modifyDefaultAudioEffectsAllowed()) {
|
|
|
|
return NO_INIT;
|
|
|
|
return PERMISSION_DENIED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return audioPolicyEffects->removeStreamDefaultEffect(id);
|
|
|
|
return audioPolicyEffects->removeStreamDefaultEffect(id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|