Loading services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h +2 −2 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ namespace android { class AudioMix; class AudioPolicyMix; class AudioPolicyClientInterface; // descriptor for audio inputs. Used to maintain current configuration of each opened audio input Loading @@ -53,7 +53,7 @@ public: void dump(String8 *dst) const override; audio_io_handle_t mIoHandle = AUDIO_IO_HANDLE_NONE; // input handle AudioMix *mPolicyMix = nullptr; // non NULL when used by a dynamic policy wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy const sp<IOProfile> mProfile; // I/O profile this output derives from virtual void toAudioPortConfig(struct audio_port_config *dstConfig, Loading services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h +2 −2 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace android { class IOProfile; class AudioMix; class AudioPolicyMix; class AudioPolicyClientInterface; class ActivityTracking Loading Loading @@ -281,7 +281,7 @@ public: } DeviceVector mDevices; /**< current devices this output is routed to */ AudioMix *mPolicyMix = nullptr; // non NULL when used by a dynamic policy wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy protected: const sp<AudioPort> mPort; Loading services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +10 −17 Original line number Diff line number Diff line Loading @@ -31,24 +31,19 @@ namespace android { /** * custom mix entry in mPolicyMixes */ class AudioPolicyMix : public RefBase { class AudioPolicyMix : public AudioMix, public RefBase { public: AudioPolicyMix() {} AudioPolicyMix(const AudioMix &mix) : AudioMix(mix) {} AudioPolicyMix(const AudioPolicyMix&) = delete; AudioPolicyMix& operator=(const AudioPolicyMix&) = delete; const sp<SwAudioOutputDescriptor> &getOutput() const; void setOutput(sp<SwAudioOutputDescriptor> &output); void clearOutput(); android::AudioMix *getMix(); void setMix(const AudioMix &mix); const sp<SwAudioOutputDescriptor> &getOutput() const { return mOutput; } void setOutput(const sp<SwAudioOutputDescriptor> &output) { mOutput = output; } void clearOutput() { mOutput.clear(); } void dump(String8 *dst, int spaces, int index) const; private: AudioMix mMix; // Audio policy mix descriptor sp<SwAudioOutputDescriptor> mOutput; // Corresponding output stream }; Loading Loading @@ -77,21 +72,19 @@ public: sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, AudioMix **policyMix) const; sp<AudioPolicyMix> *policyMix) const; /** * @brief try to find a matching mix for a given output descriptor and returns the associated * output device. * @param output to be considered * @param availableOutputDevices list of output devices currently reachable * @param policyMix to be returned if any mix matching ouput descriptor * @return device selected from the mix attached to the output, null pointer otherwise */ sp<DeviceDescriptor> getDeviceAndMixForOutput(const sp<SwAudioOutputDescriptor> &output, const DeviceVector &availableOutputDevices, AudioMix **policyMix = nullptr); const DeviceVector &availableOutputDevices); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix); status_t getInputMixForAttr(audio_attributes_t attr, sp<AudioPolicyMix> *policyMix); status_t setUidDeviceAffinities(uid_t uid, const Vector<AudioDeviceTypeAddr>& devices); status_t removeUidDeviceAffinities(uid_t uid); Loading services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <AudioPolicyInterface.h> #include "AudioInputDescriptor.h" #include "AudioGain.h" #include "AudioPolicyMix.h" #include "HwModule.h" namespace android { Loading Loading @@ -308,16 +309,17 @@ void AudioInputDescriptor::setClientActive(const sp<RecordClientDescriptor>& cli const int delta = active ? 1 : -1; mGlobalActiveCount += delta; sp<AudioPolicyMix> policyMix = mPolicyMix.promote(); if ((oldGlobalActiveCount == 0) && (mGlobalActiveCount > 0)) { if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, MIX_STATE_MIXING); } } else if ((oldGlobalActiveCount > 0) && (mGlobalActiveCount == 0)) { if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, MIX_STATE_IDLE); } } Loading services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <AudioPolicyInterface.h> #include "AudioOutputDescriptor.h" #include "AudioPolicyMix.h" #include "IOProfile.h" #include "AudioGain.h" #include "Volume.h" Loading Loading @@ -111,9 +112,10 @@ void AudioOutputDescriptor::setClientActive(const sp<TrackClientDescriptor>& cli } mGlobalActiveCount += delta; if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { sp<AudioPolicyMix> policyMix = mPolicyMix.promote(); if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { if ((oldGlobalActiveCount == 0) || (mGlobalActiveCount == 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, mGlobalActiveCount > 0 ? MIX_STATE_MIXING : MIX_STATE_IDLE); } } Loading Loading
services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h +2 −2 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ namespace android { class AudioMix; class AudioPolicyMix; class AudioPolicyClientInterface; // descriptor for audio inputs. Used to maintain current configuration of each opened audio input Loading @@ -53,7 +53,7 @@ public: void dump(String8 *dst) const override; audio_io_handle_t mIoHandle = AUDIO_IO_HANDLE_NONE; // input handle AudioMix *mPolicyMix = nullptr; // non NULL when used by a dynamic policy wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy const sp<IOProfile> mProfile; // I/O profile this output derives from virtual void toAudioPortConfig(struct audio_port_config *dstConfig, Loading
services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h +2 −2 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace android { class IOProfile; class AudioMix; class AudioPolicyMix; class AudioPolicyClientInterface; class ActivityTracking Loading Loading @@ -281,7 +281,7 @@ public: } DeviceVector mDevices; /**< current devices this output is routed to */ AudioMix *mPolicyMix = nullptr; // non NULL when used by a dynamic policy wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy protected: const sp<AudioPort> mPort; Loading
services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +10 −17 Original line number Diff line number Diff line Loading @@ -31,24 +31,19 @@ namespace android { /** * custom mix entry in mPolicyMixes */ class AudioPolicyMix : public RefBase { class AudioPolicyMix : public AudioMix, public RefBase { public: AudioPolicyMix() {} AudioPolicyMix(const AudioMix &mix) : AudioMix(mix) {} AudioPolicyMix(const AudioPolicyMix&) = delete; AudioPolicyMix& operator=(const AudioPolicyMix&) = delete; const sp<SwAudioOutputDescriptor> &getOutput() const; void setOutput(sp<SwAudioOutputDescriptor> &output); void clearOutput(); android::AudioMix *getMix(); void setMix(const AudioMix &mix); const sp<SwAudioOutputDescriptor> &getOutput() const { return mOutput; } void setOutput(const sp<SwAudioOutputDescriptor> &output) { mOutput = output; } void clearOutput() { mOutput.clear(); } void dump(String8 *dst, int spaces, int index) const; private: AudioMix mMix; // Audio policy mix descriptor sp<SwAudioOutputDescriptor> mOutput; // Corresponding output stream }; Loading Loading @@ -77,21 +72,19 @@ public: sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, AudioMix **policyMix) const; sp<AudioPolicyMix> *policyMix) const; /** * @brief try to find a matching mix for a given output descriptor and returns the associated * output device. * @param output to be considered * @param availableOutputDevices list of output devices currently reachable * @param policyMix to be returned if any mix matching ouput descriptor * @return device selected from the mix attached to the output, null pointer otherwise */ sp<DeviceDescriptor> getDeviceAndMixForOutput(const sp<SwAudioOutputDescriptor> &output, const DeviceVector &availableOutputDevices, AudioMix **policyMix = nullptr); const DeviceVector &availableOutputDevices); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix); status_t getInputMixForAttr(audio_attributes_t attr, sp<AudioPolicyMix> *policyMix); status_t setUidDeviceAffinities(uid_t uid, const Vector<AudioDeviceTypeAddr>& devices); status_t removeUidDeviceAffinities(uid_t uid); Loading
services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp +6 −4 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <AudioPolicyInterface.h> #include "AudioInputDescriptor.h" #include "AudioGain.h" #include "AudioPolicyMix.h" #include "HwModule.h" namespace android { Loading Loading @@ -308,16 +309,17 @@ void AudioInputDescriptor::setClientActive(const sp<RecordClientDescriptor>& cli const int delta = active ? 1 : -1; mGlobalActiveCount += delta; sp<AudioPolicyMix> policyMix = mPolicyMix.promote(); if ((oldGlobalActiveCount == 0) && (mGlobalActiveCount > 0)) { if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, MIX_STATE_MIXING); } } else if ((oldGlobalActiveCount > 0) && (mGlobalActiveCount == 0)) { if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, MIX_STATE_IDLE); } } Loading
services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <AudioPolicyInterface.h> #include "AudioOutputDescriptor.h" #include "AudioPolicyMix.h" #include "IOProfile.h" #include "AudioGain.h" #include "Volume.h" Loading Loading @@ -111,9 +112,10 @@ void AudioOutputDescriptor::setClientActive(const sp<TrackClientDescriptor>& cli } mGlobalActiveCount += delta; if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { sp<AudioPolicyMix> policyMix = mPolicyMix.promote(); if ((policyMix != NULL) && ((policyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0)) { if ((oldGlobalActiveCount == 0) || (mGlobalActiveCount == 0)) { mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress, mClientInterface->onDynamicPolicyMixStateUpdate(policyMix->mDeviceAddress, mGlobalActiveCount > 0 ? MIX_STATE_MIXING : MIX_STATE_IDLE); } } Loading