Skip to content

Commit 4665db0

Browse files
committed
Use ExoPlayer to detect compatibility
1 parent adda27d commit 4665db0

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

xr/src/main/java/com/example/xr/scenecore/SpatialAudio.kt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ import android.content.Context
2020
import android.media.AudioAttributes
2121
import android.media.AudioAttributes.CONTENT_TYPE_SONIFICATION
2222
import android.media.AudioAttributes.USAGE_ASSISTANCE_SONIFICATION
23-
import android.media.MediaCodecList
2423
import android.media.MediaPlayer
2524
import android.media.SoundPool
25+
import androidx.annotation.OptIn
26+
import androidx.media3.common.C
27+
import androidx.media3.common.util.UnstableApi
28+
import androidx.media3.exoplayer.audio.AudioCapabilities
2629
import androidx.xr.runtime.Session
2730
import androidx.xr.scenecore.Entity
2831
import androidx.xr.scenecore.PointSourceParams
@@ -151,10 +154,18 @@ private fun playSpatialAudioAtEntityAmbionics(session: Session, appContext: Cont
151154
// [END androidxr_scenecore_playSpatialAudioAmbionics]
152155
}
153156

154-
private fun detectSupport() {
157+
@OptIn(UnstableApi::class)
158+
private fun detectSupport(context: Context) {
155159
// [START androidxr_scenecore_dolby_detect_support]
156-
val codecInfos = MediaCodecList(MediaCodecList.ALL_CODECS).codecInfos
157-
fun supportsEac3SDecoding() = codecInfos.any { !it.isEncoder && it.supportedTypes.any { it == "audio/aec3" } }
158-
fun supportsAc4Decoding() = codecInfos.any { !it.isEncoder && it.supportedTypes.any { it == "audio/ac4" } }
160+
val audioCapabilities = AudioCapabilities.getCapabilities(context, androidx.media3.common.AudioAttributes.DEFAULT, null)
161+
if (audioCapabilities.supportsEncoding(C.ENCODING_AC3)) {
162+
// Device supports playback of the Dolby Digital media format.
163+
}
164+
if (audioCapabilities.supportsEncoding(C.ENCODING_E_AC3)) {
165+
// Device supports playback of the Dolby Digital Plus media format.
166+
}
167+
if (audioCapabilities.supportsEncoding(C.ENCODING_E_AC3_JOC)) {
168+
// Device supports playback of the Dolby Digital Plus with Dolby Atmos media format.
169+
}
159170
// [END androidxr_scenecore_dolby_detect_support]
160171
}

0 commit comments

Comments
 (0)