From 0ca1379b919755e82f5c8bef6f9bdba87e44da27 Mon Sep 17 00:00:00 2001 From: Sleman Zaytoon Date: Tue, 27 Feb 2024 11:19:08 +0300 Subject: [PATCH] Fixing Period Switch Ref Update Issue in Manifest Parsing --- .../media3/exoplayer/dash/DashMediaPeriod.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java index 5a3e4fb5cad..7c882faa413 100644 --- a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java +++ b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java @@ -379,7 +379,21 @@ private int[] getStreamIndexToTrackGroupIndex(ExoTrackSelection[] selections) { int[] streamIndexToTrackGroupIndex = new int[selections.length]; for (int i = 0; i < selections.length; i++) { if (selections[i] != null) { - streamIndexToTrackGroupIndex[i] = trackGroups.indexOf(selections[i].getTrackGroup()); + int trackIndex = trackGroups.indexOf(selections[i].getTrackGroup()); + + // fallback in case we could not find map trackGroups through reference + if(trackIndex == C.INDEX_UNSET) { + for(int y = 0; y < trackGroups.length; y++) { + String trackFormatId = trackGroups.get(y).getFormat(0).id; + String selectionFormatId = selections[i].getTrackGroup().getFormat(0).id; + + if(trackFormatId.equals(selectionFormatId)) { + trackIndex = y; + break; + } + } + } + streamIndexToTrackGroupIndex[i] = trackIndex; } else { streamIndexToTrackGroupIndex[i] = C.INDEX_UNSET; }