From 7b5522fc589b2e11a362f8ee430e4cd90c0a7947 Mon Sep 17 00:00:00 2001 From: Copybara-Service Date: Wed, 27 Mar 2024 10:24:32 -0700 Subject: [PATCH] Merge pull request #1054 from jekopena:main PiperOrigin-RevId: 619573181 (cherry picked from commit 8fe70332ee68faf8945ddb9cf2c897d809af8e49) --- RELEASENOTES.md | 9 +- .../java/androidx/media3/common/Format.java | 87 +++++++++++++++++-- .../java/androidx/media3/common/Label.java | 86 ++++++++++++++++++ .../androidx/media3/common/FormatTest.java | 59 +++++++++++++ .../exoplayer/audio/DecoderAudioRenderer.java | 1 + .../audio/MediaCodecAudioRenderer.java | 1 + .../mediaparser/OutputConsumerAdapterV30.java | 1 + .../dash/manifest/DashManifestParser.java | 16 +++- .../dash/manifest/DashManifestParserTest.java | 29 ++++++- .../media3/exoplayer/hls/HlsMediaPeriod.java | 6 ++ .../exoplayer/hls/HlsSampleStreamWrapper.java | 1 + .../manifest/SsManifestParserTest.java | 1 + ...sample_with_null_terminated_srt.mkv.0.dump | 3 + ...sample_with_null_terminated_srt.mkv.1.dump | 3 + ...sample_with_null_terminated_srt.mkv.2.dump | 3 + ...sample_with_null_terminated_srt.mkv.3.dump | 3 + ...ull_terminated_srt.mkv.unknown_length.dump | 3 + .../mkv/sample_with_srt.mkv.0.dump | 3 + .../mkv/sample_with_srt.mkv.1.dump | 3 + .../mkv/sample_with_srt.mkv.2.dump | 3 + .../mkv/sample_with_srt.mkv.3.dump | 3 + .../sample_with_srt.mkv.unknown_length.dump | 3 + ...sample_with_null_terminated_srt.mkv.0.dump | 3 + ...sample_with_null_terminated_srt.mkv.1.dump | 3 + ...sample_with_null_terminated_srt.mkv.2.dump | 3 + ...sample_with_null_terminated_srt.mkv.3.dump | 3 + ...ull_terminated_srt.mkv.unknown_length.dump | 3 + .../sample_with_srt.mkv.0.dump | 3 + .../sample_with_srt.mkv.1.dump | 3 + .../sample_with_srt.mkv.2.dump | 3 + .../sample_with_srt.mkv.3.dump | 3 + .../sample_with_srt.mkv.unknown_length.dump | 3 + .../media3/test/utils/DumpableFormat.java | 11 +++ 33 files changed, 352 insertions(+), 16 deletions(-) create mode 100644 libraries/common/src/main/java/androidx/media3/common/Label.java diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 30ce0f1e1d..a3130c00eb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,8 @@ ### Unreleased changes +* Common Library: + * Add `Format.labels` to allow localized or other alternative labels. * ExoPlayer: * Fix issue where `PreloadMediaPeriod` cannot retain the streams when it is preloaded again. @@ -28,7 +30,7 @@ from WAV files ([#1117](https://github.com/androidx/media/pull/1117)). * MP3: Populate `Format.averageBitrate` from metadata frames such as `XING` and `VBRI`. -* Audio: +* Audio: * Allow renderer recovery by disabling offload if audio track fails to initialize in offload mode. * Video: @@ -60,10 +62,13 @@ * Fix issue where `MediaMetadata` with just non-null `extras` is not transmitted between media controllers and sessions ([#1176](https://github.com/androidx/media/issues/1176)). -* UI: +* UI: * Fallback to include audio track language name if `Locale` cannot identify a display name ([#988](https://github.com/androidx/media/issues/988)). +* DASH Extension: + * Populate all `Label` elements from the manifest into `Format.labels` + ([#1054](https://github.com/androidx/media/pull/1054)). * RTSP Extension: * Skip empty session information values (i-tags) in SDP parsing ([#1087](https://github.com/androidx/media/issues/1087)). 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 1a9a77a214..cda7ac23e9 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Format.java +++ b/libraries/common/src/main/java/androidx/media3/common/Format.java @@ -15,15 +15,18 @@ */ package androidx.media3.common; +import static androidx.media3.common.util.Assertions.checkState; import static java.lang.annotation.ElementType.TYPE_USE; import android.os.Bundle; +import android.text.TextUtils; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import androidx.media3.common.util.BundleCollectionUtil; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -50,6 +53,7 @@ import java.util.UUID; *