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

This commit is contained in:
Eric Laurent
2022-04-06 07:29:23 +00:00
committed by Android (Google) Code Review

View File

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