mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Migrate usages of MediaItem.PlaybackProperties to LocalConfiguration
PiperOrigin-RevId: 399206106
This commit is contained in:
parent
e373e0cbaf
commit
a04f1d1726
@ -98,7 +98,7 @@ public class DownloadTracker {
|
||||
}
|
||||
|
||||
public boolean isDownloaded(MediaItem mediaItem) {
|
||||
@Nullable Download download = downloads.get(checkNotNull(mediaItem.playbackProperties).uri);
|
||||
@Nullable Download download = downloads.get(checkNotNull(mediaItem.localConfiguration).uri);
|
||||
return download != null && download.state != Download.STATE_FAILED;
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ public class DownloadTracker {
|
||||
|
||||
public void toggleDownload(
|
||||
FragmentManager fragmentManager, MediaItem mediaItem, RenderersFactory renderersFactory) {
|
||||
@Nullable Download download = downloads.get(checkNotNull(mediaItem.playbackProperties).uri);
|
||||
@Nullable Download download = downloads.get(checkNotNull(mediaItem.localConfiguration).uri);
|
||||
if (download != null && download.state != Download.STATE_FAILED) {
|
||||
DownloadService.sendRemoveDownload(
|
||||
context, DemoDownloadService.class, download.request.id, /* foreground= */ false);
|
||||
@ -223,7 +223,7 @@ public class DownloadTracker {
|
||||
widevineOfflineLicenseFetchTask =
|
||||
new WidevineOfflineLicenseFetchTask(
|
||||
format,
|
||||
mediaItem.playbackProperties.drmConfiguration,
|
||||
mediaItem.localConfiguration.drmConfiguration,
|
||||
httpDataSourceFactory,
|
||||
/* dialogHelper= */ this,
|
||||
helper);
|
||||
|
@ -88,22 +88,22 @@ public class IntentUtil {
|
||||
Assertions.checkArgument(!mediaItems.isEmpty());
|
||||
if (mediaItems.size() == 1) {
|
||||
MediaItem mediaItem = mediaItems.get(0);
|
||||
MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
intent.setAction(ACTION_VIEW).setData(mediaItem.playbackProperties.uri);
|
||||
MediaItem.LocalConfiguration localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
intent.setAction(ACTION_VIEW).setData(mediaItem.localConfiguration.uri);
|
||||
if (mediaItem.mediaMetadata.title != null) {
|
||||
intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.title);
|
||||
}
|
||||
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "");
|
||||
addPlaybackPropertiesToIntent(localConfiguration, intent, /* extrasKeySuffix= */ "");
|
||||
addClippingPropertiesToIntent(
|
||||
mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "");
|
||||
} else {
|
||||
intent.setAction(ACTION_VIEW_LIST);
|
||||
for (int i = 0; i < mediaItems.size(); i++) {
|
||||
MediaItem mediaItem = mediaItems.get(i);
|
||||
MediaItem.PlaybackProperties playbackProperties =
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
intent.putExtra(URI_EXTRA + ("_" + i), playbackProperties.uri.toString());
|
||||
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "_" + i);
|
||||
MediaItem.LocalConfiguration localConfiguration =
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
intent.putExtra(URI_EXTRA + ("_" + i), localConfiguration.uri.toString());
|
||||
addPlaybackPropertiesToIntent(localConfiguration, intent, /* extrasKeySuffix= */ "_" + i);
|
||||
addClippingPropertiesToIntent(
|
||||
mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "_" + i);
|
||||
if (mediaItem.mediaMetadata.title != null) {
|
||||
@ -185,20 +185,20 @@ public class IntentUtil {
|
||||
}
|
||||
|
||||
private static void addPlaybackPropertiesToIntent(
|
||||
MediaItem.PlaybackProperties playbackProperties, Intent intent, String extrasKeySuffix) {
|
||||
MediaItem.LocalConfiguration localConfiguration, Intent intent, String extrasKeySuffix) {
|
||||
intent
|
||||
.putExtra(MIME_TYPE_EXTRA + extrasKeySuffix, playbackProperties.mimeType)
|
||||
.putExtra(MIME_TYPE_EXTRA + extrasKeySuffix, localConfiguration.mimeType)
|
||||
.putExtra(
|
||||
AD_TAG_URI_EXTRA + extrasKeySuffix,
|
||||
playbackProperties.adsConfiguration != null
|
||||
? playbackProperties.adsConfiguration.adTagUri.toString()
|
||||
localConfiguration.adsConfiguration != null
|
||||
? localConfiguration.adsConfiguration.adTagUri.toString()
|
||||
: null);
|
||||
if (playbackProperties.drmConfiguration != null) {
|
||||
addDrmConfigurationToIntent(playbackProperties.drmConfiguration, intent, extrasKeySuffix);
|
||||
if (localConfiguration.drmConfiguration != null) {
|
||||
addDrmConfigurationToIntent(localConfiguration.drmConfiguration, intent, extrasKeySuffix);
|
||||
}
|
||||
if (!playbackProperties.subtitles.isEmpty()) {
|
||||
checkState(playbackProperties.subtitles.size() == 1);
|
||||
MediaItem.Subtitle subtitle = playbackProperties.subtitles.get(0);
|
||||
if (!localConfiguration.subtitles.isEmpty()) {
|
||||
checkState(localConfiguration.subtitles.size() == 1);
|
||||
MediaItem.Subtitle subtitle = localConfiguration.subtitles.get(0);
|
||||
intent.putExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix, subtitle.uri.toString());
|
||||
intent.putExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix, subtitle.mimeType);
|
||||
intent.putExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix, subtitle.language);
|
||||
|
@ -323,7 +323,7 @@ public class PlayerActivity extends AppCompatActivity
|
||||
}
|
||||
|
||||
MediaItem.DrmConfiguration drmConfiguration =
|
||||
checkNotNull(mediaItem.playbackProperties).drmConfiguration;
|
||||
checkNotNull(mediaItem.localConfiguration).drmConfiguration;
|
||||
if (drmConfiguration != null) {
|
||||
if (Util.SDK_INT < 18) {
|
||||
showToast(R.string.error_drm_unsupported_before_api_18);
|
||||
@ -335,7 +335,7 @@ public class PlayerActivity extends AppCompatActivity
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
hasAds |= mediaItem.playbackProperties.adsConfiguration != null;
|
||||
hasAds |= mediaItem.localConfiguration.adsConfiguration != null;
|
||||
}
|
||||
if (!hasAds) {
|
||||
releaseAdsLoader();
|
||||
@ -496,7 +496,7 @@ public class PlayerActivity extends AppCompatActivity
|
||||
for (MediaItem item : IntentUtil.createMediaItemsFromIntent(intent)) {
|
||||
@Nullable
|
||||
DownloadRequest downloadRequest =
|
||||
downloadTracker.getDownloadRequest(checkNotNull(item.playbackProperties).uri);
|
||||
downloadTracker.getDownloadRequest(checkNotNull(item.localConfiguration).uri);
|
||||
if (downloadRequest != null) {
|
||||
MediaItem.Builder builder = item.buildUpon();
|
||||
builder
|
||||
@ -506,7 +506,7 @@ public class PlayerActivity extends AppCompatActivity
|
||||
.setMimeType(downloadRequest.mimeType)
|
||||
.setStreamKeys(downloadRequest.streamKeys);
|
||||
@Nullable
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.playbackProperties.drmConfiguration;
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.localConfiguration.drmConfiguration;
|
||||
if (drmConfiguration != null) {
|
||||
builder.setDrmConfiguration(
|
||||
drmConfiguration
|
||||
@ -526,7 +526,7 @@ public class PlayerActivity extends AppCompatActivity
|
||||
|
||||
@Nullable
|
||||
private static Map<String, String> getDrmRequestHeaders(MediaItem item) {
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.playbackProperties.drmConfiguration;
|
||||
MediaItem.DrmConfiguration drmConfiguration = item.localConfiguration.drmConfiguration;
|
||||
return drmConfiguration != null ? drmConfiguration.licenseRequestHeaders : null;
|
||||
}
|
||||
}
|
||||
|
@ -249,12 +249,12 @@ public class SampleChooserActivity extends AppCompatActivity
|
||||
if (playlistHolder.mediaItems.size() > 1) {
|
||||
return R.string.download_playlist_unsupported;
|
||||
}
|
||||
MediaItem.PlaybackProperties playbackProperties =
|
||||
checkNotNull(playlistHolder.mediaItems.get(0).playbackProperties);
|
||||
if (playbackProperties.adsConfiguration != null) {
|
||||
MediaItem.LocalConfiguration localConfiguration =
|
||||
checkNotNull(playlistHolder.mediaItems.get(0).localConfiguration);
|
||||
if (localConfiguration.adsConfiguration != null) {
|
||||
return R.string.download_ads_unsupported;
|
||||
}
|
||||
String scheme = playbackProperties.uri.getScheme();
|
||||
String scheme = localConfiguration.uri.getScheme();
|
||||
if (!("http".equals(scheme) || "https".equals(scheme))) {
|
||||
return R.string.download_scheme_unsupported;
|
||||
}
|
||||
|
@ -215,7 +215,7 @@ new PlaybackStatsListener(
|
||||
/* keepHistory= */ false, (eventTime, playbackStats) -> {
|
||||
Object mediaTag =
|
||||
eventTime.timeline.getWindow(eventTime.windowIndex, new Window())
|
||||
.mediaItem.playbackProperties.tag;
|
||||
.mediaItem.localConfiguration.tag;
|
||||
// Report playbackStats with mediaTag metadata.
|
||||
});
|
||||
~~~
|
||||
|
@ -124,8 +124,8 @@ custom tags, then an implementation might look like:
|
||||
public void onMediaItemTransition(
|
||||
@Nullable MediaItem mediaItem, @MediaItemTransitionReason int reason) {
|
||||
@Nullable CustomMetadata metadata = null;
|
||||
if (mediaItem != null && mediaItem.playbackProperties != null) {
|
||||
metadata = (CustomMetadata) mediaItem.playbackProperties.tag;
|
||||
if (mediaItem != null && mediaItem.localConfiguration != null) {
|
||||
metadata = (CustomMetadata) mediaItem.localConfiguration.tag;
|
||||
}
|
||||
updateUiForPlayingMediaItem(metadata);
|
||||
}
|
||||
|
@ -52,8 +52,8 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
||||
|
||||
@Override
|
||||
public MediaQueueItem toMediaQueueItem(MediaItem mediaItem) {
|
||||
Assertions.checkNotNull(mediaItem.playbackProperties);
|
||||
if (mediaItem.playbackProperties.mimeType == null) {
|
||||
Assertions.checkNotNull(mediaItem.localConfiguration);
|
||||
if (mediaItem.localConfiguration.mimeType == null) {
|
||||
throw new IllegalArgumentException("The item must specify its mimeType");
|
||||
}
|
||||
MediaMetadata metadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
|
||||
@ -61,9 +61,9 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
||||
metadata.putString(MediaMetadata.KEY_TITLE, mediaItem.mediaMetadata.title.toString());
|
||||
}
|
||||
MediaInfo mediaInfo =
|
||||
new MediaInfo.Builder(mediaItem.playbackProperties.uri.toString())
|
||||
new MediaInfo.Builder(mediaItem.localConfiguration.uri.toString())
|
||||
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
|
||||
.setContentType(mediaItem.playbackProperties.mimeType)
|
||||
.setContentType(mediaItem.localConfiguration.mimeType)
|
||||
.setMetadata(metadata)
|
||||
.setCustomData(getCustomData(mediaItem))
|
||||
.build();
|
||||
@ -128,15 +128,15 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
||||
}
|
||||
|
||||
private static JSONObject getMediaItemJson(MediaItem mediaItem) throws JSONException {
|
||||
Assertions.checkNotNull(mediaItem.playbackProperties);
|
||||
Assertions.checkNotNull(mediaItem.localConfiguration);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put(KEY_TITLE, mediaItem.mediaMetadata.title);
|
||||
json.put(KEY_URI, mediaItem.playbackProperties.uri.toString());
|
||||
json.put(KEY_MIME_TYPE, mediaItem.playbackProperties.mimeType);
|
||||
if (mediaItem.playbackProperties.drmConfiguration != null) {
|
||||
json.put(KEY_URI, mediaItem.localConfiguration.uri.toString());
|
||||
json.put(KEY_MIME_TYPE, mediaItem.localConfiguration.mimeType);
|
||||
if (mediaItem.localConfiguration.drmConfiguration != null) {
|
||||
json.put(
|
||||
KEY_DRM_CONFIGURATION,
|
||||
getDrmConfigurationJson(mediaItem.playbackProperties.drmConfiguration));
|
||||
getDrmConfigurationJson(mediaItem.localConfiguration.drmConfiguration));
|
||||
}
|
||||
return json;
|
||||
}
|
||||
@ -152,11 +152,11 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
|
||||
|
||||
@Nullable
|
||||
private static JSONObject getPlayerConfigJson(MediaItem mediaItem) throws JSONException {
|
||||
if (mediaItem.playbackProperties == null
|
||||
|| mediaItem.playbackProperties.drmConfiguration == null) {
|
||||
if (mediaItem.localConfiguration == null
|
||||
|| mediaItem.localConfiguration.drmConfiguration == null) {
|
||||
return null;
|
||||
}
|
||||
MediaItem.DrmConfiguration drmConfiguration = mediaItem.playbackProperties.drmConfiguration;
|
||||
MediaItem.DrmConfiguration drmConfiguration = mediaItem.localConfiguration.drmConfiguration;
|
||||
|
||||
String drmScheme;
|
||||
if (C.WIDEVINE_UUID.equals(drmConfiguration.scheme)) {
|
||||
|
@ -423,7 +423,7 @@ public class CastPlayerTest {
|
||||
.onMediaItemTransition(
|
||||
mediaItemCaptor.capture(), eq(MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED));
|
||||
inOrder.verify(mockListener, never()).onMediaItemTransition(any(), anyInt());
|
||||
assertThat(mediaItemCaptor.getAllValues().get(1).playbackProperties.tag).isEqualTo(3);
|
||||
assertThat(mediaItemCaptor.getAllValues().get(1).localConfiguration.tag).isEqualTo(3);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // Verifies deprecated callback being called correctly.
|
||||
@ -533,7 +533,7 @@ public class CastPlayerTest {
|
||||
verify(mockRemoteMediaClient)
|
||||
.queueInsertItems(
|
||||
queueItemsArgumentCaptor.capture(),
|
||||
eq((int) mediaItems.get(index).playbackProperties.tag),
|
||||
eq((int) mediaItems.get(index).localConfiguration.tag),
|
||||
any());
|
||||
|
||||
MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue();
|
||||
@ -677,7 +677,7 @@ public class CastPlayerTest {
|
||||
Timeline currentTimeline = castPlayer.getCurrentTimeline();
|
||||
for (int i = 0; i < mediaItems.size(); i++) {
|
||||
assertThat(currentTimeline.getWindow(/* windowIndex= */ i, window).uid)
|
||||
.isEqualTo(mediaItems.get(i).playbackProperties.tag);
|
||||
.isEqualTo(mediaItems.get(i).localConfiguration.tag);
|
||||
}
|
||||
}
|
||||
|
||||
@ -696,8 +696,8 @@ public class CastPlayerTest {
|
||||
.onMediaItemTransition(
|
||||
mediaItemCaptor.capture(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED));
|
||||
inOrder.verify(mockListener, never()).onMediaItemTransition(any(), anyInt());
|
||||
assertThat(mediaItemCaptor.getValue().playbackProperties.tag)
|
||||
.isEqualTo(mediaItem.playbackProperties.tag);
|
||||
assertThat(mediaItemCaptor.getValue().localConfiguration.tag)
|
||||
.isEqualTo(mediaItem.localConfiguration.tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -801,10 +801,10 @@ public class CastPlayerTest {
|
||||
.onMediaItemTransition(
|
||||
mediaItemCaptor.capture(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED));
|
||||
inOrder.verify(mockListener, never()).onMediaItemTransition(any(), anyInt());
|
||||
assertThat(mediaItemCaptor.getAllValues().get(0).playbackProperties.tag)
|
||||
.isEqualTo(mediaItem1.playbackProperties.tag);
|
||||
assertThat(mediaItemCaptor.getAllValues().get(1).playbackProperties.tag)
|
||||
.isEqualTo(mediaItem2.playbackProperties.tag);
|
||||
assertThat(mediaItemCaptor.getAllValues().get(0).localConfiguration.tag)
|
||||
.isEqualTo(mediaItem1.localConfiguration.tag);
|
||||
assertThat(mediaItemCaptor.getAllValues().get(1).localConfiguration.tag)
|
||||
.isEqualTo(mediaItem2.localConfiguration.tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -886,10 +886,10 @@ public class CastPlayerTest {
|
||||
mediaItemCaptor.capture(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED));
|
||||
inOrder.verify(mockListener, never()).onMediaItemTransition(any(), anyInt());
|
||||
List<MediaItem> capturedMediaItems = mediaItemCaptor.getAllValues();
|
||||
assertThat(capturedMediaItems.get(0).playbackProperties.tag)
|
||||
.isEqualTo(mediaItem1.playbackProperties.tag);
|
||||
assertThat(capturedMediaItems.get(1).playbackProperties.tag)
|
||||
.isEqualTo(mediaItem2.playbackProperties.tag);
|
||||
assertThat(capturedMediaItems.get(0).localConfiguration.tag)
|
||||
.isEqualTo(mediaItem1.localConfiguration.tag);
|
||||
assertThat(capturedMediaItems.get(1).localConfiguration.tag)
|
||||
.isEqualTo(mediaItem2.localConfiguration.tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1012,8 +1012,8 @@ public class CastPlayerTest {
|
||||
.onMediaItemTransition(
|
||||
mediaItemCaptor.capture(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_SEEK));
|
||||
inOrder.verify(mockListener, never()).onPositionDiscontinuity(any(), any(), anyInt());
|
||||
assertThat(mediaItemCaptor.getValue().playbackProperties.tag)
|
||||
.isEqualTo(mediaItem2.playbackProperties.tag);
|
||||
assertThat(mediaItemCaptor.getValue().localConfiguration.tag)
|
||||
.isEqualTo(mediaItem2.localConfiguration.tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1144,7 +1144,7 @@ public class CastPlayerTest {
|
||||
.onMediaItemTransition(
|
||||
mediaItemCaptor.capture(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_AUTO));
|
||||
inOrder.verify(mockListener, never()).onMediaItemTransition(any(), anyInt());
|
||||
assertThat(mediaItemCaptor.getValue().playbackProperties.tag).isEqualTo(2);
|
||||
assertThat(mediaItemCaptor.getValue().localConfiguration.tag).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1788,9 +1788,9 @@ public class CastPlayerTest {
|
||||
int streamType = streamTypes[i];
|
||||
long durationMs = durationsMs[i];
|
||||
MediaInfo.Builder mediaInfoBuilder =
|
||||
new MediaInfo.Builder(mediaItem.playbackProperties.uri.toString())
|
||||
new MediaInfo.Builder(mediaItem.localConfiguration.uri.toString())
|
||||
.setStreamType(streamType)
|
||||
.setContentType(mediaItem.playbackProperties.mimeType);
|
||||
.setContentType(mediaItem.localConfiguration.mimeType);
|
||||
if (durationMs != C.TIME_UNSET) {
|
||||
mediaInfoBuilder.setStreamDuration(durationMs);
|
||||
}
|
||||
|
@ -96,10 +96,10 @@ public class DefaultMediaItemConverter implements MediaItemConverter {
|
||||
@Override
|
||||
public androidx.media2.common.MediaItem convertToMedia2MediaItem(MediaItem exoPlayerMediaItem) {
|
||||
Assertions.checkNotNull(exoPlayerMediaItem);
|
||||
MediaItem.PlaybackProperties playbackProperties =
|
||||
Assertions.checkNotNull(exoPlayerMediaItem.playbackProperties);
|
||||
MediaItem.LocalConfiguration localConfiguration =
|
||||
Assertions.checkNotNull(exoPlayerMediaItem.localConfiguration);
|
||||
|
||||
@Nullable Object tag = playbackProperties.tag;
|
||||
@Nullable Object tag = localConfiguration.tag;
|
||||
if (tag instanceof androidx.media2.common.MediaItem) {
|
||||
return (androidx.media2.common.MediaItem) tag;
|
||||
}
|
||||
|
@ -272,8 +272,8 @@ public abstract class Timeline implements Bundleable {
|
||||
this.uid = uid;
|
||||
this.mediaItem = mediaItem != null ? mediaItem : EMPTY_MEDIA_ITEM;
|
||||
this.tag =
|
||||
mediaItem != null && mediaItem.playbackProperties != null
|
||||
? mediaItem.playbackProperties.tag
|
||||
mediaItem != null && mediaItem.localConfiguration != null
|
||||
? mediaItem.localConfiguration.tag
|
||||
: null;
|
||||
this.manifest = manifest;
|
||||
this.presentationStartTimeMs = presentationStartTimeMs;
|
||||
|
@ -227,14 +227,14 @@ public final class Util {
|
||||
return false;
|
||||
}
|
||||
for (MediaItem mediaItem : mediaItems) {
|
||||
if (mediaItem.playbackProperties == null) {
|
||||
if (mediaItem.localConfiguration == null) {
|
||||
continue;
|
||||
}
|
||||
if (isLocalFileUri(mediaItem.playbackProperties.uri)) {
|
||||
if (isLocalFileUri(mediaItem.localConfiguration.uri)) {
|
||||
return requestExternalStoragePermission(activity);
|
||||
}
|
||||
for (int i = 0; i < mediaItem.playbackProperties.subtitles.size(); i++) {
|
||||
if (isLocalFileUri(mediaItem.playbackProperties.subtitles.get(i).uri)) {
|
||||
for (int i = 0; i < mediaItem.localConfiguration.subtitles.size(); i++) {
|
||||
if (isLocalFileUri(mediaItem.localConfiguration.subtitles.get(i).uri)) {
|
||||
return requestExternalStoragePermission(activity);
|
||||
}
|
||||
}
|
||||
@ -255,14 +255,14 @@ public final class Util {
|
||||
return true;
|
||||
}
|
||||
for (MediaItem mediaItem : mediaItems) {
|
||||
if (mediaItem.playbackProperties == null) {
|
||||
if (mediaItem.localConfiguration == null) {
|
||||
continue;
|
||||
}
|
||||
if (isTrafficRestricted(mediaItem.playbackProperties.uri)) {
|
||||
if (isTrafficRestricted(mediaItem.localConfiguration.uri)) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < mediaItem.playbackProperties.subtitles.size(); i++) {
|
||||
if (isTrafficRestricted(mediaItem.playbackProperties.subtitles.get(i).uri)) {
|
||||
for (int i = 0; i < mediaItem.localConfiguration.subtitles.size(); i++) {
|
||||
if (isTrafficRestricted(mediaItem.localConfiguration.subtitles.get(i).uri)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ public class TimelineTest {
|
||||
otherWindow.positionInFirstPeriodUs = C.TIME_UNSET;
|
||||
assertThat(window).isNotEqualTo(otherWindow);
|
||||
|
||||
window = populateWindow(mediaItem, mediaItem.playbackProperties.tag);
|
||||
window = populateWindow(mediaItem, mediaItem.localConfiguration.tag);
|
||||
otherWindow =
|
||||
otherWindow.set(
|
||||
window.uid,
|
||||
|
@ -74,9 +74,9 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
|
||||
|
||||
@Override
|
||||
public DrmSessionManager get(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
@Nullable
|
||||
MediaItem.DrmConfiguration drmConfiguration = mediaItem.playbackProperties.drmConfiguration;
|
||||
MediaItem.DrmConfiguration drmConfiguration = mediaItem.localConfiguration.drmConfiguration;
|
||||
if (drmConfiguration == null || Util.SDK_INT < 18) {
|
||||
return DrmSessionManager.DRM_UNSUPPORTED;
|
||||
}
|
||||
|
@ -321,7 +321,7 @@ public final class DownloadHelper {
|
||||
* @throws IllegalStateException If the media item is of type DASH, HLS or SmoothStreaming.
|
||||
*/
|
||||
public static DownloadHelper forMediaItem(Context context, MediaItem mediaItem) {
|
||||
Assertions.checkArgument(isProgressive(checkNotNull(mediaItem.playbackProperties)));
|
||||
Assertions.checkArgument(isProgressive(checkNotNull(mediaItem.localConfiguration)));
|
||||
return forMediaItem(
|
||||
mediaItem,
|
||||
getDefaultTrackSelectorParameters(context),
|
||||
@ -411,7 +411,7 @@ public final class DownloadHelper {
|
||||
@Nullable RenderersFactory renderersFactory,
|
||||
@Nullable DataSource.Factory dataSourceFactory,
|
||||
@Nullable DrmSessionManager drmSessionManager) {
|
||||
boolean isProgressive = isProgressive(checkNotNull(mediaItem.playbackProperties));
|
||||
boolean isProgressive = isProgressive(checkNotNull(mediaItem.localConfiguration));
|
||||
Assertions.checkArgument(isProgressive || dataSourceFactory != null);
|
||||
return new DownloadHelper(
|
||||
mediaItem,
|
||||
@ -452,7 +452,7 @@ public final class DownloadHelper {
|
||||
downloadRequest.toMediaItem(), dataSourceFactory, drmSessionManager);
|
||||
}
|
||||
|
||||
private final MediaItem.PlaybackProperties playbackProperties;
|
||||
private final MediaItem.LocalConfiguration localConfiguration;
|
||||
@Nullable private final MediaSource mediaSource;
|
||||
private final DefaultTrackSelector trackSelector;
|
||||
private final RendererCapabilities[] rendererCapabilities;
|
||||
@ -485,7 +485,7 @@ public final class DownloadHelper {
|
||||
@Nullable MediaSource mediaSource,
|
||||
DefaultTrackSelector.Parameters trackSelectorParameters,
|
||||
RendererCapabilities[] rendererCapabilities) {
|
||||
this.playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
this.localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
this.mediaSource = mediaSource;
|
||||
this.trackSelector =
|
||||
new DefaultTrackSelector(trackSelectorParameters, new DownloadTrackSelection.Factory());
|
||||
@ -726,7 +726,7 @@ public final class DownloadHelper {
|
||||
* @return The built {@link DownloadRequest}.
|
||||
*/
|
||||
public DownloadRequest getDownloadRequest(@Nullable byte[] data) {
|
||||
return getDownloadRequest(playbackProperties.uri.toString(), data);
|
||||
return getDownloadRequest(localConfiguration.uri.toString(), data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -739,13 +739,13 @@ public final class DownloadHelper {
|
||||
*/
|
||||
public DownloadRequest getDownloadRequest(String id, @Nullable byte[] data) {
|
||||
DownloadRequest.Builder requestBuilder =
|
||||
new DownloadRequest.Builder(id, playbackProperties.uri)
|
||||
.setMimeType(playbackProperties.mimeType)
|
||||
new DownloadRequest.Builder(id, localConfiguration.uri)
|
||||
.setMimeType(localConfiguration.mimeType)
|
||||
.setKeySetId(
|
||||
playbackProperties.drmConfiguration != null
|
||||
? playbackProperties.drmConfiguration.getKeySetId()
|
||||
localConfiguration.drmConfiguration != null
|
||||
? localConfiguration.drmConfiguration.getKeySetId()
|
||||
: null)
|
||||
.setCustomCacheKey(playbackProperties.customCacheKey)
|
||||
.setCustomCacheKey(localConfiguration.customCacheKey)
|
||||
.setData(data);
|
||||
if (mediaSource == null) {
|
||||
return requestBuilder.build();
|
||||
@ -896,9 +896,9 @@ public final class DownloadHelper {
|
||||
.createMediaSource(mediaItem);
|
||||
}
|
||||
|
||||
private static boolean isProgressive(MediaItem.PlaybackProperties playbackProperties) {
|
||||
private static boolean isProgressive(MediaItem.LocalConfiguration localConfiguration) {
|
||||
return Util.inferContentTypeForUriAndMimeType(
|
||||
playbackProperties.uri, playbackProperties.mimeType)
|
||||
localConfiguration.uri, localConfiguration.mimeType)
|
||||
== C.TYPE_OTHER;
|
||||
}
|
||||
|
||||
|
@ -69,11 +69,11 @@ public final class ProgressiveDownloader implements Downloader {
|
||||
public ProgressiveDownloader(
|
||||
MediaItem mediaItem, CacheDataSource.Factory cacheDataSourceFactory, Executor executor) {
|
||||
this.executor = Assertions.checkNotNull(executor);
|
||||
Assertions.checkNotNull(mediaItem.playbackProperties);
|
||||
Assertions.checkNotNull(mediaItem.localConfiguration);
|
||||
dataSpec =
|
||||
new DataSpec.Builder()
|
||||
.setUri(mediaItem.playbackProperties.uri)
|
||||
.setKey(mediaItem.playbackProperties.customCacheKey)
|
||||
.setUri(mediaItem.localConfiguration.uri)
|
||||
.setKey(mediaItem.localConfiguration.customCacheKey)
|
||||
.setFlags(DataSpec.FLAG_ALLOW_CACHE_FRAGMENTATION)
|
||||
.build();
|
||||
dataSource = cacheDataSourceFactory.createDataSourceForDownloading();
|
||||
|
@ -110,10 +110,10 @@ public abstract class SegmentDownloader<M extends FilterableManifest<M>> impleme
|
||||
Parser<M> manifestParser,
|
||||
CacheDataSource.Factory cacheDataSourceFactory,
|
||||
Executor executor) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
this.manifestDataSpec = getCompressibleDataSpec(mediaItem.playbackProperties.uri);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
this.manifestDataSpec = getCompressibleDataSpec(mediaItem.localConfiguration.uri);
|
||||
this.manifestParser = manifestParser;
|
||||
this.streamKeys = new ArrayList<>(mediaItem.playbackProperties.streamKeys);
|
||||
this.streamKeys = new ArrayList<>(mediaItem.localConfiguration.streamKeys);
|
||||
this.cacheDataSourceFactory = cacheDataSourceFactory;
|
||||
this.executor = executor;
|
||||
cache = Assertions.checkNotNull(cacheDataSourceFactory.getCache());
|
||||
|
@ -54,23 +54,23 @@ import java.util.List;
|
||||
* factories:
|
||||
*
|
||||
* <ul>
|
||||
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#uri uri}
|
||||
* ends in '.mpd' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType field} is
|
||||
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.LocalConfiguration#uri uri}
|
||||
* ends in '.mpd' or if its {@link MediaItem.LocalConfiguration#mimeType mimeType field} is
|
||||
* explicitly set to {@link MimeTypes#APPLICATION_MPD} (Requires the <a
|
||||
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-dash module
|
||||
* to be added</a> to the app).
|
||||
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#uri uri}
|
||||
* ends in '.m3u8' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType field} is
|
||||
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.LocalConfiguration#uri uri}
|
||||
* ends in '.m3u8' or if its {@link MediaItem.LocalConfiguration#mimeType mimeType field} is
|
||||
* explicitly set to {@link MimeTypes#APPLICATION_M3U8} (Requires the <a
|
||||
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-hls module to
|
||||
* be added</a> to the app).
|
||||
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#uri uri}
|
||||
* ends in '.ism', '.ism/Manifest' or if its {@link MediaItem.PlaybackProperties#mimeType
|
||||
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.LocalConfiguration#uri uri}
|
||||
* ends in '.ism', '.ism/Manifest' or if its {@link MediaItem.LocalConfiguration#mimeType
|
||||
* mimeType field} is explicitly set to {@link MimeTypes#APPLICATION_SS} (Requires the <a
|
||||
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">
|
||||
* exoplayer-smoothstreaming module to be added</a> to the app).
|
||||
* <li>{@link ProgressiveMediaSource.Factory} serves as a fallback if the item's {@link
|
||||
* MediaItem.PlaybackProperties#uri uri} doesn't match one of the above. It tries to infer the
|
||||
* MediaItem.LocalConfiguration#uri uri} doesn't match one of the above. It tries to infer the
|
||||
* required extractor by using the {@link DefaultExtractorsFactory} or the {@link
|
||||
* ExtractorsFactory} provided in the constructor. An {@link UnrecognizedInputFormatException}
|
||||
* is thrown if none of the available extractors can read the stream.
|
||||
@ -78,7 +78,7 @@ import java.util.List;
|
||||
*
|
||||
* <h2>Ad support for media items with ad tag URIs</h2>
|
||||
*
|
||||
* <p>To support media items with {@link MediaItem.PlaybackProperties#adsConfiguration ads
|
||||
* <p>To support media items with {@link MediaItem.LocalConfiguration#adsConfiguration ads
|
||||
* configuration}, {@link #setAdsLoaderProvider} and {@link #setAdViewProvider} need to be called to
|
||||
* configure the factory with the required providers.
|
||||
*/
|
||||
@ -86,17 +86,17 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
|
||||
/**
|
||||
* Provides {@link AdsLoader} instances for media items that have {@link
|
||||
* MediaItem.PlaybackProperties#adsConfiguration ad tag URIs}.
|
||||
* MediaItem.LocalConfiguration#adsConfiguration ad tag URIs}.
|
||||
*/
|
||||
public interface AdsLoaderProvider {
|
||||
|
||||
/**
|
||||
* Returns an {@link AdsLoader} for the given {@link
|
||||
* MediaItem.PlaybackProperties#adsConfiguration ads configuration}, or {@code null} if no ads
|
||||
* MediaItem.LocalConfiguration#adsConfiguration ads configuration}, or {@code null} if no ads
|
||||
* loader is available for the given ads configuration.
|
||||
*
|
||||
* <p>This method is called each time a {@link MediaSource} is created from a {@link MediaItem}
|
||||
* that defines an {@link MediaItem.PlaybackProperties#adsConfiguration ads configuration}.
|
||||
* that defines an {@link MediaItem.LocalConfiguration#adsConfiguration ads configuration}.
|
||||
*/
|
||||
@Nullable
|
||||
AdsLoader getAdsLoader(MediaItem.AdsConfiguration adsConfiguration);
|
||||
@ -173,7 +173,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
|
||||
/**
|
||||
* Sets whether a {@link ProgressiveMediaSource} or {@link SingleSampleMediaSource} is constructed
|
||||
* to handle {@link MediaItem.PlaybackProperties#subtitles}. Defaults to false (i.e. {@link
|
||||
* to handle {@link MediaItem.LocalConfiguration#subtitles}. Defaults to false (i.e. {@link
|
||||
* SingleSampleMediaSource}.
|
||||
*
|
||||
* <p>This method is experimental, and will be renamed or removed in a future release.
|
||||
@ -190,7 +190,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
|
||||
/**
|
||||
* Sets the {@link AdsLoaderProvider} that provides {@link AdsLoader} instances for media items
|
||||
* that have {@link MediaItem.PlaybackProperties#adsConfiguration ads configurations}.
|
||||
* that have {@link MediaItem.LocalConfiguration#adsConfiguration ads configurations}.
|
||||
*
|
||||
* @param adsLoaderProvider A provider for {@link AdsLoader} instances.
|
||||
* @return This factory, for convenience.
|
||||
@ -341,11 +341,11 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
|
||||
@Override
|
||||
public MediaSource createMediaSource(MediaItem mediaItem) {
|
||||
Assertions.checkNotNull(mediaItem.playbackProperties);
|
||||
Assertions.checkNotNull(mediaItem.localConfiguration);
|
||||
@C.ContentType
|
||||
int type =
|
||||
Util.inferContentTypeForUriAndMimeType(
|
||||
mediaItem.playbackProperties.uri, mediaItem.playbackProperties.mimeType);
|
||||
mediaItem.localConfiguration.uri, mediaItem.localConfiguration.mimeType);
|
||||
@Nullable MediaSourceFactory mediaSourceFactory = mediaSourceFactories.get(type);
|
||||
Assertions.checkNotNull(
|
||||
mediaSourceFactory, "No suitable media source factory found for content type: " + type);
|
||||
@ -375,7 +375,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
|
||||
MediaSource mediaSource = mediaSourceFactory.createMediaSource(mediaItem);
|
||||
|
||||
List<MediaItem.Subtitle> subtitles = castNonNull(mediaItem.playbackProperties).subtitles;
|
||||
List<MediaItem.Subtitle> subtitles = castNonNull(mediaItem.localConfiguration).subtitles;
|
||||
if (!subtitles.isEmpty()) {
|
||||
MediaSource[] mediaSources = new MediaSource[subtitles.size() + 1];
|
||||
mediaSources[0] = mediaSource;
|
||||
@ -434,9 +434,9 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
}
|
||||
|
||||
private MediaSource maybeWrapWithAdsMediaSource(MediaItem mediaItem, MediaSource mediaSource) {
|
||||
Assertions.checkNotNull(mediaItem.playbackProperties);
|
||||
Assertions.checkNotNull(mediaItem.localConfiguration);
|
||||
@Nullable
|
||||
MediaItem.AdsConfiguration adsConfiguration = mediaItem.playbackProperties.adsConfiguration;
|
||||
MediaItem.AdsConfiguration adsConfiguration = mediaItem.localConfiguration.adsConfiguration;
|
||||
if (adsConfiguration == null) {
|
||||
return mediaSource;
|
||||
}
|
||||
@ -460,7 +460,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
/* adsId= */ adsConfiguration.adsId != null
|
||||
? adsConfiguration.adsId
|
||||
: ImmutableList.of(
|
||||
mediaItem.mediaId, mediaItem.playbackProperties.uri, adsConfiguration.adTagUri),
|
||||
mediaItem.mediaId, mediaItem.localConfiguration.uri, adsConfiguration.adTagUri),
|
||||
/* adMediaSourceFactory= */ this,
|
||||
adsLoader,
|
||||
adViewProvider);
|
||||
|
@ -34,7 +34,7 @@ import java.util.List;
|
||||
/** Factory for creating {@link MediaSource MediaSources} from {@link MediaItem MediaItems}. */
|
||||
public interface MediaSourceFactory {
|
||||
|
||||
/** @deprecated Use {@link MediaItem.PlaybackProperties#streamKeys} instead. */
|
||||
/** @deprecated Use {@link MediaItem.LocalConfiguration#streamKeys} instead. */
|
||||
@Deprecated
|
||||
default MediaSourceFactory setStreamKeys(@Nullable List<StreamKey> streamKeys) {
|
||||
return this;
|
||||
|
@ -215,14 +215,14 @@ public final class ProgressiveMediaSource extends BaseMediaSource
|
||||
*
|
||||
* @param mediaItem The {@link MediaItem}.
|
||||
* @return The new {@link ProgressiveMediaSource}.
|
||||
* @throws NullPointerException if {@link MediaItem#playbackProperties} is {@code null}.
|
||||
* @throws NullPointerException if {@link MediaItem#localConfiguration} is {@code null}.
|
||||
*/
|
||||
@Override
|
||||
public ProgressiveMediaSource createMediaSource(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
boolean needsTag = mediaItem.playbackProperties.tag == null && tag != null;
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
boolean needsTag = mediaItem.localConfiguration.tag == null && tag != null;
|
||||
boolean needsCustomCacheKey =
|
||||
mediaItem.playbackProperties.customCacheKey == null && customCacheKey != null;
|
||||
mediaItem.localConfiguration.customCacheKey == null && customCacheKey != null;
|
||||
if (needsTag && needsCustomCacheKey) {
|
||||
mediaItem = mediaItem.buildUpon().setTag(tag).setCustomCacheKey(customCacheKey).build();
|
||||
} else if (needsTag) {
|
||||
@ -252,7 +252,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
|
||||
public static final int DEFAULT_LOADING_CHECK_INTERVAL_BYTES = 1024 * 1024;
|
||||
|
||||
private final MediaItem mediaItem;
|
||||
private final MediaItem.PlaybackProperties playbackProperties;
|
||||
private final MediaItem.LocalConfiguration localConfiguration;
|
||||
private final DataSource.Factory dataSourceFactory;
|
||||
private final ProgressiveMediaExtractor.Factory progressiveMediaExtractorFactory;
|
||||
private final DrmSessionManager drmSessionManager;
|
||||
@ -272,7 +272,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
|
||||
DrmSessionManager drmSessionManager,
|
||||
LoadErrorHandlingPolicy loadableLoadErrorHandlingPolicy,
|
||||
int continueLoadingCheckIntervalBytes) {
|
||||
this.playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
this.localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
this.mediaItem = mediaItem;
|
||||
this.dataSourceFactory = dataSourceFactory;
|
||||
this.progressiveMediaExtractorFactory = progressiveMediaExtractorFactory;
|
||||
@ -307,7 +307,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
|
||||
dataSource.addTransferListener(transferListener);
|
||||
}
|
||||
return new ProgressiveMediaPeriod(
|
||||
playbackProperties.uri,
|
||||
localConfiguration.uri,
|
||||
dataSource,
|
||||
progressiveMediaExtractorFactory.createProgressiveMediaExtractor(),
|
||||
drmSessionManager,
|
||||
@ -316,7 +316,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
|
||||
createEventDispatcher(id),
|
||||
this,
|
||||
allocator,
|
||||
playbackProperties.customCacheKey,
|
||||
localConfiguration.customCacheKey,
|
||||
continueLoadingCheckIntervalBytes);
|
||||
}
|
||||
|
||||
|
@ -58,8 +58,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
||||
/**
|
||||
* Sets a tag for the media source which will be published in the {@link
|
||||
* com.google.android.exoplayer2.Timeline} of the source as {@link
|
||||
* com.google.android.exoplayer2.MediaItem.PlaybackProperties#tag
|
||||
* Window#mediaItem.playbackProperties.tag}.
|
||||
* MediaItem.LocalConfiguration#tag Window#mediaItem.localConfiguration.tag}.
|
||||
*
|
||||
* @param tag A tag for the media source.
|
||||
* @return This factory, for convenience.
|
||||
|
@ -61,8 +61,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
||||
|
||||
/**
|
||||
* Sets a tag for the media source which will be published in the {@link Timeline} of the source
|
||||
* as {@link com.google.android.exoplayer2.MediaItem.PlaybackProperties#tag
|
||||
* Window#mediaItem.playbackProperties.tag}.
|
||||
* as {@link MediaItem.LocalConfiguration#tag Window#mediaItem.localConfiguration.tag}.
|
||||
*
|
||||
* @param tag A tag for the media source.
|
||||
* @return This factory, for convenience.
|
||||
|
@ -314,10 +314,10 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> {
|
||||
MediaItem.Builder adMediaItem = new MediaItem.Builder().setUri(adUri);
|
||||
// Propagate the content's DRM config into the ad media source.
|
||||
@Nullable
|
||||
MediaItem.PlaybackProperties contentPlaybackProperties =
|
||||
contentMediaSource.getMediaItem().playbackProperties;
|
||||
if (contentPlaybackProperties != null) {
|
||||
adMediaItem.setDrmConfiguration(contentPlaybackProperties.drmConfiguration);
|
||||
MediaItem.LocalConfiguration contentLocalConfiguration =
|
||||
contentMediaSource.getMediaItem().localConfiguration;
|
||||
if (contentLocalConfiguration != null) {
|
||||
adMediaItem.setDrmConfiguration(contentLocalConfiguration.drmConfiguration);
|
||||
}
|
||||
MediaSource adMediaSource = adMediaSourceFactory.createMediaSource(adMediaItem.build());
|
||||
adMediaSourceHolder.initializeWithMediaSource(adMediaSource, adUri);
|
||||
|
@ -7953,11 +7953,11 @@ public final class ExoPlayerTest {
|
||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||
.blockUntilEnded(TIMEOUT_MS);
|
||||
|
||||
assertThat(currentMediaItems.get(0).playbackProperties.uri.toString())
|
||||
assertThat(currentMediaItems.get(0).localConfiguration.uri.toString())
|
||||
.isEqualTo("http://foo.bar/fake1");
|
||||
assertThat(currentMediaItems.get(1).playbackProperties.uri.toString())
|
||||
assertThat(currentMediaItems.get(1).localConfiguration.uri.toString())
|
||||
.isEqualTo("http://foo.bar/fake2");
|
||||
assertThat(currentMediaItems.get(2).playbackProperties.uri.toString())
|
||||
assertThat(currentMediaItems.get(2).localConfiguration.uri.toString())
|
||||
.isEqualTo("http://foo.bar/fake3");
|
||||
assertThat(mediaItemsInTimeline).containsExactlyElementsIn(currentMediaItems);
|
||||
}
|
||||
@ -9767,7 +9767,7 @@ public final class ExoPlayerTest {
|
||||
assertThat(oldPositionInfo.periodUid).isEqualTo(newPositionInfo.periodUid);
|
||||
assertThat(oldPositionInfo.periodIndex).isEqualTo(newPositionInfo.periodIndex);
|
||||
assertThat(oldPositionInfo.windowIndex).isEqualTo(newPositionInfo.windowIndex);
|
||||
assertThat(oldPositionInfo.mediaItem.playbackProperties.tag).isEqualTo(1);
|
||||
assertThat(oldPositionInfo.mediaItem.localConfiguration.tag).isEqualTo(1);
|
||||
assertThat(oldPositionInfo.windowUid).isEqualTo(newPositionInfo.windowUid);
|
||||
assertThat(oldPositionInfo.positionMs).isEqualTo(10_000);
|
||||
assertThat(oldPositionInfo.contentPositionMs).isEqualTo(10_000);
|
||||
@ -9789,7 +9789,7 @@ public final class ExoPlayerTest {
|
||||
assertThat(oldPositionInfo.periodUid).isEqualTo(newPositionInfo.periodUid);
|
||||
assertThat(oldPositionInfo.periodIndex).isEqualTo(newPositionInfo.periodIndex);
|
||||
assertThat(oldPositionInfo.windowIndex).isEqualTo(newPositionInfo.windowIndex);
|
||||
assertThat(oldPositionInfo.mediaItem.playbackProperties.tag).isEqualTo(1);
|
||||
assertThat(oldPositionInfo.mediaItem.localConfiguration.tag).isEqualTo(1);
|
||||
assertThat(oldPositionInfo.windowUid).isEqualTo(newPositionInfo.windowUid);
|
||||
assertThat(oldPositionInfo.positionMs).isEqualTo(10_000);
|
||||
assertThat(oldPositionInfo.contentPositionMs).isEqualTo(10_000);
|
||||
@ -9809,7 +9809,7 @@ public final class ExoPlayerTest {
|
||||
oldPositionInfo = oldPosition.getValue();
|
||||
newPositionInfo = newPosition.getValue();
|
||||
assertThat(oldPositionInfo.windowIndex).isEqualTo(1);
|
||||
assertThat(oldPositionInfo.mediaItem.playbackProperties.tag).isEqualTo(2);
|
||||
assertThat(oldPositionInfo.mediaItem.localConfiguration.tag).isEqualTo(2);
|
||||
assertThat(oldPositionInfo.windowUid).isNotEqualTo(newPositionInfo.windowUid);
|
||||
assertThat(oldPositionInfo.positionMs).isEqualTo(20_000);
|
||||
assertThat(oldPositionInfo.contentPositionMs).isEqualTo(20_000);
|
||||
@ -10131,7 +10131,7 @@ public final class ExoPlayerTest {
|
||||
assertThat(oldPosition.getValue().windowUid)
|
||||
.isEqualTo(player.getCurrentTimeline().getWindow(0, window).uid);
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(0);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-0");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-0");
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(10_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(10_000);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
@ -10139,7 +10139,7 @@ public final class ExoPlayerTest {
|
||||
assertThat(newPosition.getValue().windowUid)
|
||||
.isEqualTo(player.getCurrentTimeline().getWindow(1, window).uid);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(1);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-1");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-1");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
@ -10159,13 +10159,13 @@ public final class ExoPlayerTest {
|
||||
assertThat(newPosition.getValue().windowUid)
|
||||
.isEqualTo(player.getCurrentTimeline().getWindow(2, window).uid);
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(1);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-1");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-1");
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(15_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(15_000);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
assertThat(oldPosition.getValue().adIndexInAdGroup).isEqualTo(-1);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
@ -10179,14 +10179,14 @@ public final class ExoPlayerTest {
|
||||
newPosition.capture(),
|
||||
eq(Player.DISCONTINUITY_REASON_AUTO_TRANSITION));
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().windowUid).isEqualTo(lastNewWindowUid);
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(20_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(20_000);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
assertThat(oldPosition.getValue().adIndexInAdGroup).isEqualTo(-1);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(20_000);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(0);
|
||||
@ -10201,14 +10201,14 @@ public final class ExoPlayerTest {
|
||||
eq(Player.DISCONTINUITY_REASON_AUTO_TRANSITION));
|
||||
assertThat(oldPosition.getValue().windowUid).isEqualTo(lastNewWindowUid);
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(5_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(20_000);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(0);
|
||||
assertThat(oldPosition.getValue().adIndexInAdGroup).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().windowUid).isEqualTo(oldPosition.getValue().windowUid);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(19_999);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(19_999);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
@ -10226,14 +10226,14 @@ public final class ExoPlayerTest {
|
||||
.onMediaItemTransition(any(), eq(Player.MEDIA_ITEM_TRANSITION_REASON_AUTO));
|
||||
assertThat(oldPosition.getValue().windowUid).isEqualTo(lastNewWindowUid);
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(2);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-2");
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(20_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(20_000);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
assertThat(oldPosition.getValue().adIndexInAdGroup).isEqualTo(-1);
|
||||
assertThat(newPosition.getValue().windowUid).isNotEqualTo(oldPosition.getValue().windowUid);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(3);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-3");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-3");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(0);
|
||||
@ -10248,14 +10248,14 @@ public final class ExoPlayerTest {
|
||||
eq(Player.DISCONTINUITY_REASON_AUTO_TRANSITION));
|
||||
assertThat(oldPosition.getValue().windowUid).isEqualTo(lastNewWindowUid);
|
||||
assertThat(oldPosition.getValue().windowIndex).isEqualTo(3);
|
||||
assertThat(oldPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-3");
|
||||
assertThat(oldPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-3");
|
||||
assertThat(oldPosition.getValue().positionMs).isEqualTo(5_000);
|
||||
assertThat(oldPosition.getValue().contentPositionMs).isEqualTo(0);
|
||||
assertThat(oldPosition.getValue().adGroupIndex).isEqualTo(0);
|
||||
assertThat(oldPosition.getValue().adIndexInAdGroup).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().windowUid).isEqualTo(oldPosition.getValue().windowUid);
|
||||
assertThat(newPosition.getValue().windowIndex).isEqualTo(3);
|
||||
assertThat(newPosition.getValue().mediaItem.playbackProperties.tag).isEqualTo("id-3");
|
||||
assertThat(newPosition.getValue().mediaItem.localConfiguration.tag).isEqualTo("id-3");
|
||||
assertThat(newPosition.getValue().positionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().contentPositionMs).isEqualTo(0);
|
||||
assertThat(newPosition.getValue().adGroupIndex).isEqualTo(-1);
|
||||
@ -10379,14 +10379,14 @@ public final class ExoPlayerTest {
|
||||
any(), newPositionArgumentCaptor.capture(), eq(Player.DISCONTINUITY_REASON_REMOVE));
|
||||
// The state at auto-transition event time.
|
||||
assertThat(mediaItemCount[0]).isEqualTo(2);
|
||||
assertThat(currentMediaItems[0].playbackProperties.tag).isEqualTo("id-1");
|
||||
assertThat(currentMediaItems[0].localConfiguration.tag).isEqualTo("id-1");
|
||||
// The masked state after id-1 has been removed.
|
||||
assertThat(mediaItemCount[1]).isEqualTo(1);
|
||||
assertThat(currentMediaItems[1].playbackProperties.tag).isEqualTo("id-0");
|
||||
assertThat(currentMediaItems[1].localConfiguration.tag).isEqualTo("id-0");
|
||||
// PositionInfo reports the media item at event time.
|
||||
assertThat(newPositionArgumentCaptor.getAllValues().get(0).mediaItem.playbackProperties.tag)
|
||||
assertThat(newPositionArgumentCaptor.getAllValues().get(0).mediaItem.localConfiguration.tag)
|
||||
.isEqualTo("id-1");
|
||||
assertThat(newPositionArgumentCaptor.getAllValues().get(1).mediaItem.playbackProperties.tag)
|
||||
assertThat(newPositionArgumentCaptor.getAllValues().get(1).mediaItem.localConfiguration.tag)
|
||||
.isEqualTo("id-0");
|
||||
player.release();
|
||||
}
|
||||
@ -10717,20 +10717,20 @@ public final class ExoPlayerTest {
|
||||
List<Player.PositionInfo> newPositions = newPosition.getAllValues();
|
||||
assertThat(oldPositions.get(0).windowUid).isEqualTo(newPositions.get(0).windowUid);
|
||||
assertThat(newPositions.get(0).windowIndex).isEqualTo(0);
|
||||
assertThat(newPositions.get(0).mediaItem.playbackProperties.tag).isEqualTo("id-0");
|
||||
assertThat(newPositions.get(0).mediaItem.localConfiguration.tag).isEqualTo("id-0");
|
||||
assertThat(oldPositions.get(0).positionMs).isIn(Range.closed(4980L, 5000L));
|
||||
assertThat(oldPositions.get(0).contentPositionMs).isIn(Range.closed(4980L, 5000L));
|
||||
assertThat(oldPositions.get(0).windowIndex).isEqualTo(0);
|
||||
assertThat(oldPositions.get(0).mediaItem.playbackProperties.tag).isEqualTo("id-0");
|
||||
assertThat(oldPositions.get(0).mediaItem.localConfiguration.tag).isEqualTo("id-0");
|
||||
assertThat(newPositions.get(0).positionMs).isEqualTo(7_000);
|
||||
assertThat(newPositions.get(0).contentPositionMs).isEqualTo(7_000);
|
||||
assertThat(oldPositions.get(1).windowUid).isNotEqualTo(newPositions.get(1).windowUid);
|
||||
assertThat(oldPositions.get(1).windowIndex).isEqualTo(0);
|
||||
assertThat(oldPositions.get(1).mediaItem.playbackProperties.tag).isEqualTo("id-0");
|
||||
assertThat(oldPositions.get(1).mediaItem.localConfiguration.tag).isEqualTo("id-0");
|
||||
assertThat(oldPositions.get(1).positionMs).isEqualTo(7_000);
|
||||
assertThat(oldPositions.get(1).contentPositionMs).isEqualTo(7_000);
|
||||
assertThat(newPositions.get(1).windowIndex).isEqualTo(1);
|
||||
assertThat(newPositions.get(1).mediaItem.playbackProperties.tag).isEqualTo("id-1");
|
||||
assertThat(newPositions.get(1).mediaItem.localConfiguration.tag).isEqualTo("id-1");
|
||||
assertThat(newPositions.get(1).positionMs).isEqualTo(1_000);
|
||||
assertThat(newPositions.get(1).contentPositionMs).isEqualTo(1_000);
|
||||
player.release();
|
||||
@ -11032,7 +11032,7 @@ public final class ExoPlayerTest {
|
||||
List<Player.PositionInfo> oldPositions = oldPosition.getAllValues();
|
||||
List<Player.PositionInfo> newPositions = newPosition.getAllValues();
|
||||
assertThat(oldPositions.get(0).windowIndex).isEqualTo(0);
|
||||
assertThat(oldPositions.get(0).mediaItem.playbackProperties.tag).isEqualTo(123);
|
||||
assertThat(oldPositions.get(0).mediaItem.localConfiguration.tag).isEqualTo(123);
|
||||
assertThat(oldPositions.get(0).positionMs).isIn(Range.closed(4980L, 5000L));
|
||||
assertThat(oldPositions.get(0).contentPositionMs).isIn(Range.closed(4980L, 5000L));
|
||||
assertThat(newPositions.get(0).windowUid).isNull();
|
||||
|
@ -400,10 +400,10 @@ public class DownloadHelperTest {
|
||||
|
||||
DownloadRequest downloadRequest = downloadHelper.getDownloadRequest(data);
|
||||
|
||||
assertThat(downloadRequest.uri).isEqualTo(testMediaItem.playbackProperties.uri);
|
||||
assertThat(downloadRequest.mimeType).isEqualTo(testMediaItem.playbackProperties.mimeType);
|
||||
assertThat(downloadRequest.uri).isEqualTo(testMediaItem.localConfiguration.uri);
|
||||
assertThat(downloadRequest.mimeType).isEqualTo(testMediaItem.localConfiguration.mimeType);
|
||||
assertThat(downloadRequest.customCacheKey)
|
||||
.isEqualTo(testMediaItem.playbackProperties.customCacheKey);
|
||||
.isEqualTo(testMediaItem.localConfiguration.customCacheKey);
|
||||
assertThat(downloadRequest.data).isEqualTo(data);
|
||||
assertThat(downloadRequest.streamKeys)
|
||||
.containsExactly(
|
||||
|
@ -38,8 +38,8 @@ public class SilenceMediaSourceTest {
|
||||
|
||||
assertThat(mediaItem).isNotNull();
|
||||
assertThat(mediaItem.mediaId).isEqualTo(SilenceMediaSource.MEDIA_ID);
|
||||
assertThat(mediaItem.playbackProperties.uri).isEqualTo(Uri.EMPTY);
|
||||
assertThat(mediaItem.playbackProperties.mimeType).isEqualTo(MimeTypes.AUDIO_RAW);
|
||||
assertThat(mediaItem.localConfiguration.uri).isEqualTo(Uri.EMPTY);
|
||||
assertThat(mediaItem.localConfiguration.mimeType).isEqualTo(MimeTypes.AUDIO_RAW);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -49,7 +49,7 @@ public class SilenceMediaSourceTest {
|
||||
SilenceMediaSource mediaSource =
|
||||
new SilenceMediaSource.Factory().setTag(tag).setDurationUs(1_000_000).createMediaSource();
|
||||
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -59,7 +59,7 @@ public class SilenceMediaSourceTest {
|
||||
SilenceMediaSource mediaSource =
|
||||
new SilenceMediaSource.Factory().setTag(tag).setDurationUs(1_000_000).createMediaSource();
|
||||
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -82,7 +82,7 @@ public class SilenceMediaSourceTest {
|
||||
|
||||
assertThat(mediaItem).isNotNull();
|
||||
assertThat(mediaItem.mediaId).isEqualTo(SilenceMediaSource.MEDIA_ID);
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.uri).isEqualTo(Uri.EMPTY);
|
||||
assertThat(mediaItem.playbackProperties.mimeType).isEqualTo(MimeTypes.AUDIO_RAW);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.uri).isEqualTo(Uri.EMPTY);
|
||||
assertThat(mediaItem.localConfiguration.mimeType).isEqualTo(MimeTypes.AUDIO_RAW);
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ public final class SinglePeriodTimelineTest {
|
||||
new MediaItem.Builder().setUri(Uri.EMPTY).setTag(null).build());
|
||||
|
||||
assertThat(timeline.getWindow(/* windowIndex= */ 0, window).tag).isNull();
|
||||
assertThat(timeline.getWindow(/* windowIndex= */ 0, window).mediaItem.playbackProperties.tag)
|
||||
assertThat(timeline.getWindow(/* windowIndex= */ 0, window).mediaItem.localConfiguration.tag)
|
||||
.isNull();
|
||||
assertThat(timeline.getPeriod(/* periodIndex= */ 0, period, /* setIds= */ false).id).isNull();
|
||||
assertThat(timeline.getPeriod(/* periodIndex= */ 0, period, /* setIds= */ true).id).isNull();
|
||||
@ -143,7 +143,7 @@ public final class SinglePeriodTimelineTest {
|
||||
Window window = timeline.getWindow(/* windowIndex= */ 0, this.window);
|
||||
|
||||
assertThat(window.mediaItem).isEqualTo(mediaItem);
|
||||
assertThat(window.tag).isEqualTo(mediaItem.playbackProperties.tag);
|
||||
assertThat(window.tag).isEqualTo(mediaItem.localConfiguration.tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -315,10 +315,10 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
Assertions.checkArgument(!manifest.dynamic);
|
||||
MediaItem.Builder mediaItemBuilder =
|
||||
mediaItem.buildUpon().setMimeType(MimeTypes.APPLICATION_MPD);
|
||||
if (mediaItem.playbackProperties == null) {
|
||||
if (mediaItem.localConfiguration == null) {
|
||||
mediaItemBuilder.setUri(Uri.EMPTY);
|
||||
}
|
||||
if (mediaItem.playbackProperties == null || mediaItem.playbackProperties.tag == null) {
|
||||
if (mediaItem.localConfiguration == null || mediaItem.localConfiguration.tag == null) {
|
||||
mediaItemBuilder.setTag(tag);
|
||||
}
|
||||
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
|
||||
@ -329,12 +329,12 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
.setTargetOffsetMs(targetLiveOffsetOverrideMs)
|
||||
.build());
|
||||
}
|
||||
if (mediaItem.playbackProperties == null
|
||||
|| mediaItem.playbackProperties.streamKeys.isEmpty()) {
|
||||
if (mediaItem.localConfiguration == null
|
||||
|| mediaItem.localConfiguration.streamKeys.isEmpty()) {
|
||||
mediaItemBuilder.setStreamKeys(streamKeys);
|
||||
}
|
||||
mediaItem = mediaItemBuilder.build();
|
||||
if (!checkNotNull(mediaItem.playbackProperties).streamKeys.isEmpty()) {
|
||||
if (!checkNotNull(mediaItem.localConfiguration).streamKeys.isEmpty()) {
|
||||
manifest = manifest.copy(streamKeys);
|
||||
}
|
||||
return new DashMediaSource(
|
||||
@ -367,26 +367,26 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
*
|
||||
* @param mediaItem The media item of the dash stream.
|
||||
* @return The new {@link DashMediaSource}.
|
||||
* @throws NullPointerException if {@link MediaItem#playbackProperties} is {@code null}.
|
||||
* @throws NullPointerException if {@link MediaItem#localConfiguration} is {@code null}.
|
||||
*/
|
||||
@Override
|
||||
public DashMediaSource createMediaSource(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
@Nullable ParsingLoadable.Parser<? extends DashManifest> manifestParser = this.manifestParser;
|
||||
if (manifestParser == null) {
|
||||
manifestParser = new DashManifestParser();
|
||||
}
|
||||
List<StreamKey> streamKeys =
|
||||
mediaItem.playbackProperties.streamKeys.isEmpty()
|
||||
mediaItem.localConfiguration.streamKeys.isEmpty()
|
||||
? this.streamKeys
|
||||
: mediaItem.playbackProperties.streamKeys;
|
||||
: mediaItem.localConfiguration.streamKeys;
|
||||
if (!streamKeys.isEmpty()) {
|
||||
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
||||
}
|
||||
|
||||
boolean needsTag = mediaItem.playbackProperties.tag == null && tag != null;
|
||||
boolean needsTag = mediaItem.localConfiguration.tag == null && tag != null;
|
||||
boolean needsStreamKeys =
|
||||
mediaItem.playbackProperties.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
mediaItem.localConfiguration.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
boolean needsTargetLiveOffset =
|
||||
mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET
|
||||
&& targetLiveOffsetOverrideMs != C.TIME_UNSET;
|
||||
@ -501,8 +501,8 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
long fallbackTargetLiveOffsetMs) {
|
||||
this.mediaItem = mediaItem;
|
||||
this.liveConfiguration = mediaItem.liveConfiguration;
|
||||
this.manifestUri = checkNotNull(mediaItem.playbackProperties).uri;
|
||||
this.initialManifestUri = mediaItem.playbackProperties.uri;
|
||||
this.manifestUri = checkNotNull(mediaItem.localConfiguration).uri;
|
||||
this.initialManifestUri = mediaItem.localConfiguration.uri;
|
||||
this.manifest = manifest;
|
||||
this.manifestDataSourceFactory = manifestDataSourceFactory;
|
||||
this.manifestParser = manifestParser;
|
||||
|
@ -111,9 +111,9 @@ public final class DashMediaSourceTest {
|
||||
|
||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(dashMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(dashMediaItem.playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(dashMediaItem.localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -129,9 +129,9 @@ public final class DashMediaSourceTest {
|
||||
|
||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(dashMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(dashMediaItem.playbackProperties.tag).isEqualTo(mediaItemTag);
|
||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(dashMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -146,9 +146,9 @@ public final class DashMediaSourceTest {
|
||||
|
||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(dashMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(dashMediaItem.playbackProperties.streamKeys).containsExactly(streamKey);
|
||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(dashMediaItem.localConfiguration.streamKeys).containsExactly(streamKey);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -168,9 +168,9 @@ public final class DashMediaSourceTest {
|
||||
|
||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(dashMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(dashMediaItem.playbackProperties.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(dashMediaItem.localConfiguration.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
|
||||
|
||||
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
||||
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -365,24 +365,24 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
*
|
||||
* @param mediaItem The {@link MediaItem}.
|
||||
* @return The new {@link HlsMediaSource}.
|
||||
* @throws NullPointerException if {@link MediaItem#playbackProperties} is {@code null}.
|
||||
* @throws NullPointerException if {@link MediaItem#localConfiguration} is {@code null}.
|
||||
*/
|
||||
@Override
|
||||
public HlsMediaSource createMediaSource(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
HlsPlaylistParserFactory playlistParserFactory = this.playlistParserFactory;
|
||||
List<StreamKey> streamKeys =
|
||||
mediaItem.playbackProperties.streamKeys.isEmpty()
|
||||
mediaItem.localConfiguration.streamKeys.isEmpty()
|
||||
? this.streamKeys
|
||||
: mediaItem.playbackProperties.streamKeys;
|
||||
: mediaItem.localConfiguration.streamKeys;
|
||||
if (!streamKeys.isEmpty()) {
|
||||
playlistParserFactory =
|
||||
new FilteringHlsPlaylistParserFactory(playlistParserFactory, streamKeys);
|
||||
}
|
||||
|
||||
boolean needsTag = mediaItem.playbackProperties.tag == null && tag != null;
|
||||
boolean needsTag = mediaItem.localConfiguration.tag == null && tag != null;
|
||||
boolean needsStreamKeys =
|
||||
mediaItem.playbackProperties.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
mediaItem.localConfiguration.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
if (needsTag && needsStreamKeys) {
|
||||
mediaItem = mediaItem.buildUpon().setTag(tag).setStreamKeys(streamKeys).build();
|
||||
} else if (needsTag) {
|
||||
@ -412,7 +412,7 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
}
|
||||
|
||||
private final HlsExtractorFactory extractorFactory;
|
||||
private final MediaItem.PlaybackProperties playbackProperties;
|
||||
private final MediaItem.LocalConfiguration localConfiguration;
|
||||
private final HlsDataSourceFactory dataSourceFactory;
|
||||
private final CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
|
||||
private final DrmSessionManager drmSessionManager;
|
||||
@ -439,7 +439,7 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
boolean allowChunklessPreparation,
|
||||
@MetadataType int metadataType,
|
||||
boolean useSessionKeys) {
|
||||
this.playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
this.localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
this.mediaItem = mediaItem;
|
||||
this.liveConfiguration = mediaItem.liveConfiguration;
|
||||
this.dataSourceFactory = dataSourceFactory;
|
||||
@ -465,7 +465,8 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
drmSessionManager.prepare();
|
||||
MediaSourceEventListener.EventDispatcher eventDispatcher =
|
||||
createEventDispatcher(/* mediaPeriodId= */ null);
|
||||
playlistTracker.start(playbackProperties.uri, eventDispatcher, /* listener= */ this);
|
||||
playlistTracker.start(
|
||||
localConfiguration.uri, eventDispatcher, /* primaryPlaylistListener= */ this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
|
||||
|
||||
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
||||
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -59,9 +59,9 @@ public class HlsMediaSourceTest {
|
||||
|
||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(hlsMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(hlsMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(hlsMediaItem.playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(hlsMediaItem.localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -77,9 +77,9 @@ public class HlsMediaSourceTest {
|
||||
|
||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(hlsMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(hlsMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(hlsMediaItem.playbackProperties.tag).isEqualTo(mediaItemTag);
|
||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(hlsMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -94,9 +94,9 @@ public class HlsMediaSourceTest {
|
||||
|
||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(hlsMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(hlsMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(hlsMediaItem.playbackProperties.streamKeys).containsExactly(streamKey);
|
||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(hlsMediaItem.localConfiguration.streamKeys).containsExactly(streamKey);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -116,9 +116,9 @@ public class HlsMediaSourceTest {
|
||||
|
||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(hlsMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(hlsMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
|
||||
assertThat(hlsMediaItem.playbackProperties.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
||||
assertThat(hlsMediaItem.localConfiguration.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -191,11 +191,11 @@ public final class RtspMediaSource extends BaseMediaSource {
|
||||
*
|
||||
* @param mediaItem The {@link MediaItem}.
|
||||
* @return The new {@link RtspMediaSource}.
|
||||
* @throws NullPointerException if {@link MediaItem#playbackProperties} is {@code null}.
|
||||
* @throws NullPointerException if {@link MediaItem#localConfiguration} is {@code null}.
|
||||
*/
|
||||
@Override
|
||||
public RtspMediaSource createMediaSource(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
return new RtspMediaSource(
|
||||
mediaItem,
|
||||
forceUseRtpTcp
|
||||
@ -241,7 +241,7 @@ public final class RtspMediaSource extends BaseMediaSource {
|
||||
this.mediaItem = mediaItem;
|
||||
this.rtpDataChannelFactory = rtpDataChannelFactory;
|
||||
this.userAgent = userAgent;
|
||||
this.uri = checkNotNull(this.mediaItem.playbackProperties).uri;
|
||||
this.uri = checkNotNull(this.mediaItem.localConfiguration).uri;
|
||||
this.debugLoggingEnabled = debugLoggingEnabled;
|
||||
this.timelineDurationUs = C.TIME_UNSET;
|
||||
this.timelineIsPlaceholder = true;
|
||||
|
@ -277,20 +277,20 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
public SsMediaSource createMediaSource(SsManifest manifest, MediaItem mediaItem) {
|
||||
Assertions.checkArgument(!manifest.isLive);
|
||||
List<StreamKey> streamKeys =
|
||||
mediaItem.playbackProperties != null && !mediaItem.playbackProperties.streamKeys.isEmpty()
|
||||
? mediaItem.playbackProperties.streamKeys
|
||||
mediaItem.localConfiguration != null && !mediaItem.localConfiguration.streamKeys.isEmpty()
|
||||
? mediaItem.localConfiguration.streamKeys
|
||||
: this.streamKeys;
|
||||
if (!streamKeys.isEmpty()) {
|
||||
manifest = manifest.copy(streamKeys);
|
||||
}
|
||||
boolean hasUri = mediaItem.playbackProperties != null;
|
||||
boolean hasTag = hasUri && mediaItem.playbackProperties.tag != null;
|
||||
boolean hasUri = mediaItem.localConfiguration != null;
|
||||
boolean hasTag = hasUri && mediaItem.localConfiguration.tag != null;
|
||||
mediaItem =
|
||||
mediaItem
|
||||
.buildUpon()
|
||||
.setMimeType(MimeTypes.APPLICATION_SS)
|
||||
.setUri(hasUri ? mediaItem.playbackProperties.uri : Uri.EMPTY)
|
||||
.setTag(hasTag ? mediaItem.playbackProperties.tag : tag)
|
||||
.setUri(hasUri ? mediaItem.localConfiguration.uri : Uri.EMPTY)
|
||||
.setTag(hasTag ? mediaItem.localConfiguration.tag : tag)
|
||||
.setStreamKeys(streamKeys)
|
||||
.build();
|
||||
return new SsMediaSource(
|
||||
@ -310,26 +310,26 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
*
|
||||
* @param mediaItem The {@link MediaItem}.
|
||||
* @return The new {@link SsMediaSource}.
|
||||
* @throws NullPointerException if {@link MediaItem#playbackProperties} is {@code null}.
|
||||
* @throws NullPointerException if {@link MediaItem#localConfiguration} is {@code null}.
|
||||
*/
|
||||
@Override
|
||||
public SsMediaSource createMediaSource(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.playbackProperties);
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
@Nullable ParsingLoadable.Parser<? extends SsManifest> manifestParser = this.manifestParser;
|
||||
if (manifestParser == null) {
|
||||
manifestParser = new SsManifestParser();
|
||||
}
|
||||
List<StreamKey> streamKeys =
|
||||
!mediaItem.playbackProperties.streamKeys.isEmpty()
|
||||
? mediaItem.playbackProperties.streamKeys
|
||||
!mediaItem.localConfiguration.streamKeys.isEmpty()
|
||||
? mediaItem.localConfiguration.streamKeys
|
||||
: this.streamKeys;
|
||||
if (!streamKeys.isEmpty()) {
|
||||
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
||||
}
|
||||
|
||||
boolean needsTag = mediaItem.playbackProperties.tag == null && tag != null;
|
||||
boolean needsTag = mediaItem.localConfiguration.tag == null && tag != null;
|
||||
boolean needsStreamKeys =
|
||||
mediaItem.playbackProperties.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
mediaItem.localConfiguration.streamKeys.isEmpty() && !streamKeys.isEmpty();
|
||||
if (needsTag && needsStreamKeys) {
|
||||
mediaItem = mediaItem.buildUpon().setTag(tag).setStreamKeys(streamKeys).build();
|
||||
} else if (needsTag) {
|
||||
@ -370,7 +370,7 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
|
||||
private final boolean sideloadedManifest;
|
||||
private final Uri manifestUri;
|
||||
private final MediaItem.PlaybackProperties playbackProperties;
|
||||
private final MediaItem.LocalConfiguration localConfiguration;
|
||||
private final MediaItem mediaItem;
|
||||
private final DataSource.Factory manifestDataSourceFactory;
|
||||
private final SsChunkSource.Factory chunkSourceFactory;
|
||||
@ -404,12 +404,12 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
long livePresentationDelayMs) {
|
||||
Assertions.checkState(manifest == null || !manifest.isLive);
|
||||
this.mediaItem = mediaItem;
|
||||
playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
localConfiguration = checkNotNull(mediaItem.localConfiguration);
|
||||
this.manifest = manifest;
|
||||
this.manifestUri =
|
||||
playbackProperties.uri.equals(Uri.EMPTY)
|
||||
localConfiguration.uri.equals(Uri.EMPTY)
|
||||
? null
|
||||
: Util.fixSmoothStreamingIsmManifestUri(playbackProperties.uri);
|
||||
: Util.fixSmoothStreamingIsmManifestUri(localConfiguration.uri);
|
||||
this.manifestDataSourceFactory = manifestDataSourceFactory;
|
||||
this.manifestParser = manifestParser;
|
||||
this.chunkSourceFactory = chunkSourceFactory;
|
||||
|
@ -87,7 +87,7 @@ public final class SsDownloader extends SegmentDownloader<SsManifest> {
|
||||
.buildUpon()
|
||||
.setUri(
|
||||
Util.fixSmoothStreamingIsmManifestUri(
|
||||
checkNotNull(mediaItem.playbackProperties).uri))
|
||||
checkNotNull(mediaItem.localConfiguration).uri))
|
||||
.build(),
|
||||
new SsManifestParser(),
|
||||
cacheDataSourceFactory,
|
||||
|
@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
|
||||
|
||||
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
||||
|
||||
assertThat(mediaSource.getMediaItem().playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(mediaSource.getMediaItem().localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -41,10 +41,10 @@ public class SsMediaSourceTest {
|
||||
|
||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(ssMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(ssMediaItem.playbackProperties.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.playbackProperties).uri);
|
||||
assertThat(ssMediaItem.playbackProperties.tag).isEqualTo(tag);
|
||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(ssMediaItem.localConfiguration.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
||||
assertThat(ssMediaItem.localConfiguration.tag).isEqualTo(tag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -60,10 +60,10 @@ public class SsMediaSourceTest {
|
||||
|
||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(ssMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(ssMediaItem.playbackProperties.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.playbackProperties).uri);
|
||||
assertThat(ssMediaItem.playbackProperties.tag).isEqualTo(mediaItemTag);
|
||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(ssMediaItem.localConfiguration.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
||||
assertThat(ssMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -78,10 +78,10 @@ public class SsMediaSourceTest {
|
||||
|
||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(ssMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(ssMediaItem.playbackProperties.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.playbackProperties).uri);
|
||||
assertThat(ssMediaItem.playbackProperties.streamKeys).containsExactly(streamKey);
|
||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(ssMediaItem.localConfiguration.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
||||
assertThat(ssMediaItem.localConfiguration.streamKeys).containsExactly(streamKey);
|
||||
}
|
||||
|
||||
// Tests backwards compatibility
|
||||
@ -101,9 +101,9 @@ public class SsMediaSourceTest {
|
||||
|
||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
||||
|
||||
assertThat(ssMediaItem.playbackProperties).isNotNull();
|
||||
assertThat(ssMediaItem.playbackProperties.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.playbackProperties).uri);
|
||||
assertThat(ssMediaItem.playbackProperties.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
||||
assertThat(ssMediaItem.localConfiguration.uri)
|
||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
||||
assertThat(ssMediaItem.localConfiguration.streamKeys).containsExactly(mediaItemStreamKey);
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ public class FakeMediaSource extends BaseMediaSource {
|
||||
new MediaItem.Builder().setMediaId("FakeMediaSource").setUri("http://manifest.uri").build();
|
||||
|
||||
private static final DataSpec FAKE_DATA_SPEC =
|
||||
new DataSpec(castNonNull(FAKE_MEDIA_ITEM.playbackProperties).uri);
|
||||
new DataSpec(castNonNull(FAKE_MEDIA_ITEM.localConfiguration).uri);
|
||||
private static final int MANIFEST_LOAD_BYTES = 100;
|
||||
|
||||
private final TrackGroupArray trackGroupArray;
|
||||
|
@ -58,9 +58,9 @@ public final class TimelineAsserts {
|
||||
for (int i = 0; i < timeline.getWindowCount(); i++) {
|
||||
timeline.getWindow(i, window);
|
||||
if (expectedWindowTags[i] != null) {
|
||||
MediaItem.PlaybackProperties playbackProperties = window.mediaItem.playbackProperties;
|
||||
assertThat(playbackProperties).isNotNull();
|
||||
assertThat(Util.castNonNull(playbackProperties).tag).isEqualTo(expectedWindowTags[i]);
|
||||
MediaItem.LocalConfiguration localConfiguration = window.mediaItem.localConfiguration;
|
||||
assertThat(localConfiguration).isNotNull();
|
||||
assertThat(Util.castNonNull(localConfiguration).tag).isEqualTo(expectedWindowTags[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user