diff options
author | Eric Laurent <elaurent@google.com> | 2010-07-20 13:37:19 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2010-07-20 13:37:19 -0700 |
commit | 240677ec68790b9af5fd16a604c0780eb2938bd6 (patch) | |
tree | 6ab427a0f6f36a3687c2ca720130a6bc12c2739b /media | |
parent | eaeffac5fc8244d8fe03de786baa3ca76f5553b8 (diff) | |
parent | dd2060932a7472ce361faacd340b0ef05b14c6ef (diff) | |
download | frameworks_base-240677ec68790b9af5fd16a604c0780eb2938bd6.zip frameworks_base-240677ec68790b9af5fd16a604c0780eb2938bd6.tar.gz frameworks_base-240677ec68790b9af5fd16a604c0780eb2938bd6.tar.bz2 |
resolved conflicts for merge of dd206093 to master
Change-Id: I21dd2321a4839d034d49092baccbf40986f17dae
Diffstat (limited to 'media')
-rw-r--r-- | media/libeffects/factory/EffectsFactory.c | 2 | ||||
-rw-r--r-- | media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp | 2 | ||||
-rw-r--r-- | media/libmedia/AudioSystem.cpp | 44 | ||||
-rw-r--r-- | media/libmedia/IAudioFlinger.cpp | 22 | ||||
-rw-r--r-- | media/libmedia/IAudioPolicyService.cpp | 148 |
5 files changed, 194 insertions, 24 deletions
diff --git a/media/libeffects/factory/EffectsFactory.c b/media/libeffects/factory/EffectsFactory.c index edd6184..0be280c 100644 --- a/media/libeffects/factory/EffectsFactory.c +++ b/media/libeffects/factory/EffectsFactory.c @@ -31,7 +31,7 @@ static list_elem_t *gCurLib; // current library in enumeration process static list_elem_t *gCurEffect; // current effect in enumeration process static uint32_t gCurEffectIdx; // current effect index in enumeration process -static const char * const gEffectLibPath = "/system/lib/soundfx"; // path to built-in effect libraries +const char * const gEffectLibPath = "/system/lib/soundfx"; // path to built-in effect libraries static int gInitDone; // true is global initialization has been preformed static int gNextLibId; // used by loadLibrary() to allocate unique library handles static int gCanQueryEffect; // indicates that call to EffectQueryEffect() is valid, i.e. that the list of effects diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp index 3bbcf55..9e39e79 100644 --- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp +++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp @@ -18,7 +18,7 @@ #define LOG_TAG "Bundle" #define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) #define LVM_BUNDLE // Include all the bundle code -#define LOG_NDEBUG 0 +//#define LOG_NDEBUG 0 #include <cutils/log.h> #include <assert.h> diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp index 372a927..9c2a8ba 100644 --- a/media/libmedia/AudioSystem.cpp +++ b/media/libmedia/AudioSystem.cpp @@ -590,18 +590,22 @@ audio_io_handle_t AudioSystem::getOutput(stream_type stream, return output; } -status_t AudioSystem::startOutput(audio_io_handle_t output, AudioSystem::stream_type stream) +status_t AudioSystem::startOutput(audio_io_handle_t output, + AudioSystem::stream_type stream, + int session) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->startOutput(output, stream); + return aps->startOutput(output, stream, session); } -status_t AudioSystem::stopOutput(audio_io_handle_t output, AudioSystem::stream_type stream) +status_t AudioSystem::stopOutput(audio_io_handle_t output, + AudioSystem::stream_type stream, + int session) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; - return aps->stopOutput(output, stream); + return aps->stopOutput(output, stream, session); } void AudioSystem::releaseOutput(audio_io_handle_t output) @@ -666,6 +670,38 @@ status_t AudioSystem::getStreamVolumeIndex(stream_type stream, int *index) return aps->getStreamVolumeIndex(stream, index); } +uint32_t AudioSystem::getStrategyForStream(AudioSystem::stream_type stream) +{ + const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); + if (aps == 0) return 0; + return aps->getStrategyForStream(stream); +} + +audio_io_handle_t AudioSystem::getOutputForEffect(effect_descriptor_t *desc) +{ + const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); + if (aps == 0) return PERMISSION_DENIED; + return aps->getOutputForEffect(desc); +} + +status_t AudioSystem::registerEffect(effect_descriptor_t *desc, + audio_io_handle_t output, + uint32_t strategy, + int session, + int id) +{ + const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); + if (aps == 0) return PERMISSION_DENIED; + return aps->registerEffect(desc, output, strategy, session, id); +} + +status_t AudioSystem::unregisterEffect(int id) +{ + const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); + if (aps == 0) return PERMISSION_DENIED; + return aps->unregisterEffect(id); +} + // --------------------------------------------------------------------------- void AudioSystem::AudioPolicyServiceClient::binderDied(const wp<IBinder>& who) { diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp index 7d6a5d3..3a89e25 100644 --- a/media/libmedia/IAudioFlinger.cpp +++ b/media/libmedia/IAudioFlinger.cpp @@ -69,7 +69,8 @@ enum { QUERY_NUM_EFFECTS, QUERY_EFFECT, GET_EFFECT_DESCRIPTOR, - CREATE_EFFECT + CREATE_EFFECT, + MOVE_EFFECTS }; class BpAudioFlinger : public BpInterface<IAudioFlinger> @@ -676,6 +677,17 @@ public: return effect; } + + virtual status_t moveEffects(int session, int srcOutput, int dstOutput) + { + Parcel data, reply; + data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); + data.writeInt32(session); + data.writeInt32(srcOutput); + data.writeInt32(dstOutput); + remote()->transact(MOVE_EFFECTS, data, &reply); + return reply.readInt32(); + } }; IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger"); @@ -1024,6 +1036,14 @@ status_t BnAudioFlinger::onTransact( reply->write(&desc, sizeof(effect_descriptor_t)); return NO_ERROR; } break; + case MOVE_EFFECTS: { + CHECK_INTERFACE(IAudioFlinger, data, reply); + int session = data.readInt32(); + int srcOutput = data.readInt32(); + int dstOutput = data.readInt32(); + reply->writeInt32(moveEffects(session, srcOutput, dstOutput)); + return NO_ERROR; + } break; default: return BBinder::onTransact(code, data, reply, flags); } diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp index 18dd173..950c213 100644 --- a/media/libmedia/IAudioPolicyService.cpp +++ b/media/libmedia/IAudioPolicyService.cpp @@ -44,7 +44,11 @@ enum { RELEASE_INPUT, INIT_STREAM_VOLUME, SET_STREAM_VOLUME, - GET_STREAM_VOLUME + GET_STREAM_VOLUME, + GET_STRATEGY_FOR_STREAM, + GET_OUTPUT_FOR_EFFECT, + REGISTER_EFFECT, + UNREGISTER_EFFECT }; class BpAudioPolicyService : public BpInterface<IAudioPolicyService> @@ -137,22 +141,28 @@ public: return static_cast <audio_io_handle_t> (reply.readInt32()); } - virtual status_t startOutput(audio_io_handle_t output, AudioSystem::stream_type stream) + virtual status_t startOutput(audio_io_handle_t output, + AudioSystem::stream_type stream, + int session) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(output); data.writeInt32(stream); + data.writeInt32(session); remote()->transact(START_OUTPUT, data, &reply); return static_cast <status_t> (reply.readInt32()); } - virtual status_t stopOutput(audio_io_handle_t output, AudioSystem::stream_type stream) + virtual status_t stopOutput(audio_io_handle_t output, + AudioSystem::stream_type stream, + int session) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(output); data.writeInt32(stream); + data.writeInt32(session); remote()->transact(STOP_OUTPUT, data, &reply); return static_cast <status_t> (reply.readInt32()); } @@ -242,6 +252,51 @@ public: if (index) *index = lIndex; return static_cast <status_t> (reply.readInt32()); } + + virtual uint32_t getStrategyForStream(AudioSystem::stream_type stream) + { + Parcel data, reply; + data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); + data.writeInt32(static_cast <uint32_t>(stream)); + remote()->transact(GET_STRATEGY_FOR_STREAM, data, &reply); + return reply.readInt32(); + } + + virtual audio_io_handle_t getOutputForEffect(effect_descriptor_t *desc) + { + Parcel data, reply; + data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); + data.write(desc, sizeof(effect_descriptor_t)); + remote()->transact(GET_OUTPUT_FOR_EFFECT, data, &reply); + return static_cast <audio_io_handle_t> (reply.readInt32()); + } + + virtual status_t registerEffect(effect_descriptor_t *desc, + audio_io_handle_t output, + uint32_t strategy, + int session, + int id) + { + Parcel data, reply; + data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); + data.write(desc, sizeof(effect_descriptor_t)); + data.writeInt32(output); + data.writeInt32(strategy); + data.writeInt32(session); + data.writeInt32(id); + remote()->transact(REGISTER_EFFECT, data, &reply); + return static_cast <status_t> (reply.readInt32()); + } + + virtual status_t unregisterEffect(int id) + { + Parcel data, reply; + data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); + data.writeInt32(id); + remote()->transact(UNREGISTER_EFFECT, data, &reply); + return static_cast <status_t> (reply.readInt32()); + } + }; IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); @@ -255,18 +310,24 @@ status_t BnAudioPolicyService::onTransact( switch(code) { case SET_DEVICE_CONNECTION_STATE: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::audio_devices device = static_cast <AudioSystem::audio_devices>(data.readInt32()); - AudioSystem::device_connection_state state = static_cast <AudioSystem::device_connection_state>(data.readInt32()); + AudioSystem::audio_devices device = + static_cast <AudioSystem::audio_devices>(data.readInt32()); + AudioSystem::device_connection_state state = + static_cast <AudioSystem::device_connection_state>(data.readInt32()); const char *device_address = data.readCString(); - reply->writeInt32(static_cast <uint32_t>(setDeviceConnectionState(device, state, device_address))); + reply->writeInt32(static_cast<uint32_t> (setDeviceConnectionState(device, + state, + device_address))); return NO_ERROR; } break; case GET_DEVICE_CONNECTION_STATE: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::audio_devices device = static_cast <AudioSystem::audio_devices>(data.readInt32()); + AudioSystem::audio_devices device = + static_cast<AudioSystem::audio_devices> (data.readInt32()); const char *device_address = data.readCString(); - reply->writeInt32(static_cast <uint32_t>(getDeviceConnectionState(device, device_address))); + reply->writeInt32(static_cast<uint32_t> (getDeviceConnectionState(device, + device_address))); return NO_ERROR; } break; @@ -287,7 +348,8 @@ status_t BnAudioPolicyService::onTransact( case SET_FORCE_USE: { CHECK_INTERFACE(IAudioPolicyService, data, reply); AudioSystem::force_use usage = static_cast <AudioSystem::force_use>(data.readInt32()); - AudioSystem::forced_config config = static_cast <AudioSystem::forced_config>(data.readInt32()); + AudioSystem::forced_config config = + static_cast <AudioSystem::forced_config>(data.readInt32()); reply->writeInt32(static_cast <uint32_t>(setForceUse(usage, config))); return NO_ERROR; } break; @@ -301,11 +363,13 @@ status_t BnAudioPolicyService::onTransact( case GET_OUTPUT: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::stream_type stream = static_cast <AudioSystem::stream_type>(data.readInt32()); + AudioSystem::stream_type stream = + static_cast <AudioSystem::stream_type>(data.readInt32()); uint32_t samplingRate = data.readInt32(); uint32_t format = data.readInt32(); uint32_t channels = data.readInt32(); - AudioSystem::output_flags flags = static_cast <AudioSystem::output_flags>(data.readInt32()); + AudioSystem::output_flags flags = + static_cast <AudioSystem::output_flags>(data.readInt32()); audio_io_handle_t output = getOutput(stream, samplingRate, @@ -320,7 +384,10 @@ status_t BnAudioPolicyService::onTransact( CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t output = static_cast <audio_io_handle_t>(data.readInt32()); uint32_t stream = data.readInt32(); - reply->writeInt32(static_cast <uint32_t>(startOutput(output, (AudioSystem::stream_type)stream))); + int session = data.readInt32(); + reply->writeInt32(static_cast <uint32_t>(startOutput(output, + (AudioSystem::stream_type)stream, + session))); return NO_ERROR; } break; @@ -328,7 +395,10 @@ status_t BnAudioPolicyService::onTransact( CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_io_handle_t output = static_cast <audio_io_handle_t>(data.readInt32()); uint32_t stream = data.readInt32(); - reply->writeInt32(static_cast <uint32_t>(stopOutput(output, (AudioSystem::stream_type)stream))); + int session = data.readInt32(); + reply->writeInt32(static_cast <uint32_t>(stopOutput(output, + (AudioSystem::stream_type)stream, + session))); return NO_ERROR; } break; @@ -345,7 +415,8 @@ status_t BnAudioPolicyService::onTransact( uint32_t samplingRate = data.readInt32(); uint32_t format = data.readInt32(); uint32_t channels = data.readInt32(); - AudioSystem::audio_in_acoustics acoustics = static_cast <AudioSystem::audio_in_acoustics>(data.readInt32()); + AudioSystem::audio_in_acoustics acoustics = + static_cast <AudioSystem::audio_in_acoustics>(data.readInt32()); audio_io_handle_t input = getInput(inputSource, samplingRate, format, @@ -378,7 +449,8 @@ status_t BnAudioPolicyService::onTransact( case INIT_STREAM_VOLUME: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::stream_type stream = static_cast <AudioSystem::stream_type>(data.readInt32()); + AudioSystem::stream_type stream = + static_cast <AudioSystem::stream_type>(data.readInt32()); int indexMin = data.readInt32(); int indexMax = data.readInt32(); reply->writeInt32(static_cast <uint32_t>(initStreamVolume(stream, indexMin,indexMax))); @@ -387,7 +459,8 @@ status_t BnAudioPolicyService::onTransact( case SET_STREAM_VOLUME: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::stream_type stream = static_cast <AudioSystem::stream_type>(data.readInt32()); + AudioSystem::stream_type stream = + static_cast <AudioSystem::stream_type>(data.readInt32()); int index = data.readInt32(); reply->writeInt32(static_cast <uint32_t>(setStreamVolumeIndex(stream, index))); return NO_ERROR; @@ -395,7 +468,8 @@ status_t BnAudioPolicyService::onTransact( case GET_STREAM_VOLUME: { CHECK_INTERFACE(IAudioPolicyService, data, reply); - AudioSystem::stream_type stream = static_cast <AudioSystem::stream_type>(data.readInt32()); + AudioSystem::stream_type stream = + static_cast <AudioSystem::stream_type>(data.readInt32()); int index; status_t status = getStreamVolumeIndex(stream, &index); reply->writeInt32(index); @@ -403,6 +477,46 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; } break; + case GET_STRATEGY_FOR_STREAM: { + CHECK_INTERFACE(IAudioPolicyService, data, reply); + AudioSystem::stream_type stream = + static_cast <AudioSystem::stream_type>(data.readInt32()); + reply->writeInt32(getStrategyForStream(stream)); + return NO_ERROR; + } break; + + case GET_OUTPUT_FOR_EFFECT: { + CHECK_INTERFACE(IAudioPolicyService, data, reply); + effect_descriptor_t desc; + data.read(&desc, sizeof(effect_descriptor_t)); + audio_io_handle_t output = getOutputForEffect(&desc); + reply->writeInt32(static_cast <int>(output)); + return NO_ERROR; + } break; + + case REGISTER_EFFECT: { + CHECK_INTERFACE(IAudioPolicyService, data, reply); + effect_descriptor_t desc; + data.read(&desc, sizeof(effect_descriptor_t)); + audio_io_handle_t output = data.readInt32(); + uint32_t strategy = data.readInt32(); + int session = data.readInt32(); + int id = data.readInt32(); + reply->writeInt32(static_cast <int32_t>(registerEffect(&desc, + output, + strategy, + session, + id))); + return NO_ERROR; + } break; + + case UNREGISTER_EFFECT: { + CHECK_INTERFACE(IAudioPolicyService, data, reply); + int id = data.readInt32(); + reply->writeInt32(static_cast <int32_t>(unregisterEffect(id))); + return NO_ERROR; + } break; + default: return BBinder::onTransact(code, data, reply, flags); } |