Add support for Opus over A2DP
This CL add support for Opus as an A2DP codec in Audio Framework and selection of the codec in Developer Options. Bug: 226441860 Test: Sink device using bds-dev Change-Id: I1d68209e8f996e78adeed03b77a3ee9cacda6307
This commit is contained in:
@@ -65,6 +65,8 @@ public class AudioSystem
|
||||
|
||||
private static final String TAG = "AudioSystem";
|
||||
|
||||
private static final int SOURCE_CODEC_TYPE_OPUS = 6; // TODO remove in U
|
||||
|
||||
// private constructor to prevent instantiating AudioSystem
|
||||
private AudioSystem() {
|
||||
throw new UnsupportedOperationException("Trying to instantiate AudioSystem");
|
||||
@@ -243,6 +245,8 @@ public class AudioSystem
|
||||
public static final int AUDIO_FORMAT_LDAC = 0x23000000;
|
||||
/** @hide */
|
||||
public static final int AUDIO_FORMAT_LC3 = 0x2B000000;
|
||||
/** @hide */
|
||||
public static final int AUDIO_FORMAT_OPUS = 0x08000000;
|
||||
|
||||
|
||||
/** @hide */
|
||||
@@ -254,7 +258,9 @@ public class AudioSystem
|
||||
AUDIO_FORMAT_APTX,
|
||||
AUDIO_FORMAT_APTX_HD,
|
||||
AUDIO_FORMAT_LDAC,
|
||||
AUDIO_FORMAT_LC3}
|
||||
AUDIO_FORMAT_LC3,
|
||||
AUDIO_FORMAT_OPUS
|
||||
}
|
||||
)
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface AudioFormatNativeEnumForBtCodec {}
|
||||
@@ -287,6 +293,7 @@ public class AudioSystem
|
||||
case AUDIO_FORMAT_APTX_HD: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
|
||||
case AUDIO_FORMAT_LDAC: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
|
||||
case AUDIO_FORMAT_LC3: return BluetoothCodecConfig.SOURCE_CODEC_TYPE_LC3;
|
||||
case AUDIO_FORMAT_OPUS: return SOURCE_CODEC_TYPE_OPUS; // TODO update in U
|
||||
default:
|
||||
Log.e(TAG, "Unknown audio format 0x" + Integer.toHexString(audioFormat)
|
||||
+ " for conversion to BT codec");
|
||||
@@ -329,6 +336,8 @@ public class AudioSystem
|
||||
return AudioSystem.AUDIO_FORMAT_LDAC;
|
||||
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LC3:
|
||||
return AudioSystem.AUDIO_FORMAT_LC3;
|
||||
case SOURCE_CODEC_TYPE_OPUS: // TODO update in U
|
||||
return AudioSystem.AUDIO_FORMAT_OPUS;
|
||||
default:
|
||||
Log.e(TAG, "Unknown BT codec 0x" + Integer.toHexString(btCodec)
|
||||
+ " for conversion to audio format");
|
||||
|
||||
@@ -154,6 +154,8 @@
|
||||
<item><xliff:g id="qualcomm">Qualcomm®</xliff:g> <xliff:g id="aptx">aptX™</xliff:g> audio</item>
|
||||
<item><xliff:g id="qualcomm">Qualcomm®</xliff:g> <xliff:g id="aptx_hd">aptX™ HD</xliff:g> audio</item>
|
||||
<item>LDAC</item>
|
||||
<item>LC3</item>
|
||||
<item>Opus</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Values for Bluetooth Audio Codec selection preference. -->
|
||||
@@ -164,6 +166,8 @@
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
<item>4</item>
|
||||
<item>5</item>
|
||||
<item>6</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Summaries for Bluetooth Audio Codec selection preference. [CHAR LIMIT=50]-->
|
||||
@@ -174,6 +178,8 @@
|
||||
<item><xliff:g id="qualcomm">Qualcomm®</xliff:g> <xliff:g id="aptx">aptX™</xliff:g> audio</item>
|
||||
<item><xliff:g id="qualcomm">Qualcomm®</xliff:g> <xliff:g id="aptx_hd">aptX™ HD</xliff:g> audio</item>
|
||||
<item>LDAC</item>
|
||||
<item>LC3</item>
|
||||
<item>Opus</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Titles for Bluetooth Audio Codec Sample Rate selection preference. [CHAR LIMIT=50] -->
|
||||
|
||||
@@ -43,6 +43,8 @@ import java.util.List;
|
||||
public class A2dpProfile implements LocalBluetoothProfile {
|
||||
private static final String TAG = "A2dpProfile";
|
||||
|
||||
private static final int SOURCE_CODEC_TYPE_OPUS = 6; // TODO remove in U
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private BluetoothA2dp mService;
|
||||
@@ -328,6 +330,12 @@ public class A2dpProfile implements LocalBluetoothProfile {
|
||||
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
|
||||
index = 5;
|
||||
break;
|
||||
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LC3:
|
||||
index = 6;
|
||||
break;
|
||||
case SOURCE_CODEC_TYPE_OPUS: // TODO update in U
|
||||
index = 7;
|
||||
break;
|
||||
}
|
||||
|
||||
if (index < 0) {
|
||||
|
||||
@@ -53,6 +53,8 @@ public class BtHelper {
|
||||
|
||||
private static final String TAG = "AS.BtHelper";
|
||||
|
||||
private static final int SOURCE_CODEC_TYPE_OPUS = 6; // TODO remove in U
|
||||
|
||||
private final @NonNull AudioDeviceBroker mDeviceBroker;
|
||||
|
||||
BtHelper(@NonNull AudioDeviceBroker broker) {
|
||||
@@ -907,6 +909,8 @@ public class BtHelper {
|
||||
return "ENCODING_APTX_HD";
|
||||
case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
|
||||
return "ENCODING_LDAC";
|
||||
case SOURCE_CODEC_TYPE_OPUS: // TODO update in U
|
||||
return "ENCODING_OPUS";
|
||||
default:
|
||||
return "ENCODING_BT_CODEC_TYPE(" + btCodecType + ")";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user