Loading services/core/java/com/android/server/audio/SpatializerHelper.java +25 −14 Original line number Diff line number Diff line Loading @@ -540,7 +540,7 @@ public class SpatializerHelper { return; } loglogi("addCompatibleAudioDevice: dev=" + ada); final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); initSAState(deviceState); AdiDeviceState updatedDevice = null; // non-null on update. if (deviceState != null) { Loading Loading @@ -610,7 +610,7 @@ public class SpatializerHelper { synchronized void removeCompatibleAudioDevice(@NonNull AudioDeviceAttributes ada) { loglogi("removeCompatibleAudioDevice: dev=" + ada); final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState != null && deviceState.isSAEnabled()) { deviceState.setSAEnabled(false); onRoutingUpdated(); Loading @@ -637,14 +637,25 @@ public class SpatializerHelper { } /** * Returns the Spatial Audio device state for an audio device attributes * or null if it does not exist. * Returns the audio device state for the audio device attributes in case * spatial audio is supported or null otherwise. */ @GuardedBy("this") @Nullable private AdiDeviceState findDeviceStateForAudioDeviceAttributes(AudioDeviceAttributes ada) { return mDeviceBroker.findDeviceStateForAudioDeviceAttributes(ada, private AdiDeviceState findSACompatibleDeviceStateForAudioDeviceAttributes( AudioDeviceAttributes ada) { final AdiDeviceState deviceState = mDeviceBroker.findDeviceStateForAudioDeviceAttributes(ada, getCanonicalDeviceType(ada.getType(), ada.getInternalType())); if (deviceState == null) { return null; } if (!isSADevice(deviceState)) { return null; } return deviceState; } /** Loading @@ -666,7 +677,7 @@ public class SpatializerHelper { Log.e(TAG, "no spatialization mode found for device type:" + deviceType); return new Pair<>(false, false); } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState == null) { // no matching device state? Log.i(TAG, "no spatialization device state found for Spatial Audio device:" + ada); Loading @@ -680,7 +691,7 @@ public class SpatializerHelper { if (!isDeviceCompatibleWithSpatializationModes(ada)) { return; } if (findDeviceStateForAudioDeviceAttributes(ada) == null) { if (findSACompatibleDeviceStateForAudioDeviceAttributes(ada) == null) { // wireless device types should be canonical, but we translate to be sure. final int canonicalDeviceType = getCanonicalDeviceType(ada.getType(), ada.getInternalType()); Loading Loading @@ -734,7 +745,7 @@ public class SpatializerHelper { if (ada.getRole() != AudioDeviceAttributes.ROLE_OUTPUT) { return false; } return findDeviceStateForAudioDeviceAttributes(ada) != null; return findSACompatibleDeviceStateForAudioDeviceAttributes(ada) != null; } private synchronized boolean canBeSpatializedOnDevice(@NonNull AudioAttributes attributes, Loading Loading @@ -1150,7 +1161,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, ignoring setHeadTrackerEnabled to " + enabled + " for " + ada); } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState == null) return; if (!deviceState.hasHeadTracker()) { Log.e(TAG, "Called setHeadTrackerEnabled enabled:" + enabled Loading Loading @@ -1183,7 +1194,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, hasHeadTracker always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); return deviceState != null && deviceState.hasHeadTracker(); } Loading @@ -1197,7 +1208,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, setHasHeadTracker always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState != null) { if (!deviceState.hasHeadTracker()) { deviceState.setHasHeadTracker(true); Loading @@ -1215,7 +1226,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, isHeadTrackerEnabled always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); return deviceState != null && deviceState.hasHeadTracker() && deviceState.isHeadTrackerEnabled(); } Loading Loading
services/core/java/com/android/server/audio/SpatializerHelper.java +25 −14 Original line number Diff line number Diff line Loading @@ -540,7 +540,7 @@ public class SpatializerHelper { return; } loglogi("addCompatibleAudioDevice: dev=" + ada); final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); initSAState(deviceState); AdiDeviceState updatedDevice = null; // non-null on update. if (deviceState != null) { Loading Loading @@ -610,7 +610,7 @@ public class SpatializerHelper { synchronized void removeCompatibleAudioDevice(@NonNull AudioDeviceAttributes ada) { loglogi("removeCompatibleAudioDevice: dev=" + ada); final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState != null && deviceState.isSAEnabled()) { deviceState.setSAEnabled(false); onRoutingUpdated(); Loading @@ -637,14 +637,25 @@ public class SpatializerHelper { } /** * Returns the Spatial Audio device state for an audio device attributes * or null if it does not exist. * Returns the audio device state for the audio device attributes in case * spatial audio is supported or null otherwise. */ @GuardedBy("this") @Nullable private AdiDeviceState findDeviceStateForAudioDeviceAttributes(AudioDeviceAttributes ada) { return mDeviceBroker.findDeviceStateForAudioDeviceAttributes(ada, private AdiDeviceState findSACompatibleDeviceStateForAudioDeviceAttributes( AudioDeviceAttributes ada) { final AdiDeviceState deviceState = mDeviceBroker.findDeviceStateForAudioDeviceAttributes(ada, getCanonicalDeviceType(ada.getType(), ada.getInternalType())); if (deviceState == null) { return null; } if (!isSADevice(deviceState)) { return null; } return deviceState; } /** Loading @@ -666,7 +677,7 @@ public class SpatializerHelper { Log.e(TAG, "no spatialization mode found for device type:" + deviceType); return new Pair<>(false, false); } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState == null) { // no matching device state? Log.i(TAG, "no spatialization device state found for Spatial Audio device:" + ada); Loading @@ -680,7 +691,7 @@ public class SpatializerHelper { if (!isDeviceCompatibleWithSpatializationModes(ada)) { return; } if (findDeviceStateForAudioDeviceAttributes(ada) == null) { if (findSACompatibleDeviceStateForAudioDeviceAttributes(ada) == null) { // wireless device types should be canonical, but we translate to be sure. final int canonicalDeviceType = getCanonicalDeviceType(ada.getType(), ada.getInternalType()); Loading Loading @@ -734,7 +745,7 @@ public class SpatializerHelper { if (ada.getRole() != AudioDeviceAttributes.ROLE_OUTPUT) { return false; } return findDeviceStateForAudioDeviceAttributes(ada) != null; return findSACompatibleDeviceStateForAudioDeviceAttributes(ada) != null; } private synchronized boolean canBeSpatializedOnDevice(@NonNull AudioAttributes attributes, Loading Loading @@ -1150,7 +1161,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, ignoring setHeadTrackerEnabled to " + enabled + " for " + ada); } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState == null) return; if (!deviceState.hasHeadTracker()) { Log.e(TAG, "Called setHeadTrackerEnabled enabled:" + enabled Loading Loading @@ -1183,7 +1194,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, hasHeadTracker always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); return deviceState != null && deviceState.hasHeadTracker(); } Loading @@ -1197,7 +1208,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, setHasHeadTracker always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); if (deviceState != null) { if (!deviceState.hasHeadTracker()) { deviceState.setHasHeadTracker(true); Loading @@ -1215,7 +1226,7 @@ public class SpatializerHelper { Log.v(TAG, "no headtracking support, isHeadTrackerEnabled always false for " + ada); return false; } final AdiDeviceState deviceState = findDeviceStateForAudioDeviceAttributes(ada); final AdiDeviceState deviceState = findSACompatibleDeviceStateForAudioDeviceAttributes(ada); return deviceState != null && deviceState.hasHeadTracker() && deviceState.isHeadTrackerEnabled(); } Loading