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
This commit is contained in:
bachinger 2020-06-01 21:36:52 +01:00 committed by Oliver Woodman
parent 2f3c7cb85f
commit 75e54a452a

View file

@ -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,