Loading services/audiopolicy/managerdefault/AudioPolicyManager.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -4382,14 +4382,23 @@ void AudioPolicyManager::checkOutputForStrategy(routing_strategy strategy) } if (!vectorsEqual(srcOutputs,dstOutputs)) { // get maximum latency of all source outputs to determine the minimum mute time guaranteeing // audio from invalidated tracks will be rendered when unmuting uint32_t maxLatency = 0; for (audio_io_handle_t srcOut : srcOutputs) { sp<SwAudioOutputDescriptor> desc = mPreviousOutputs.valueFor(srcOut); if (desc != 0 && maxLatency < desc->latency()) { maxLatency = desc->latency(); } } ALOGV("checkOutputForStrategy() strategy %d, moving from output %d to output %d", strategy, srcOutputs[0], dstOutputs[0]); // mute strategy while moving tracks from one output to another for (audio_io_handle_t srcOut : srcOutputs) { sp<SwAudioOutputDescriptor> desc = mOutputs.valueFor(srcOut); if (isStrategyActive(desc, strategy)) { sp<SwAudioOutputDescriptor> desc = mPreviousOutputs.valueFor(srcOut); if (desc != 0 && isStrategyActive(desc, strategy)) { setStrategyMute(strategy, true, desc); setStrategyMute(strategy, false, desc, MUTE_TIME_MS, newDevice); setStrategyMute(strategy, false, desc, maxLatency * LATENCY_MUTE_FACTOR, newDevice); } sp<AudioSourceDescriptor> source = getSourceForStrategyOnOutput(srcOut, strategy); Loading services/audiopolicy/managerdefault/AudioPolicyManager.h +4 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,10 @@ namespace android { // is switched #define MUTE_TIME_MS 2000 // multiplication factor applied to output latency when calculating a safe mute delay when // invalidating tracks #define LATENCY_MUTE_FACTOR 4 #define NUM_TEST_OUTPUTS 5 #define NUM_VOL_CURVE_KNEES 2 Loading Loading
services/audiopolicy/managerdefault/AudioPolicyManager.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -4382,14 +4382,23 @@ void AudioPolicyManager::checkOutputForStrategy(routing_strategy strategy) } if (!vectorsEqual(srcOutputs,dstOutputs)) { // get maximum latency of all source outputs to determine the minimum mute time guaranteeing // audio from invalidated tracks will be rendered when unmuting uint32_t maxLatency = 0; for (audio_io_handle_t srcOut : srcOutputs) { sp<SwAudioOutputDescriptor> desc = mPreviousOutputs.valueFor(srcOut); if (desc != 0 && maxLatency < desc->latency()) { maxLatency = desc->latency(); } } ALOGV("checkOutputForStrategy() strategy %d, moving from output %d to output %d", strategy, srcOutputs[0], dstOutputs[0]); // mute strategy while moving tracks from one output to another for (audio_io_handle_t srcOut : srcOutputs) { sp<SwAudioOutputDescriptor> desc = mOutputs.valueFor(srcOut); if (isStrategyActive(desc, strategy)) { sp<SwAudioOutputDescriptor> desc = mPreviousOutputs.valueFor(srcOut); if (desc != 0 && isStrategyActive(desc, strategy)) { setStrategyMute(strategy, true, desc); setStrategyMute(strategy, false, desc, MUTE_TIME_MS, newDevice); setStrategyMute(strategy, false, desc, maxLatency * LATENCY_MUTE_FACTOR, newDevice); } sp<AudioSourceDescriptor> source = getSourceForStrategyOnOutput(srcOut, strategy); Loading
services/audiopolicy/managerdefault/AudioPolicyManager.h +4 −0 Original line number Diff line number Diff line Loading @@ -67,6 +67,10 @@ namespace android { // is switched #define MUTE_TIME_MS 2000 // multiplication factor applied to output latency when calculating a safe mute delay when // invalidating tracks #define LATENCY_MUTE_FACTOR 4 #define NUM_TEST_OUTPUTS 5 #define NUM_VOL_CURVE_KNEES 2 Loading