From 815cc38b68d338ecad2d9d41e59b6bf458fae033 Mon Sep 17 00:00:00 2001 From: AndyWangLYN Date: Fri, 12 Jun 2026 11:27:04 -0700 Subject: [PATCH] Add selection priority parsing for DASH --- .../java/androidx/media3/common/Format.java | 3 +++ .../dash/manifest/DashManifestParser.java | 7 +++++ .../dash/manifest/DashManifestParserTest.java | 20 ++++++++++++++ .../media/mpd/sample_mpd_selection_priority | 26 +++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 libraries/test_data/src/test/assets/media/mpd/sample_mpd_selection_priority diff --git a/libraries/common/src/main/java/androidx/media3/common/Format.java b/libraries/common/src/main/java/androidx/media3/common/Format.java index 741805e55f7..d0aac48b357 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Format.java +++ b/libraries/common/src/main/java/androidx/media3/common/Format.java @@ -1013,6 +1013,9 @@ public Format build() { *
  • HLS variants: The {@code SCORE} attribute defined on the corresponding {@code * EXT-X-STREAM-INF} and {@code EXT-X-I-FRAME-STREAM-INF} tags in the multivariant playlist, * or {@link #NO_VALUE} if not present. + *
  • DASH representations: The {@code selectionPriority} attribute defined on the + * corresponding {@code Representation}, inherited from the parent {@code AdaptationSet}, or + * {@code 1} if not present. *
  • All the other types of media: Always {@link #NO_VALUE}. * */ diff --git a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/manifest/DashManifestParser.java b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/manifest/DashManifestParser.java index e3dc0c1b3e1..79b04ed4a72 100644 --- a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/manifest/DashManifestParser.java +++ b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/manifest/DashManifestParser.java @@ -472,6 +472,7 @@ protected AdaptationSet parseAdaptationSet( float frameRate = parseFrameRate(xpp, Format.NO_VALUE); int audioChannels = Format.NO_VALUE; int audioSamplingRate = parseInt(xpp, "audioSamplingRate", Format.NO_VALUE); + int selectionPriority = parseInt(xpp, "selectionPriority", /* defaultValue= */ 1); String language = xpp.getAttributeValue(null, "lang"); String label = xpp.getAttributeValue(null, "label"); List