From 75e54a452a467ccc575fed33c885f7bdaf82be29 Mon Sep 17 00:00:00 2001 From: bachinger Date: Mon, 1 Jun 2020 21:36:52 +0100 Subject: [PATCH] Use identical media item for constructor if possible If no deprecated methods on the factory is called, the media item instance that is passed to the createMediaSource method must be passed down to the constructor of the media source. PiperOrigin-RevId: 314193865 --- .../source/ProgressiveMediaSource.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java index 259f293a94..6c1d26cb07 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java @@ -180,15 +180,18 @@ public final class ProgressiveMediaSource extends BaseMediaSource @Override public ProgressiveMediaSource createMediaSource(MediaItem mediaItem) { checkNotNull(mediaItem.playbackProperties); - MediaItem.Builder builder = mediaItem.buildUpon(); - if (mediaItem.playbackProperties.tag == null) { - builder.setTag(tag); - } - if (mediaItem.playbackProperties.customCacheKey == null) { - builder.setCustomCacheKey(customCacheKey); + boolean needsTag = mediaItem.playbackProperties.tag == null && tag != null; + boolean needsCustomCacheKey = + mediaItem.playbackProperties.customCacheKey == null && customCacheKey != null; + if (needsTag && needsCustomCacheKey) { + mediaItem = mediaItem.buildUpon().setTag(tag).setCustomCacheKey(customCacheKey).build(); + } else if (needsTag) { + mediaItem = mediaItem.buildUpon().setTag(tag).build(); + } else if (needsCustomCacheKey) { + mediaItem = mediaItem.buildUpon().setCustomCacheKey(customCacheKey).build(); } return new ProgressiveMediaSource( - builder.build(), + mediaItem, dataSourceFactory, extractorsFactory, drmSessionManager,