Merge "audio: add device constants for HDMI EARC" into sc-dev
This commit is contained in:
@@ -20235,6 +20235,7 @@ package android.media {
|
||||
field public static final int TYPE_FM_TUNER = 16; // 0x10
|
||||
field public static final int TYPE_HDMI = 9; // 0x9
|
||||
field public static final int TYPE_HDMI_ARC = 10; // 0xa
|
||||
field public static final int TYPE_HDMI_EARC = 29; // 0x1d
|
||||
field public static final int TYPE_HEARING_AID = 23; // 0x17
|
||||
field public static final int TYPE_IP = 20; // 0x14
|
||||
field public static final int TYPE_LINE_ANALOG = 5; // 0x5
|
||||
|
||||
@@ -1379,6 +1379,11 @@ package android.media {
|
||||
method public static int xsdStringToUsage(@NonNull String);
|
||||
}
|
||||
|
||||
public final class AudioDeviceInfo {
|
||||
method public static void enforceValidAudioDeviceTypeIn(int);
|
||||
method public static void enforceValidAudioDeviceTypeOut(int);
|
||||
}
|
||||
|
||||
public final class AudioFocusRequest {
|
||||
method @Nullable public android.media.AudioManager.OnAudioFocusChangeListener getOnAudioFocusChangeListener();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.Manifest;
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.TestApi;
|
||||
import android.util.SparseIntArray;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -172,6 +173,11 @@ public final class AudioDeviceInfo {
|
||||
@RequiresPermission(Manifest.permission.CAPTURE_AUDIO_OUTPUT)
|
||||
public static final int TYPE_ECHO_REFERENCE = 28;
|
||||
|
||||
/**
|
||||
* A device type describing the Enhanced Audio Return Channel of an HDMI connection.
|
||||
*/
|
||||
public static final int TYPE_HDMI_EARC = 29;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(flag = false, prefix = "TYPE", value = {
|
||||
TYPE_BUILTIN_EARPIECE,
|
||||
@@ -188,6 +194,7 @@ public final class AudioDeviceInfo {
|
||||
TYPE_TELEPHONY,
|
||||
TYPE_LINE_ANALOG,
|
||||
TYPE_HDMI_ARC,
|
||||
TYPE_HDMI_EARC,
|
||||
TYPE_LINE_DIGITAL,
|
||||
TYPE_FM,
|
||||
TYPE_AUX_LINE,
|
||||
@@ -197,6 +204,8 @@ public final class AudioDeviceInfo {
|
||||
TYPE_BUILTIN_MIC,
|
||||
TYPE_FM_TUNER,
|
||||
TYPE_TV_TUNER,
|
||||
TYPE_BUILTIN_SPEAKER_SAFE,
|
||||
TYPE_REMOTE_SUBMIX,
|
||||
TYPE_BLE_HEADSET,
|
||||
TYPE_BLE_SPEAKER,
|
||||
TYPE_ECHO_REFERENCE}
|
||||
@@ -222,7 +231,10 @@ public final class AudioDeviceInfo {
|
||||
TYPE_LINE_DIGITAL,
|
||||
TYPE_IP,
|
||||
TYPE_BUS,
|
||||
TYPE_REMOTE_SUBMIX,
|
||||
TYPE_BLE_HEADSET,
|
||||
TYPE_HDMI_ARC,
|
||||
TYPE_HDMI_EARC,
|
||||
TYPE_ECHO_REFERENCE}
|
||||
)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@@ -244,12 +256,14 @@ public final class AudioDeviceInfo {
|
||||
TYPE_TELEPHONY,
|
||||
TYPE_LINE_ANALOG,
|
||||
TYPE_HDMI_ARC,
|
||||
TYPE_HDMI_EARC,
|
||||
TYPE_LINE_DIGITAL,
|
||||
TYPE_FM,
|
||||
TYPE_AUX_LINE,
|
||||
TYPE_IP,
|
||||
TYPE_BUS,
|
||||
TYPE_HEARING_AID,
|
||||
TYPE_BUILTIN_SPEAKER_SAFE,
|
||||
TYPE_BLE_HEADSET,
|
||||
TYPE_BLE_SPEAKER}
|
||||
)
|
||||
@@ -273,6 +287,7 @@ public final class AudioDeviceInfo {
|
||||
case TYPE_TELEPHONY:
|
||||
case TYPE_LINE_ANALOG:
|
||||
case TYPE_HDMI_ARC:
|
||||
case TYPE_HDMI_EARC:
|
||||
case TYPE_LINE_DIGITAL:
|
||||
case TYPE_FM:
|
||||
case TYPE_AUX_LINE:
|
||||
@@ -309,6 +324,8 @@ public final class AudioDeviceInfo {
|
||||
case TYPE_BUS:
|
||||
case TYPE_REMOTE_SUBMIX:
|
||||
case TYPE_BLE_HEADSET:
|
||||
case TYPE_HDMI_ARC:
|
||||
case TYPE_HDMI_EARC:
|
||||
case TYPE_ECHO_REFERENCE:
|
||||
return true;
|
||||
default:
|
||||
@@ -318,9 +335,15 @@ public final class AudioDeviceInfo {
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Throws IAE on an invalid output device type
|
||||
* Enforces whether the audio device type is acceptable for output.
|
||||
*
|
||||
* A vendor implemented output type should modify isValidAudioDeviceTypeOut()
|
||||
* appropriately to accept the new type. Do not remove already acceptable types.
|
||||
*
|
||||
* @throws IllegalArgumentException on an invalid output device type.
|
||||
* @param type
|
||||
*/
|
||||
@TestApi
|
||||
public static void enforceValidAudioDeviceTypeOut(int type) {
|
||||
if (!isValidAudioDeviceTypeOut(type)) {
|
||||
throw new IllegalArgumentException("Illegal output device type " + type);
|
||||
@@ -329,9 +352,15 @@ public final class AudioDeviceInfo {
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Throws IAE on an invalid input device type
|
||||
* Enforces whether the audio device type is acceptable for input.
|
||||
*
|
||||
* A vendor implemented input type should modify isValidAudioDeviceTypeIn()
|
||||
* appropriately to accept the new type. Do not remove already acceptable types.
|
||||
*
|
||||
* @throws IllegalArgumentException on an invalid input device type.
|
||||
* @param type
|
||||
*/
|
||||
@TestApi
|
||||
public static void enforceValidAudioDeviceTypeIn(int type) {
|
||||
if (!isValidAudioDeviceTypeIn(type)) {
|
||||
throw new IllegalArgumentException("Illegal input device type " + type);
|
||||
@@ -609,6 +638,7 @@ public final class AudioDeviceInfo {
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_TELEPHONY_TX, TYPE_TELEPHONY);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_LINE, TYPE_LINE_ANALOG);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_HDMI_ARC, TYPE_HDMI_ARC);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_HDMI_EARC, TYPE_HDMI_EARC);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_SPDIF, TYPE_LINE_DIGITAL);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_FM, TYPE_FM);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_OUT_AUX_LINE, TYPE_AUX_LINE);
|
||||
@@ -641,6 +671,8 @@ public final class AudioDeviceInfo {
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BUS, TYPE_BUS);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_REMOTE_SUBMIX, TYPE_REMOTE_SUBMIX);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_BLE_HEADSET, TYPE_BLE_HEADSET);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_HDMI_ARC, TYPE_HDMI_ARC);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_HDMI_EARC, TYPE_HDMI_EARC);
|
||||
INT_TO_EXT_DEVICE_MAPPING.put(AudioSystem.DEVICE_IN_ECHO_REFERENCE, TYPE_ECHO_REFERENCE);
|
||||
|
||||
|
||||
@@ -656,6 +688,7 @@ public final class AudioDeviceInfo {
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_BLUETOOTH_A2DP, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_HDMI, AudioSystem.DEVICE_OUT_HDMI);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_HDMI_ARC, AudioSystem.DEVICE_OUT_HDMI_ARC);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_HDMI_EARC, AudioSystem.DEVICE_OUT_HDMI_EARC);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_DEVICE, AudioSystem.DEVICE_OUT_USB_DEVICE);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_HEADSET, AudioSystem.DEVICE_OUT_USB_HEADSET);
|
||||
EXT_TO_INT_DEVICE_MAPPING.put(TYPE_USB_ACCESSORY, AudioSystem.DEVICE_OUT_USB_ACCESSORY);
|
||||
@@ -700,6 +733,8 @@ public final class AudioDeviceInfo {
|
||||
EXT_TO_INT_INPUT_DEVICE_MAPPING.put(
|
||||
TYPE_REMOTE_SUBMIX, AudioSystem.DEVICE_IN_REMOTE_SUBMIX);
|
||||
EXT_TO_INT_INPUT_DEVICE_MAPPING.put(TYPE_BLE_HEADSET, AudioSystem.DEVICE_IN_BLE_HEADSET);
|
||||
EXT_TO_INT_INPUT_DEVICE_MAPPING.put(TYPE_HDMI_ARC, AudioSystem.DEVICE_IN_HDMI_ARC);
|
||||
EXT_TO_INT_INPUT_DEVICE_MAPPING.put(TYPE_HDMI_EARC, AudioSystem.DEVICE_IN_HDMI_EARC);
|
||||
EXT_TO_INT_INPUT_DEVICE_MAPPING.put(
|
||||
TYPE_ECHO_REFERENCE, AudioSystem.DEVICE_IN_ECHO_REFERENCE);
|
||||
|
||||
|
||||
@@ -5188,6 +5188,10 @@ public class AudioManager {
|
||||
* The audio output device code for HDMI Audio Return Channel.
|
||||
*/
|
||||
public static final int DEVICE_OUT_HDMI_ARC = AudioSystem.DEVICE_OUT_HDMI_ARC;
|
||||
/** @hide
|
||||
* The audio output device code for HDMI enhanced Audio Return Channel.
|
||||
*/
|
||||
public static final int DEVICE_OUT_HDMI_EARC = AudioSystem.DEVICE_OUT_HDMI_EARC;
|
||||
/** @hide
|
||||
* The audio output device code for S/PDIF digital connection.
|
||||
*/
|
||||
@@ -5240,6 +5244,12 @@ public class AudioManager {
|
||||
public static final int DEVICE_IN_HDMI_ARC =
|
||||
AudioSystem.DEVICE_IN_HDMI_ARC;
|
||||
|
||||
/** @hide
|
||||
* The audio input device code for HDMI EARC
|
||||
*/
|
||||
public static final int DEVICE_IN_HDMI_EARC =
|
||||
AudioSystem.DEVICE_IN_HDMI_EARC;
|
||||
|
||||
/** @hide
|
||||
* The audio input device code for telephony voice RX path
|
||||
*/
|
||||
@@ -5354,6 +5364,7 @@ public class AudioManager {
|
||||
* {@link #DEVICE_OUT_TELEPHONY_TX}.
|
||||
* {@link #DEVICE_OUT_LINE}.
|
||||
* {@link #DEVICE_OUT_HDMI_ARC}.
|
||||
* {@link #DEVICE_OUT_HDMI_EARC}.
|
||||
* {@link #DEVICE_OUT_SPDIF}.
|
||||
* {@link #DEVICE_OUT_FM}.
|
||||
* {@link #DEVICE_OUT_DEFAULT} is not used here.
|
||||
|
||||
@@ -890,6 +890,8 @@ public class AudioSystem
|
||||
/** @hide */
|
||||
public static final int DEVICE_OUT_HDMI_ARC = 0x40000;
|
||||
/** @hide */
|
||||
public static final int DEVICE_OUT_HDMI_EARC = 0x40001;
|
||||
/** @hide */
|
||||
public static final int DEVICE_OUT_SPDIF = 0x80000;
|
||||
/** @hide */
|
||||
@UnsupportedAppUsage
|
||||
@@ -961,6 +963,7 @@ public class AudioSystem
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_TELEPHONY_TX);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_LINE);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_HDMI_ARC);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_HDMI_EARC);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_SPDIF);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_FM);
|
||||
DEVICE_OUT_ALL_SET.add(DEVICE_OUT_AUX_LINE);
|
||||
@@ -993,6 +996,7 @@ public class AudioSystem
|
||||
DEVICE_OUT_ALL_HDMI_SYSTEM_AUDIO_SET = new HashSet<>();
|
||||
DEVICE_OUT_ALL_HDMI_SYSTEM_AUDIO_SET.add(DEVICE_OUT_AUX_LINE);
|
||||
DEVICE_OUT_ALL_HDMI_SYSTEM_AUDIO_SET.add(DEVICE_OUT_HDMI_ARC);
|
||||
DEVICE_OUT_ALL_HDMI_SYSTEM_AUDIO_SET.add(DEVICE_OUT_HDMI_EARC);
|
||||
DEVICE_OUT_ALL_HDMI_SYSTEM_AUDIO_SET.add(DEVICE_OUT_SPDIF);
|
||||
|
||||
DEVICE_ALL_HDMI_SYSTEM_AUDIO_AND_SPEAKER_SET = new HashSet<>();
|
||||
@@ -1074,6 +1078,8 @@ public class AudioSystem
|
||||
/** @hide */
|
||||
public static final int DEVICE_IN_HDMI_ARC = DEVICE_BIT_IN | 0x8000000;
|
||||
/** @hide */
|
||||
public static final int DEVICE_IN_HDMI_EARC = DEVICE_BIT_IN | 0x8000001;
|
||||
/** @hide */
|
||||
public static final int DEVICE_IN_ECHO_REFERENCE = DEVICE_BIT_IN | 0x10000000;
|
||||
/** @hide */
|
||||
public static final int DEVICE_IN_BLE_HEADSET = DEVICE_BIT_IN | 0x20000000;
|
||||
@@ -1114,6 +1120,7 @@ public class AudioSystem
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_USB_HEADSET);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_BLUETOOTH_BLE);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_HDMI_ARC);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_HDMI_EARC);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_ECHO_REFERENCE);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_BLE_HEADSET);
|
||||
DEVICE_IN_ALL_SET.add(DEVICE_IN_DEFAULT);
|
||||
@@ -1169,6 +1176,7 @@ public class AudioSystem
|
||||
/** @hide */ public static final String DEVICE_OUT_TELEPHONY_TX_NAME = "telephony_tx";
|
||||
/** @hide */ public static final String DEVICE_OUT_LINE_NAME = "line";
|
||||
/** @hide */ public static final String DEVICE_OUT_HDMI_ARC_NAME = "hmdi_arc";
|
||||
/** @hide */ public static final String DEVICE_OUT_HDMI_EARC_NAME = "hmdi_earc";
|
||||
/** @hide */ public static final String DEVICE_OUT_SPDIF_NAME = "spdif";
|
||||
/** @hide */ public static final String DEVICE_OUT_FM_NAME = "fm_transmitter";
|
||||
/** @hide */ public static final String DEVICE_OUT_AUX_LINE_NAME = "aux_line";
|
||||
@@ -1208,6 +1216,7 @@ public class AudioSystem
|
||||
/** @hide */ public static final String DEVICE_IN_BLUETOOTH_BLE_NAME = "bt_ble";
|
||||
/** @hide */ public static final String DEVICE_IN_ECHO_REFERENCE_NAME = "echo_reference";
|
||||
/** @hide */ public static final String DEVICE_IN_HDMI_ARC_NAME = "hdmi_arc";
|
||||
/** @hide */ public static final String DEVICE_IN_HDMI_EARC_NAME = "hdmi_earc";
|
||||
/** @hide */ public static final String DEVICE_IN_BLE_HEADSET_NAME = "ble_headset";
|
||||
|
||||
/** @hide */
|
||||
@@ -1253,6 +1262,8 @@ public class AudioSystem
|
||||
return DEVICE_OUT_LINE_NAME;
|
||||
case DEVICE_OUT_HDMI_ARC:
|
||||
return DEVICE_OUT_HDMI_ARC_NAME;
|
||||
case DEVICE_OUT_HDMI_EARC:
|
||||
return DEVICE_OUT_HDMI_EARC_NAME;
|
||||
case DEVICE_OUT_SPDIF:
|
||||
return DEVICE_OUT_SPDIF_NAME;
|
||||
case DEVICE_OUT_FM:
|
||||
@@ -1339,6 +1350,8 @@ public class AudioSystem
|
||||
return DEVICE_IN_ECHO_REFERENCE_NAME;
|
||||
case DEVICE_IN_HDMI_ARC:
|
||||
return DEVICE_IN_HDMI_ARC_NAME;
|
||||
case DEVICE_IN_HDMI_EARC:
|
||||
return DEVICE_IN_HDMI_EARC_NAME;
|
||||
case DEVICE_IN_BLE_HEADSET:
|
||||
return DEVICE_IN_BLE_HEADSET_NAME;
|
||||
case DEVICE_IN_DEFAULT:
|
||||
|
||||
@@ -1257,6 +1257,7 @@ public class AudioDeviceInventory {
|
||||
break;
|
||||
case AudioSystem.DEVICE_OUT_HDMI:
|
||||
case AudioSystem.DEVICE_OUT_HDMI_ARC:
|
||||
case AudioSystem.DEVICE_OUT_HDMI_EARC:
|
||||
configureHdmiPlugIntent(intent, state);
|
||||
break;
|
||||
}
|
||||
@@ -1292,6 +1293,7 @@ public class AudioDeviceInventory {
|
||||
break;
|
||||
case AudioSystem.DEVICE_OUT_HDMI:
|
||||
case AudioSystem.DEVICE_OUT_HDMI_ARC:
|
||||
case AudioSystem.DEVICE_OUT_HDMI_EARC:
|
||||
connType = AudioRoutesInfo.MAIN_HDMI;
|
||||
break;
|
||||
case AudioSystem.DEVICE_OUT_USB_DEVICE:
|
||||
@@ -1336,7 +1338,8 @@ public class AudioDeviceInventory {
|
||||
}
|
||||
final AudioDevicePort devicePort = (AudioDevicePort) port;
|
||||
if (devicePort.type() != AudioManager.DEVICE_OUT_HDMI
|
||||
&& devicePort.type() != AudioManager.DEVICE_OUT_HDMI_ARC) {
|
||||
&& devicePort.type() != AudioManager.DEVICE_OUT_HDMI_ARC
|
||||
&& devicePort.type() != AudioManager.DEVICE_OUT_HDMI_EARC) {
|
||||
continue;
|
||||
}
|
||||
// found an HDMI port: format the list of supported encodings
|
||||
|
||||
@@ -562,6 +562,7 @@ public class AudioService extends IAudioService.Stub
|
||||
AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET,
|
||||
AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET,
|
||||
AudioSystem.DEVICE_OUT_HDMI_ARC,
|
||||
AudioSystem.DEVICE_OUT_HDMI_EARC,
|
||||
AudioSystem.DEVICE_OUT_AUX_LINE));
|
||||
// Devices for which the volume is always max, no volume panel
|
||||
Set<Integer> mFullVolumeDevices = new HashSet<>();
|
||||
@@ -5877,6 +5878,9 @@ public class AudioService extends IAudioService.Stub
|
||||
if ((device & AudioSystem.DEVICE_OUT_SPEAKER) != 0) {
|
||||
device = AudioSystem.DEVICE_OUT_SPEAKER;
|
||||
} else if ((device & AudioSystem.DEVICE_OUT_HDMI_ARC) != 0) {
|
||||
// FIXME(b/184944421): DEVICE_OUT_HDMI_EARC has two bits set,
|
||||
// so it must be handled correctly as it aliases
|
||||
// with DEVICE_OUT_HDMI_ARC | DEVICE_OUT_EARPIECE.
|
||||
device = AudioSystem.DEVICE_OUT_HDMI_ARC;
|
||||
} else if ((device & AudioSystem.DEVICE_OUT_SPDIF) != 0) {
|
||||
device = AudioSystem.DEVICE_OUT_SPDIF;
|
||||
|
||||
Reference in New Issue
Block a user