diff --git a/services/audio_policy/server/src/service/audio_policy_service.cpp b/services/audio_policy/server/src/service/audio_policy_service.cpp index c193e92704056b251f600ed7c2f5d6ccc8318ce6..5f940bfa9408f1af06344a4971915d953d17fcbd 100644 --- a/services/audio_policy/server/src/service/audio_policy_service.cpp +++ b/services/audio_policy/server/src/service/audio_policy_service.cpp @@ -804,7 +804,11 @@ void AudioPolicyService::OffloadStreamReleaseCheck(uint32_t sessionId) bool AudioPolicyService::CheckActiveOutputDeviceSupportOffload() { - DeviceType dev = GetActiveOutputDevice(); + DeviceType dev = currentActiveDevice_.deviceType_; + if (currentActiveDevice_.networkId_ != LOCAL_NETWORK_ID || dev == DEVICE_TYPE_REMOTE_CAST) { + return false; + } + return dev == DEVICE_TYPE_SPEAKER || (dev == DEVICE_TYPE_BLUETOOTH_A2DP && a2dpOffloadFlag_ == A2DP_OFFLOAD) || (dev == DEVICE_TYPE_USB_HEADSET && !isArmUsbDevice_); } @@ -5944,6 +5948,11 @@ int32_t AudioPolicyService::UnloadOffloadModule() bool AudioPolicyService::CheckStreamMultichannelMode(int64_t activateSessionId, AudioStreamType streamType) { + if (currentActiveDevice_.networkId_ != LOCAL_NETWORK_ID || + currentActiveDevice_.deviceType_ == DEVICE_TYPE_REMOTE_CAST) { + return false; + } + // Multi-channel mode only when the number of channels is greater than 2. int32_t channelCount = GetChannelCount(activateSessionId); if (channelCount < AudioChannel::CHANNEL_3) {