Merge "spatial audio: fix spatialization level control" into tm-dev am: adc3d87127

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17567821

Change-Id: I3d5b9f3d68a53ba98ef8331ef28db3ad9355c05f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Eric Laurent
2022-04-06 07:45:36 +00:00
committed by Automerger Merge Worker

View File

@@ -327,15 +327,29 @@ public class SpatializerHelper {
setDispatchAvailableState(false);
}
if (able && enabledAvailable.first) {
boolean enabled = able && enabledAvailable.first;
if (enabled) {
loglogi("Enabling Spatial Audio since enabled for media device:"
+ ROUTING_DEVICES[0]);
} else {
loglogi("Disabling Spatial Audio since disabled for media device:"
+ ROUTING_DEVICES[0]);
}
setDispatchFeatureEnabledState(able && enabledAvailable.first,
"onRoutingUpdated");
if (mSpat != null) {
byte level = enabled ? (byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL
: (byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
loglogi("Setting spatialization level to: " + level);
try {
mSpat.setLevel(level);
} catch (RemoteException e) {
Log.e(TAG, "Can't set spatializer level", e);
mState = STATE_NOT_SUPPORTED;
mCapableSpatLevel = Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
enabled = false;
}
}
setDispatchFeatureEnabledState(enabled, "onRoutingUpdated");
if (mDesiredHeadTrackingMode != Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED
&& mDesiredHeadTrackingMode != Spatializer.HEAD_TRACKING_MODE_DISABLED) {
@@ -635,7 +649,6 @@ public class SpatializerHelper {
init(true);
}
setSpatializerEnabledInt(true);
onRoutingUpdated();
} else {
setSpatializerEnabledInt(false);
}
@@ -657,6 +670,7 @@ public class SpatializerHelper {
case STATE_DISABLED_AVAILABLE:
if (enabled) {
createSpat();
onRoutingUpdated();
break;
} else {
// already in disabled state
@@ -823,14 +837,13 @@ public class SpatializerHelper {
mSpatHeadTrackingCallback = new SpatializerHeadTrackingCallback();
mSpat = AudioSystem.getSpatializer(mSpatCallback);
try {
mSpat.setLevel((byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
mIsHeadTrackingSupported = mSpat.isHeadTrackingSupported();
//TODO: register heatracking callback only when sensors are registered
if (mIsHeadTrackingSupported) {
mSpat.registerHeadTrackingCallback(mSpatHeadTrackingCallback);
}
} catch (RemoteException e) {
Log.e(TAG, "Can't set spatializer level", e);
Log.e(TAG, "Can't configure head tracking", e);
mState = STATE_NOT_SUPPORTED;
mCapableSpatLevel = Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
}