From b05583f00d5fa8762b24048aa029d7e5d73a4ee0 Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 30 Dec 2021 12:20:37 +0000 Subject: [PATCH] DASH: Stop interpreting `main` track role as `SELECTION_FLAG_DEFAULT` The `main` role distinguishes a track from an `alternate`, but unlike `SELECTION_FLAG_DEFAULT` it doesn't imply the track should be selected unless user preferences state otherwise. e.g. in the case of a text track, the player shouldn't enable subtitle rendering just because a `main` text track is present in the manifest. The `main`/`alternate` distinction is still available through `Format.roleFlags` and the `ROLE_FLAG_MAIN` and `ROLE_FLAG_ALTERNATE` values. This behaviour was originally [added in 2.2.0](https://github.com/google/ExoPlayer/commit/7f967f305718bc2c9ee679fdd7d014eccef0356b), however at the time the `C.RoleFlags` IntDef did not exist. The IntDef was [added in 2.10.0](https://github.com/google/ExoPlayer/commit/a86a9137be5f0ed89de3d68f4c4800a7753cc881). PiperOrigin-RevId: 418937747 --- .../media3/exoplayer/dash/manifest/DashManifestParser.java | 2 -- .../media3/exoplayer/dash/manifest/DashManifestParserTest.java | 3 ++- libraries/test_data/src/test/assets/media/mpd/sample_mpd_text | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) 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 45f2b6fcfc..7b7fc2c618 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 @@ -1474,8 +1474,6 @@ public class DashManifestParser extends DefaultHandler return 0; } switch (value) { - case "main": - return C.SELECTION_FLAG_DEFAULT; case "forced_subtitle": // Support both hyphen and underscore (https://github.com/google/ExoPlayer/issues/9727). case "forced-subtitle": diff --git a/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/manifest/DashManifestParserTest.java b/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/manifest/DashManifestParserTest.java index d446ed0f7e..da3e7ee9f9 100644 --- a/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/manifest/DashManifestParserTest.java +++ b/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/manifest/DashManifestParserTest.java @@ -243,7 +243,8 @@ public class DashManifestParserTest { assertThat(format.containerMimeType).isEqualTo(MimeTypes.APPLICATION_RAWCC); assertThat(format.sampleMimeType).isEqualTo(MimeTypes.APPLICATION_CEA608); assertThat(format.codecs).isEqualTo("cea608"); - assertThat(format.roleFlags).isEqualTo(C.ROLE_FLAG_SUBTITLE); + assertThat(format.roleFlags).isEqualTo(C.ROLE_FLAG_SUBTITLE | C.ROLE_FLAG_MAIN); + assertThat(format.selectionFlags).isEqualTo(0); assertThat(adaptationSets.get(0).type).isEqualTo(C.TRACK_TYPE_TEXT); format = adaptationSets.get(1).representations.get(0).format; diff --git a/libraries/test_data/src/test/assets/media/mpd/sample_mpd_text b/libraries/test_data/src/test/assets/media/mpd/sample_mpd_text index 4220f5b2f2..9af9e24915 100644 --- a/libraries/test_data/src/test/assets/media/mpd/sample_mpd_text +++ b/libraries/test_data/src/test/assets/media/mpd/sample_mpd_text @@ -8,6 +8,7 @@ + https://test.com/0