diff options
author | Eric Laurent <elaurent@google.com> | 2012-01-17 17:35:03 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-01-17 17:35:03 -0800 |
commit | 63ad6aacc6ce6b729bf25f41376cfea731a2c1eb (patch) | |
tree | 7f5a8de6e8540f2424668e5c650dee567194fb4d | |
parent | f237a30e9344d43f832ba11db6f62c6ad2084444 (diff) | |
parent | 83844cc2f95dc279015b47fd1e18c7cb4eabe9a1 (diff) | |
download | frameworks_av-63ad6aacc6ce6b729bf25f41376cfea731a2c1eb.zip frameworks_av-63ad6aacc6ce6b729bf25f41376cfea731a2c1eb.tar.gz frameworks_av-63ad6aacc6ce6b729bf25f41376cfea731a2c1eb.tar.bz2 |
Merge "audio framework: manage stream volume per device"
-rw-r--r-- | include/media/AudioSystem.h | 8 | ||||
-rw-r--r-- | include/media/IAudioPolicyService.h | 8 | ||||
-rw-r--r-- | media/libmedia/AudioSystem.cpp | 12 | ||||
-rw-r--r-- | media/libmedia/IAudioPolicyService.cpp | 19 | ||||
-rw-r--r-- | services/audioflinger/AudioPolicyService.cpp | 26 | ||||
-rw-r--r-- | services/audioflinger/AudioPolicyService.h | 8 |
6 files changed, 63 insertions, 18 deletions
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h index 2ba083d..b56701b 100644 --- a/include/media/AudioSystem.h +++ b/include/media/AudioSystem.h @@ -170,8 +170,12 @@ public: static status_t initStreamVolume(audio_stream_type_t stream, int indexMin, int indexMax); - static status_t setStreamVolumeIndex(audio_stream_type_t stream, int index); - static status_t getStreamVolumeIndex(audio_stream_type_t stream, int *index); + static status_t setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device); + static status_t getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device); static uint32_t getStrategyForStream(audio_stream_type_t stream); static uint32_t getDevicesForStream(audio_stream_type_t stream); diff --git a/include/media/IAudioPolicyService.h b/include/media/IAudioPolicyService.h index ed64c77..a83d806 100644 --- a/include/media/IAudioPolicyService.h +++ b/include/media/IAudioPolicyService.h @@ -73,8 +73,12 @@ public: virtual status_t initStreamVolume(audio_stream_type_t stream, int indexMin, int indexMax) = 0; - virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, int index) = 0; - virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, int *index) = 0; + virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device) = 0; + virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device) = 0; virtual uint32_t getStrategyForStream(audio_stream_type_t stream) = 0; virtual uint32_t getDevicesForStream(audio_stream_type_t stream) = 0; virtual audio_io_handle_t getOutputForEffect(effect_descriptor_t *desc) = 0; diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index e537e5a..28892df 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -668,18 +668,22 @@ status_t AudioSystem::initStreamVolume(audio_stream_type_t stream, return aps->initStreamVolume(stream, indexMin, indexMax); } -status_t AudioSystem::setStreamVolumeIndex(audio_stream_type_t stream, int index) +status_t AudioSystem::setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->setStreamVolumeIndex(stream, index); + return aps->setStreamVolumeIndex(stream, index, device); } -status_t AudioSystem::getStreamVolumeIndex(audio_stream_type_t stream, int *index) +status_t AudioSystem::getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->getStreamVolumeIndex(stream, index); + return aps->getStreamVolumeIndex(stream, index, device); } uint32_t AudioSystem::getStrategyForStream(audio_stream_type_t stream) diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp index 645325b..6205ebd 100644 --- a/media/libmedia/IAudioPolicyService.cpp +++ b/media/libmedia/IAudioPolicyService.cpp @@ -240,21 +240,28 @@ public: return static_cast <status_t> (reply.readInt32()); } - virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, int index) + virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(static_cast <uint32_t>(stream)); data.writeInt32(index); + data.writeInt32(static_cast <uint32_t>(device)); remote()->transact(SET_STREAM_VOLUME, data, &reply); return static_cast <status_t> (reply.readInt32()); } - virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, int *index) + virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(static_cast <uint32_t>(stream)); + data.writeInt32(static_cast <uint32_t>(device)); + remote()->transact(GET_STREAM_VOLUME, data, &reply); int lIndex = reply.readInt32(); if (index) *index = lIndex; @@ -525,7 +532,10 @@ status_t BnAudioPolicyService::onTransact( audio_stream_type_t stream = static_cast <audio_stream_type_t>(data.readInt32()); int index = data.readInt32(); - reply->writeInt32(static_cast <uint32_t>(setStreamVolumeIndex(stream, index))); + audio_devices_t device = static_cast <audio_devices_t>(data.readInt32()); + reply->writeInt32(static_cast <uint32_t>(setStreamVolumeIndex(stream, + index, + device))); return NO_ERROR; } break; @@ -533,8 +543,9 @@ status_t BnAudioPolicyService::onTransact( CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_stream_type_t stream = static_cast <audio_stream_type_t>(data.readInt32()); + audio_devices_t device = static_cast <audio_devices_t>(data.readInt32()); int index; - status_t status = getStreamVolumeIndex(stream, &index); + status_t status = getStreamVolumeIndex(stream, &index, device); reply->writeInt32(index); reply->writeInt32(static_cast <uint32_t>(status)); return NO_ERROR; diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp index c69944a..fcf014f 100644 --- a/services/audioflinger/AudioPolicyService.cpp +++ b/services/audioflinger/AudioPolicyService.cpp @@ -407,7 +407,9 @@ status_t AudioPolicyService::initStreamVolume(audio_stream_type_t stream, return NO_ERROR; } -status_t AudioPolicyService::setStreamVolumeIndex(audio_stream_type_t stream, int index) +status_t AudioPolicyService::setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device) { if (mpAudioPolicy == NULL) { return NO_INIT; @@ -419,10 +421,19 @@ status_t AudioPolicyService::setStreamVolumeIndex(audio_stream_type_t stream, in return BAD_VALUE; } - return mpAudioPolicy->set_stream_volume_index(mpAudioPolicy, stream, index); + if (mpAudioPolicy->set_stream_volume_index_for_device) { + return mpAudioPolicy->set_stream_volume_index_for_device(mpAudioPolicy, + stream, + index, + device); + } else { + return mpAudioPolicy->set_stream_volume_index(mpAudioPolicy, stream, index); + } } -status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream, int *index) +status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device) { if (mpAudioPolicy == NULL) { return NO_INIT; @@ -430,7 +441,14 @@ status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream, in if (uint32_t(stream) >= AUDIO_STREAM_CNT) { return BAD_VALUE; } - return mpAudioPolicy->get_stream_volume_index(mpAudioPolicy, stream, index); + if (mpAudioPolicy->get_stream_volume_index_for_device) { + return mpAudioPolicy->get_stream_volume_index_for_device(mpAudioPolicy, + stream, + index, + device); + } else { + return mpAudioPolicy->get_stream_volume_index(mpAudioPolicy, stream, index); + } } uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream) diff --git a/services/audioflinger/AudioPolicyService.h b/services/audioflinger/AudioPolicyService.h index 127f1ec..0715790 100644 --- a/services/audioflinger/AudioPolicyService.h +++ b/services/audioflinger/AudioPolicyService.h @@ -88,8 +88,12 @@ public: virtual status_t initStreamVolume(audio_stream_type_t stream, int indexMin, int indexMax); - virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, int index); - virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, int *index); + virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, + int index, + audio_devices_t device); + virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, + int *index, + audio_devices_t device); virtual uint32_t getStrategyForStream(audio_stream_type_t stream); virtual uint32_t getDevicesForStream(audio_stream_type_t stream); |