Merge "SpatializerHelper: head tracking init / dump"

This commit is contained in:
TreeHugger Robot
2022-01-18 02:26:01 +00:00
committed by Android (Google) Code Review
3 changed files with 49 additions and 4 deletions

View File

@@ -214,6 +214,29 @@ public class Spatializer {
@RequiresPermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
public static final int HEAD_TRACKING_MODE_RELATIVE_DEVICE = 2;
/**
* @hide
* Head tracking mode to string conversion
* @param mode a valid head tracking mode
* @return a string containing the matching constant name
*/
public static final String headtrackingModeToString(int mode) {
switch(mode) {
case HEAD_TRACKING_MODE_UNSUPPORTED:
return "HEAD_TRACKING_MODE_UNSUPPORTED";
case HEAD_TRACKING_MODE_DISABLED:
return "HEAD_TRACKING_MODE_DISABLED";
case HEAD_TRACKING_MODE_OTHER:
return "HEAD_TRACKING_MODE_OTHER";
case HEAD_TRACKING_MODE_RELATIVE_WORLD:
return "HEAD_TRACKING_MODE_RELATIVE_WORLD";
case HEAD_TRACKING_MODE_RELATIVE_DEVICE:
return "HEAD_TRACKING_MODE_RELATIVE_DEVICE";
default:
return "head tracking mode unknown " + mode;
}
}
/**
* Return the level of support for the spatialization feature on this device.
* This level of support is independent of whether the {@code Spatializer} is currently

View File

@@ -9408,6 +9408,7 @@ public class AudioService extends IAudioService.Stub
pw.println("mHasSpatializerEffect:" + mHasSpatializerEffect);
pw.println("isSpatializerEnabled:" + isSpatializerEnabled());
pw.println("isSpatialAudioEnabled:" + isSpatialAudioEnabled());
mSpatializerHelper.dump(pw);
mAudioSystem.dump(pw);
}

View File

@@ -39,6 +39,7 @@ import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -84,7 +85,7 @@ public class SpatializerHelper {
private int mSpatLevel = Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
private int mCapableSpatLevel = Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
private int mActualHeadTrackingMode = Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED;
private int mDesiredHeadTrackingMode = Spatializer.HEAD_TRACKING_MODE_UNSUPPORTED;
private int mDesiredHeadTrackingMode = Spatializer.HEAD_TRACKING_MODE_RELATIVE_WORLD;
private int mSpatOutput = 0;
private @Nullable ISpatializer mSpat;
private @Nullable SpatializerCallback mSpatCallback;
@@ -681,12 +682,13 @@ public class SpatializerHelper {
return;
}
try {
if (mode != mDesiredHeadTrackingMode) {
mSpat.setDesiredHeadTrackingMode(spatializerIntToHeadTrackingModeType(mode));
if (mDesiredHeadTrackingMode != mode) {
mDesiredHeadTrackingMode = mode;
dispatchDesiredHeadTrackingMode(mode);
}
if (mode != headTrackingModeTypeToSpatializerInt(mSpat.getActualHeadTrackingMode())) {
mSpat.setDesiredHeadTrackingMode(spatializerIntToHeadTrackingModeType(mode));
}
} catch (RemoteException e) {
Log.e(TAG, "Error calling setDesiredHeadTrackingMode", e);
}
@@ -937,6 +939,7 @@ public class SpatializerHelper {
} catch (Exception e) {
Log.e(TAG, "Error calling setHeadSensor:" + headHandle, e);
}
setDesiredHeadTrackingMode(mDesiredHeadTrackingMode);
}
//------------------------------------------------------
@@ -983,4 +986,22 @@ public class SpatializerHelper {
throw(new IllegalArgumentException("Unexpected spatializer level:" + level));
}
}
void dump(PrintWriter pw) {
pw.println("SpatializerHelper:");
pw.println("\tmState:" + mState);
pw.println("\tmSpatLevel:" + mSpatLevel);
pw.println("\tmCapableSpatLevel:" + mCapableSpatLevel);
pw.println("\tmActualHeadTrackingMode:"
+ Spatializer.headtrackingModeToString(mActualHeadTrackingMode));
pw.println("\tmDesiredHeadTrackingMode:"
+ Spatializer.headtrackingModeToString(mDesiredHeadTrackingMode));
String modesString = "";
int[] modes = getSupportedHeadTrackingModes();
for (int mode : modes) {
modesString += Spatializer.headtrackingModeToString(mode) + " ";
}
pw.println("\tsupported head tracking modes:" + modesString);
pw.println("\tmSpatOutput:" + mSpatOutput);
}
}