summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Laurent <elaurent@google.com> 2021-09-17 11:27:19 +0200
committer Eric Laurent <elaurent@google.com> 2021-09-21 15:12:03 +0200
commitd709886eaf0b469b4a53fca095d0b698f30dca07 (patch)
tree3d694cc009e35d6c3197e67678b7f0d7299f72db
parent57f7ff4c0b72e7acb9f7f3e78c1fd0f6f79c2eeb (diff)
AudioService: SpatializerHelper: native head tracking callback
Migrate native Spatializer callbacks to use new specific head tracking callback. Bug: 188502620 Test: make Change-Id: Ib004153070f44e448f67bd9ac4ed5b5d58bf01d5
-rw-r--r--services/core/java/com/android/server/audio/SpatializerHelper.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java
index 1d8597497a2c..6fd5365be147 100644
--- a/services/core/java/com/android/server/audio/SpatializerHelper.java
+++ b/services/core/java/com/android/server/audio/SpatializerHelper.java
@@ -26,6 +26,7 @@ import android.media.INativeSpatializerCallback;
import android.media.ISpatializer;
import android.media.ISpatializerCallback;
import android.media.ISpatializerHeadToSoundStagePoseCallback;
+import android.media.ISpatializerHeadTrackingCallback;
import android.media.ISpatializerHeadTrackingModeCallback;
import android.media.Spatializer;
import android.media.SpatializerHeadTrackingMode;
@@ -71,6 +72,8 @@ public class SpatializerHelper {
private int mDesiredHeadTrackingMode = Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED;
private @Nullable ISpatializer mSpat;
private @Nullable SpatializerCallback mSpatCallback;
+ private @Nullable SpatializerHeadTrackingCallback mSpatHeadTrackingCallback;
+
// default attributes and format that determine basic availability of spatialization
private static final AudioAttributes DEFAULT_ATTRIBUTES = new AudioAttributes.Builder()
@@ -192,9 +195,13 @@ public class SpatializerHelper {
}
// TODO use reported spat level to change state
}
+ };
+ // spatializer head tracking callback from native
+ private final class SpatializerHeadTrackingCallback
+ extends ISpatializerHeadTrackingCallback.Stub {
public void onHeadTrackingModeChanged(byte mode) {
- logd("SpatializerCallback.onHeadTrackingModeChanged mode:" + mode);
+ logd("SpatializerHeadTrackingCallback.onHeadTrackingModeChanged mode:" + mode);
int oldMode, newMode;
synchronized (this) {
oldMode = mActualHeadTrackingMode;
@@ -208,12 +215,13 @@ public class SpatializerHelper {
public void onHeadToSoundStagePoseUpdated(float[] headToStage) {
if (headToStage == null) {
- Log.e(TAG, "SpatializerCallback.onHeadToStagePoseUpdated null transform");
+ Log.e(TAG, "SpatializerHeadTrackingCallback.onHeadToStagePoseUpdated"
+ + "null transform");
return;
}
if (headToStage.length != 6) {
- Log.e(TAG, "SpatializerCallback.onHeadToStagePoseUpdated invalid transform length"
- + headToStage.length);
+ Log.e(TAG, "SpatializerHeadTrackingCallback.onHeadToStagePoseUpdated"
+ + " invalid transform length" + headToStage.length);
return;
}
if (DEBUG) {
@@ -222,7 +230,7 @@ public class SpatializerHelper {
for (float val : headToStage) {
t.append("[").append(String.format(Locale.ENGLISH, "%.3f", val)).append("]");
}
- logd("SpatializerCallback.onHeadToStagePoseUpdated headToStage:" + t);
+ logd("SpatializerHeadTrackingCallback.onHeadToStagePoseUpdated headToStage:" + t);
}
dispatchPoseUpdate(headToStage);
}
@@ -433,9 +441,14 @@ public class SpatializerHelper {
private void createSpat() {
if (mSpat == null) {
mSpatCallback = new SpatializerCallback();
+ mSpatHeadTrackingCallback = new SpatializerHeadTrackingCallback();
mSpat = AudioSystem.getSpatializer(mSpatCallback);
try {
mSpat.setLevel((byte) Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
+ //TODO: register heatracking callback only when sensors are registered
+ if (mSpat.isHeadTrackingSupported()) {
+ mSpat.registerHeadTrackingCallback(mSpatHeadTrackingCallback);
+ }
} catch (RemoteException e) {
Log.e(TAG, "Can't set spatializer level", e);
mState = STATE_NOT_SUPPORTED;
@@ -451,6 +464,7 @@ public class SpatializerHelper {
if (mSpat != null) {
mSpatCallback = null;
try {
+ mSpat.registerHeadTrackingCallback(null);
mSpat.release();
mSpat = null;
} catch (RemoteException e) {