Migrate usages of MediaItem.Subtitle to SubtitleConfiguration
Usages of the (already deprecated) Subtitle constructors were not migrated, as it would require migrating to the Builder which is a more involved change. PiperOrigin-RevId: 400153139
This commit is contained in:
parent
d4343ed858
commit
b192465bba
@ -196,12 +196,13 @@ public class IntentUtil {
|
|||||||
if (localConfiguration.drmConfiguration != null) {
|
if (localConfiguration.drmConfiguration != null) {
|
||||||
addDrmConfigurationToIntent(localConfiguration.drmConfiguration, intent, extrasKeySuffix);
|
addDrmConfigurationToIntent(localConfiguration.drmConfiguration, intent, extrasKeySuffix);
|
||||||
}
|
}
|
||||||
if (!localConfiguration.subtitles.isEmpty()) {
|
if (!localConfiguration.subtitleConfigurations.isEmpty()) {
|
||||||
checkState(localConfiguration.subtitles.size() == 1);
|
checkState(localConfiguration.subtitleConfigurations.size() == 1);
|
||||||
MediaItem.Subtitle subtitle = localConfiguration.subtitles.get(0);
|
MediaItem.SubtitleConfiguration subtitleConfiguration =
|
||||||
intent.putExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix, subtitle.uri.toString());
|
localConfiguration.subtitleConfigurations.get(0);
|
||||||
intent.putExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix, subtitle.mimeType);
|
intent.putExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix, subtitleConfiguration.uri.toString());
|
||||||
intent.putExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix, subtitle.language);
|
intent.putExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix, subtitleConfiguration.mimeType);
|
||||||
|
intent.putExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix, subtitleConfiguration.language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,8 +233,8 @@ public final class Util {
|
|||||||
if (isLocalFileUri(mediaItem.localConfiguration.uri)) {
|
if (isLocalFileUri(mediaItem.localConfiguration.uri)) {
|
||||||
return requestExternalStoragePermission(activity);
|
return requestExternalStoragePermission(activity);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < mediaItem.localConfiguration.subtitles.size(); i++) {
|
for (int i = 0; i < mediaItem.localConfiguration.subtitleConfigurations.size(); i++) {
|
||||||
if (isLocalFileUri(mediaItem.localConfiguration.subtitles.get(i).uri)) {
|
if (isLocalFileUri(mediaItem.localConfiguration.subtitleConfigurations.get(i).uri)) {
|
||||||
return requestExternalStoragePermission(activity);
|
return requestExternalStoragePermission(activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -261,8 +261,8 @@ public final class Util {
|
|||||||
if (isTrafficRestricted(mediaItem.localConfiguration.uri)) {
|
if (isTrafficRestricted(mediaItem.localConfiguration.uri)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < mediaItem.localConfiguration.subtitles.size(); i++) {
|
for (int i = 0; i < mediaItem.localConfiguration.subtitleConfigurations.size(); i++) {
|
||||||
if (isTrafficRestricted(mediaItem.localConfiguration.subtitles.get(i).uri)) {
|
if (isTrafficRestricted(mediaItem.localConfiguration.subtitleConfigurations.get(i).uri)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,8 +173,8 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether a {@link ProgressiveMediaSource} or {@link SingleSampleMediaSource} is constructed
|
* Sets whether a {@link ProgressiveMediaSource} or {@link SingleSampleMediaSource} is constructed
|
||||||
* to handle {@link MediaItem.LocalConfiguration#subtitles}. Defaults to false (i.e. {@link
|
* to handle {@link MediaItem.LocalConfiguration#subtitleConfigurations}. Defaults to false (i.e.
|
||||||
* SingleSampleMediaSource}.
|
* {@link SingleSampleMediaSource}.
|
||||||
*
|
*
|
||||||
* <p>This method is experimental, and will be renamed or removed in a future release.
|
* <p>This method is experimental, and will be renamed or removed in a future release.
|
||||||
*
|
*
|
||||||
@ -375,13 +375,14 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||||||
|
|
||||||
MediaSource mediaSource = mediaSourceFactory.createMediaSource(mediaItem);
|
MediaSource mediaSource = mediaSourceFactory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
List<MediaItem.Subtitle> subtitles = castNonNull(mediaItem.localConfiguration).subtitles;
|
List<MediaItem.SubtitleConfiguration> subtitleConfigurations =
|
||||||
if (!subtitles.isEmpty()) {
|
castNonNull(mediaItem.localConfiguration).subtitleConfigurations;
|
||||||
MediaSource[] mediaSources = new MediaSource[subtitles.size() + 1];
|
if (!subtitleConfigurations.isEmpty()) {
|
||||||
|
MediaSource[] mediaSources = new MediaSource[subtitleConfigurations.size() + 1];
|
||||||
mediaSources[0] = mediaSource;
|
mediaSources[0] = mediaSource;
|
||||||
for (int i = 0; i < subtitles.size(); i++) {
|
for (int i = 0; i < subtitleConfigurations.size(); i++) {
|
||||||
if (useProgressiveMediaSourceForSubtitles
|
if (useProgressiveMediaSourceForSubtitles
|
||||||
&& MimeTypes.TEXT_VTT.equals(subtitles.get(i).mimeType)) {
|
&& MimeTypes.TEXT_VTT.equals(subtitleConfigurations.get(i).mimeType)) {
|
||||||
int index = i;
|
int index = i;
|
||||||
ProgressiveMediaSource.Factory progressiveMediaSourceFactory =
|
ProgressiveMediaSource.Factory progressiveMediaSourceFactory =
|
||||||
new ProgressiveMediaSource.Factory(
|
new ProgressiveMediaSource.Factory(
|
||||||
@ -391,23 +392,23 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||||||
new SubtitleExtractor(
|
new SubtitleExtractor(
|
||||||
new WebvttDecoder(),
|
new WebvttDecoder(),
|
||||||
new Format.Builder()
|
new Format.Builder()
|
||||||
.setSampleMimeType(subtitles.get(index).mimeType)
|
.setSampleMimeType(subtitleConfigurations.get(index).mimeType)
|
||||||
.setLanguage(subtitles.get(index).language)
|
.setLanguage(subtitleConfigurations.get(index).language)
|
||||||
.setSelectionFlags(subtitles.get(index).selectionFlags)
|
.setSelectionFlags(subtitleConfigurations.get(index).selectionFlags)
|
||||||
.setRoleFlags(subtitles.get(index).roleFlags)
|
.setRoleFlags(subtitleConfigurations.get(index).roleFlags)
|
||||||
.setLabel(subtitles.get(index).label)
|
.setLabel(subtitleConfigurations.get(index).label)
|
||||||
.build())
|
.build())
|
||||||
});
|
});
|
||||||
mediaSources[i + 1] =
|
mediaSources[i + 1] =
|
||||||
progressiveMediaSourceFactory.createMediaSource(
|
progressiveMediaSourceFactory.createMediaSource(
|
||||||
MediaItem.fromUri(subtitles.get(i).uri.toString()));
|
MediaItem.fromUri(subtitleConfigurations.get(i).uri.toString()));
|
||||||
} else {
|
} else {
|
||||||
SingleSampleMediaSource.Factory singleSampleSourceFactory =
|
SingleSampleMediaSource.Factory singleSampleSourceFactory =
|
||||||
new SingleSampleMediaSource.Factory(dataSourceFactory)
|
new SingleSampleMediaSource.Factory(dataSourceFactory)
|
||||||
.setLoadErrorHandlingPolicy(loadErrorHandlingPolicy);
|
.setLoadErrorHandlingPolicy(loadErrorHandlingPolicy);
|
||||||
mediaSources[i + 1] =
|
mediaSources[i + 1] =
|
||||||
singleSampleSourceFactory.createMediaSource(
|
singleSampleSourceFactory.createMediaSource(
|
||||||
subtitles.get(i), /* durationUs= */ C.TIME_UNSET);
|
subtitleConfigurations.get(i), /* durationUs= */ C.TIME_UNSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy;
|
|||||||
import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy;
|
import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy;
|
||||||
import com.google.android.exoplayer2.upstream.TransferListener;
|
import com.google.android.exoplayer2.upstream.TransferListener;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
import java.util.Collections;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads data at a given {@link Uri} as a single sample belonging to a single {@link MediaPeriod}.
|
* Loads data at a given {@link Uri} as a single sample belonging to a single {@link MediaPeriod}.
|
||||||
@ -115,14 +115,15 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
|||||||
/**
|
/**
|
||||||
* Returns a new {@link SingleSampleMediaSource} using the current parameters.
|
* Returns a new {@link SingleSampleMediaSource} using the current parameters.
|
||||||
*
|
*
|
||||||
* @param subtitle The {@link MediaItem.Subtitle}.
|
* @param subtitleConfiguration The {@link MediaItem.SubtitleConfiguration}.
|
||||||
* @param durationUs The duration of the media stream in microseconds.
|
* @param durationUs The duration of the media stream in microseconds.
|
||||||
* @return The new {@link SingleSampleMediaSource}.
|
* @return The new {@link SingleSampleMediaSource}.
|
||||||
*/
|
*/
|
||||||
public SingleSampleMediaSource createMediaSource(MediaItem.Subtitle subtitle, long durationUs) {
|
public SingleSampleMediaSource createMediaSource(
|
||||||
|
MediaItem.SubtitleConfiguration subtitleConfiguration, long durationUs) {
|
||||||
return new SingleSampleMediaSource(
|
return new SingleSampleMediaSource(
|
||||||
trackId,
|
trackId,
|
||||||
subtitle,
|
subtitleConfiguration,
|
||||||
dataSourceFactory,
|
dataSourceFactory,
|
||||||
durationUs,
|
durationUs,
|
||||||
loadErrorHandlingPolicy,
|
loadErrorHandlingPolicy,
|
||||||
@ -144,7 +145,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
|||||||
|
|
||||||
private SingleSampleMediaSource(
|
private SingleSampleMediaSource(
|
||||||
@Nullable String trackId,
|
@Nullable String trackId,
|
||||||
MediaItem.Subtitle subtitle,
|
MediaItem.SubtitleConfiguration subtitleConfiguration,
|
||||||
DataSource.Factory dataSourceFactory,
|
DataSource.Factory dataSourceFactory,
|
||||||
long durationUs,
|
long durationUs,
|
||||||
LoadErrorHandlingPolicy loadErrorHandlingPolicy,
|
LoadErrorHandlingPolicy loadErrorHandlingPolicy,
|
||||||
@ -157,21 +158,24 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
|||||||
mediaItem =
|
mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setMediaId(subtitle.uri.toString())
|
.setMediaId(subtitleConfiguration.uri.toString())
|
||||||
.setSubtitles(Collections.singletonList(subtitle))
|
.setSubtitleConfigurations(ImmutableList.of(subtitleConfiguration))
|
||||||
.setTag(tag)
|
.setTag(tag)
|
||||||
.build();
|
.build();
|
||||||
format =
|
format =
|
||||||
new Format.Builder()
|
new Format.Builder()
|
||||||
.setId(trackId)
|
.setId(trackId)
|
||||||
.setSampleMimeType(firstNonNull(subtitle.mimeType, MimeTypes.TEXT_UNKNOWN))
|
.setSampleMimeType(firstNonNull(subtitleConfiguration.mimeType, MimeTypes.TEXT_UNKNOWN))
|
||||||
.setLanguage(subtitle.language)
|
.setLanguage(subtitleConfiguration.language)
|
||||||
.setSelectionFlags(subtitle.selectionFlags)
|
.setSelectionFlags(subtitleConfiguration.selectionFlags)
|
||||||
.setRoleFlags(subtitle.roleFlags)
|
.setRoleFlags(subtitleConfiguration.roleFlags)
|
||||||
.setLabel(subtitle.label)
|
.setLabel(subtitleConfiguration.label)
|
||||||
.build();
|
.build();
|
||||||
dataSpec =
|
dataSpec =
|
||||||
new DataSpec.Builder().setUri(subtitle.uri).setFlags(DataSpec.FLAG_ALLOW_GZIP).build();
|
new DataSpec.Builder()
|
||||||
|
.setUri(subtitleConfiguration.uri)
|
||||||
|
.setFlags(DataSpec.FLAG_ALLOW_GZIP)
|
||||||
|
.build();
|
||||||
timeline =
|
timeline =
|
||||||
new SinglePeriodTimeline(
|
new SinglePeriodTimeline(
|
||||||
durationUs,
|
durationUs,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user