diff options
| author | 2021-09-17 11:27:19 +0200 | |
|---|---|---|
| committer | 2021-09-21 15:12:03 +0200 | |
| commit | d709886eaf0b469b4a53fca095d0b698f30dca07 (patch) | |
| tree | 3d694cc009e35d6c3197e67678b7f0d7299f72db | |
| parent | 57f7ff4c0b72e7acb9f7f3e78c1fd0f6f79c2eeb (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.java | 24 |
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) { |