Loading services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h +4 −0 Original line number Diff line number Diff line Loading @@ -307,6 +307,8 @@ public: DeviceVector mDevices; /**< current devices this output is routed to */ wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy virtual uint32_t getRecommendedMuteDurationMs() const { return 0; } protected: const sp<PolicyAudioPort> mPolicyAudioPort; AudioPolicyClientInterface * const mClientInterface; Loading Loading @@ -415,6 +417,8 @@ public: */ DeviceVector filterSupportedDevices(const DeviceVector &devices) const; uint32_t getRecommendedMuteDurationMs() const override; const sp<IOProfile> mProfile; // I/O profile this output derives from audio_io_handle_t mIoHandle; // output handle uint32_t mLatency; // Loading services/audiopolicy/common/managerdefinitions/include/IOProfile.h +2 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,8 @@ public: // Number of streams currently active for this profile. This is not the number of active clients // (AudioTrack or AudioRecord) but the number of active HAL streams. uint32_t curActiveCount; // Mute duration while changing device on this output profile. uint32_t recommendedMuteDurationMs = 0; private: DeviceVector mSupportedDevices; // supported devices: this input/output can be routed from/to Loading services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -670,6 +670,15 @@ status_t SwAudioOutputDescriptor::openDuplicating(const sp<SwAudioOutputDescript return NO_ERROR; } uint32_t SwAudioOutputDescriptor::getRecommendedMuteDurationMs() const { if (isDuplicated()) { return std::max(mOutput1->getRecommendedMuteDurationMs(), mOutput2->getRecommendedMuteDurationMs()); } return mProfile->recommendedMuteDurationMs; } // HwAudioOutputDescriptor implementation HwAudioOutputDescriptor::HwAudioOutputDescriptor(const sp<SourceClientDescriptor>& source, AudioPolicyClientInterface *clientInterface) Loading services/audiopolicy/common/managerdefinitions/src/IOProfile.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ void IOProfile::dump(String8 *dst) const maxOpenCount, curOpenCount); dst->appendFormat(" - maxActiveCount: %u - curActiveCount: %u\n", maxActiveCount, curActiveCount); dst->appendFormat(" - recommendedMuteDurationMs: %u ms\n", recommendedMuteDurationMs); } void IOProfile::log() Loading services/audiopolicy/common/managerdefinitions/src/Serializer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ struct MixPortTraits : public AndroidCollectionTraits<IOProfile, IOProfileCollec static constexpr const char *flags = "flags"; static constexpr const char *maxOpenCount = "maxOpenCount"; static constexpr const char *maxActiveCount = "maxActiveCount"; static constexpr const char *recommendedMuteDurationMs = "recommendedMuteDurationMs"; }; // Children: GainTraits Loading Loading @@ -496,6 +497,13 @@ std::variant<status_t, MixPortTraits::Element> PolicySerializer::deserialize<Mix if (!maxActiveCount.empty()) { convertTo(maxActiveCount, mixPort->maxActiveCount); } std::string recommendedmuteDurationMsLiteral = getXmlAttribute(child, Attributes::recommendedMuteDurationMs); if (!recommendedmuteDurationMsLiteral.empty()) { convertTo(recommendedmuteDurationMsLiteral, mixPort->recommendedMuteDurationMs); } // Deserialize children AudioGainTraits::Collection gains; status = deserializeCollection<AudioGainTraits>(child, &gains, NULL); Loading Loading
services/audiopolicy/common/managerdefinitions/include/AudioOutputDescriptor.h +4 −0 Original line number Diff line number Diff line Loading @@ -307,6 +307,8 @@ public: DeviceVector mDevices; /**< current devices this output is routed to */ wp<AudioPolicyMix> mPolicyMix; // non NULL when used by a dynamic policy virtual uint32_t getRecommendedMuteDurationMs() const { return 0; } protected: const sp<PolicyAudioPort> mPolicyAudioPort; AudioPolicyClientInterface * const mClientInterface; Loading Loading @@ -415,6 +417,8 @@ public: */ DeviceVector filterSupportedDevices(const DeviceVector &devices) const; uint32_t getRecommendedMuteDurationMs() const override; const sp<IOProfile> mProfile; // I/O profile this output derives from audio_io_handle_t mIoHandle; // output handle uint32_t mLatency; // Loading
services/audiopolicy/common/managerdefinitions/include/IOProfile.h +2 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,8 @@ public: // Number of streams currently active for this profile. This is not the number of active clients // (AudioTrack or AudioRecord) but the number of active HAL streams. uint32_t curActiveCount; // Mute duration while changing device on this output profile. uint32_t recommendedMuteDurationMs = 0; private: DeviceVector mSupportedDevices; // supported devices: this input/output can be routed from/to Loading
services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -670,6 +670,15 @@ status_t SwAudioOutputDescriptor::openDuplicating(const sp<SwAudioOutputDescript return NO_ERROR; } uint32_t SwAudioOutputDescriptor::getRecommendedMuteDurationMs() const { if (isDuplicated()) { return std::max(mOutput1->getRecommendedMuteDurationMs(), mOutput2->getRecommendedMuteDurationMs()); } return mProfile->recommendedMuteDurationMs; } // HwAudioOutputDescriptor implementation HwAudioOutputDescriptor::HwAudioOutputDescriptor(const sp<SourceClientDescriptor>& source, AudioPolicyClientInterface *clientInterface) Loading
services/audiopolicy/common/managerdefinitions/src/IOProfile.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ void IOProfile::dump(String8 *dst) const maxOpenCount, curOpenCount); dst->appendFormat(" - maxActiveCount: %u - curActiveCount: %u\n", maxActiveCount, curActiveCount); dst->appendFormat(" - recommendedMuteDurationMs: %u ms\n", recommendedMuteDurationMs); } void IOProfile::log() Loading
services/audiopolicy/common/managerdefinitions/src/Serializer.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ struct MixPortTraits : public AndroidCollectionTraits<IOProfile, IOProfileCollec static constexpr const char *flags = "flags"; static constexpr const char *maxOpenCount = "maxOpenCount"; static constexpr const char *maxActiveCount = "maxActiveCount"; static constexpr const char *recommendedMuteDurationMs = "recommendedMuteDurationMs"; }; // Children: GainTraits Loading Loading @@ -496,6 +497,13 @@ std::variant<status_t, MixPortTraits::Element> PolicySerializer::deserialize<Mix if (!maxActiveCount.empty()) { convertTo(maxActiveCount, mixPort->maxActiveCount); } std::string recommendedmuteDurationMsLiteral = getXmlAttribute(child, Attributes::recommendedMuteDurationMs); if (!recommendedmuteDurationMsLiteral.empty()) { convertTo(recommendedmuteDurationMsLiteral, mixPort->recommendedMuteDurationMs); } // Deserialize children AudioGainTraits::Collection gains; status = deserializeCollection<AudioGainTraits>(child, &gains, NULL); Loading