summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-11-01 07:59:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-01 07:59:37 +0000
commit11e9c08fe2698b642535050b1784f3bc3cf28323 (patch)
tree305b6867c5e2187e9086b0d80c51f201fe9bf8ec
parentbda78423fa79fefe858e1878a8121821a4adc5a9 (diff)
parentddea818ed71894d76d424c2399295046d7e28603 (diff)
Merge "Add audio device type MULTICHANNEL_GROUP" into main
-rw-r--r--core/api/current.txt1
-rw-r--r--media/java/android/media/AudioDeviceInfo.java33
-rw-r--r--media/java/android/media/AudioManager.java5
-rw-r--r--media/java/android/media/AudioSystem.java7
4 files changed, 44 insertions, 2 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 58228e18d187..143d02b02144 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -21399,6 +21399,7 @@ package android.media {
field public static final int TYPE_IP = 20; // 0x14
field public static final int TYPE_LINE_ANALOG = 5; // 0x5
field public static final int TYPE_LINE_DIGITAL = 6; // 0x6
+ field @FlaggedApi("android.media.audio.enable_multichannel_group_device") public static final int TYPE_MULTICHANNEL_GROUP = 32; // 0x20
field public static final int TYPE_REMOTE_SUBMIX = 25; // 0x19
field public static final int TYPE_TELEPHONY = 18; // 0x12
field public static final int TYPE_TV_TUNER = 17; // 0x11
diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java
index 39b29d0156d2..2da8eecedc4d 100644
--- a/media/java/android/media/AudioDeviceInfo.java
+++ b/media/java/android/media/AudioDeviceInfo.java
@@ -16,11 +16,15 @@
package android.media;
+import static android.media.audio.Flags.FLAG_ENABLE_MULTICHANNEL_GROUP_DEVICE;
+
import android.Manifest;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.TestApi;
+import android.media.audio.Flags;
import android.util.SparseIntArray;
import com.android.internal.annotations.VisibleForTesting;
@@ -192,6 +196,15 @@ public final class AudioDeviceInfo {
*/
public static final int TYPE_DOCK_ANALOG = 31;
+ /**
+ * A device type describing a speaker group that supports multichannel contents. The speakers in
+ * the group are connected together using local network based protocols. The speaker group
+ * requires additional input of the physical positions of each individual speaker to provide a
+ * better experience on multichannel contents.
+ */
+ @FlaggedApi(FLAG_ENABLE_MULTICHANNEL_GROUP_DEVICE)
+ public static final int TYPE_MULTICHANNEL_GROUP = 32;
+
/** @hide */
@IntDef(flag = false, prefix = "TYPE", value = {
TYPE_BUILTIN_EARPIECE,
@@ -224,7 +237,8 @@ public final class AudioDeviceInfo {
TYPE_BLE_SPEAKER,
TYPE_ECHO_REFERENCE,
TYPE_BLE_BROADCAST,
- TYPE_DOCK_ANALOG}
+ TYPE_DOCK_ANALOG,
+ TYPE_MULTICHANNEL_GROUP}
)
@Retention(RetentionPolicy.SOURCE)
public @interface AudioDeviceType {}
@@ -285,7 +299,8 @@ public final class AudioDeviceInfo {
TYPE_BLE_HEADSET,
TYPE_BLE_SPEAKER,
TYPE_BLE_BROADCAST,
- TYPE_DOCK_ANALOG}
+ TYPE_DOCK_ANALOG,
+ TYPE_MULTICHANNEL_GROUP}
)
@Retention(RetentionPolicy.SOURCE)
public @interface AudioDeviceTypeOut {}
@@ -321,7 +336,13 @@ public final class AudioDeviceInfo {
case TYPE_BLE_BROADCAST:
case TYPE_DOCK_ANALOG:
return true;
+
default:
+ if (Flags.enableMultichannelGroupDevice()) {
+ if (type == TYPE_MULTICHANNEL_GROUP) {
+ return true;
+ }
+ }
return false;
}
}
@@ -665,6 +686,10 @@ public final class AudioDeviceInfo {
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_HEADSET, TYPE_BLE_HEADSET);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_SPEAKER, TYPE_BLE_SPEAKER);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_BLE_BROADCAST, TYPE_BLE_BROADCAST);
+ if (Flags.enableMultichannelGroupDevice()) {
+ INT_TO_EXT_DEVICE_MAPPING.put(
+ AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP, TYPE_MULTICHANNEL_GROUP);
+ }
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BUILTIN_MIC, TYPE_BUILTIN_MIC);
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BLUETOOTH_SCO_HEADSET, TYPE_BLUETOOTH_SCO);
@@ -721,6 +746,10 @@ public final class AudioDeviceInfo {
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_HEADSET, AudioSystem.DEVICE_OUT_BLE_HEADSET);
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_SPEAKER, AudioSystem.DEVICE_OUT_BLE_SPEAKER);
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLE_BROADCAST, AudioSystem.DEVICE_OUT_BLE_BROADCAST);
+ if (Flags.enableMultichannelGroupDevice()) {
+ EXT_TO_INT_DEVICE_MAPPING.put(
+ TYPE_MULTICHANNEL_GROUP, AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP);
+ }
// privileges mapping to input device
EXT_TO_INT_INPUT_DEVICE_MAPPING = new SparseIntArray();
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 8250a536552e..dfe291605522 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -6156,6 +6156,11 @@ public class AudioManager {
*/
public static final int DEVICE_OUT_BLE_BROADCAST = AudioSystem.DEVICE_OUT_BLE_BROADCAST;
/** @hide
+ * The audio output device code for a wireless speaker group supporting multichannel content.
+ */
+ public static final int DEVICE_OUT_MULTICHANNEL_GROUP =
+ AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP;
+ /** @hide
* This is not used as a returned value from {@link #getDevicesForStream}, but could be
* used in the future in a set method to select whatever default device is chosen by the
* platform-specific implementation.
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index bf09cb07a8ed..0ab94f567506 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -1066,6 +1066,8 @@ public class AudioSystem
/** @hide */
public static final int DEVICE_OUT_IP = 0x800000;
/** @hide */
+ public static final int DEVICE_OUT_MULTICHANNEL_GROUP = 0x800001;
+ /** @hide */
public static final int DEVICE_OUT_BUS = 0x1000000;
/** @hide */
public static final int DEVICE_OUT_PROXY = 0x2000000;
@@ -1134,6 +1136,7 @@ public class AudioSystem
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_AUX_LINE);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_SPEAKER_SAFE);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_IP);
+ DEVICE_OUT_ALL_SET.add(DEVICE_OUT_MULTICHANNEL_GROUP);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_BUS);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_PROXY);
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_USB_HEADSET);
@@ -1422,6 +1425,8 @@ public class AudioSystem
/** @hide */ public static final String DEVICE_OUT_AUX_LINE_NAME = "aux_line";
/** @hide */ public static final String DEVICE_OUT_SPEAKER_SAFE_NAME = "speaker_safe";
/** @hide */ public static final String DEVICE_OUT_IP_NAME = "ip";
+ /** @hide */
+ public static final String DEVICE_OUT_MULTICHANNEL_GROUP_NAME = "multichannel_group";
/** @hide */ public static final String DEVICE_OUT_BUS_NAME = "bus";
/** @hide */ public static final String DEVICE_OUT_PROXY_NAME = "proxy";
/** @hide */ public static final String DEVICE_OUT_USB_HEADSET_NAME = "usb_headset";
@@ -1515,6 +1520,8 @@ public class AudioSystem
return DEVICE_OUT_SPEAKER_SAFE_NAME;
case DEVICE_OUT_IP:
return DEVICE_OUT_IP_NAME;
+ case DEVICE_OUT_MULTICHANNEL_GROUP:
+ return DEVICE_OUT_MULTICHANNEL_GROUP_NAME;
case DEVICE_OUT_BUS:
return DEVICE_OUT_BUS_NAME;
case DEVICE_OUT_PROXY: