Add simplified Dash and Ss media source factory constructors.
As the manifest and media data sources can be the same now, we can provide a simplified constructor with just one data source factory. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=205658046
This commit is contained in:
parent
c24a699b34
commit
5933d92394
@ -36,9 +36,7 @@ import com.google.android.exoplayer2.source.ConcatenatingMediaSource;
|
|||||||
import com.google.android.exoplayer2.source.ExtractorMediaSource;
|
import com.google.android.exoplayer2.source.ExtractorMediaSource;
|
||||||
import com.google.android.exoplayer2.source.MediaSource;
|
import com.google.android.exoplayer2.source.MediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
||||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||||
import com.google.android.exoplayer2.ui.PlayerControlView;
|
import com.google.android.exoplayer2.ui.PlayerControlView;
|
||||||
@ -392,13 +390,9 @@ import java.util.ArrayList;
|
|||||||
Uri uri = Uri.parse(sample.uri);
|
Uri uri = Uri.parse(sample.uri);
|
||||||
switch (sample.mimeType) {
|
switch (sample.mimeType) {
|
||||||
case DemoUtil.MIME_TYPE_SS:
|
case DemoUtil.MIME_TYPE_SS:
|
||||||
return new SsMediaSource.Factory(
|
return new SsMediaSource.Factory(DATA_SOURCE_FACTORY).createMediaSource(uri);
|
||||||
new DefaultSsChunkSource.Factory(DATA_SOURCE_FACTORY), DATA_SOURCE_FACTORY)
|
|
||||||
.createMediaSource(uri);
|
|
||||||
case DemoUtil.MIME_TYPE_DASH:
|
case DemoUtil.MIME_TYPE_DASH:
|
||||||
return new DashMediaSource.Factory(
|
return new DashMediaSource.Factory(DATA_SOURCE_FACTORY).createMediaSource(uri);
|
||||||
new DefaultDashChunkSource.Factory(DATA_SOURCE_FACTORY), DATA_SOURCE_FACTORY)
|
|
||||||
.createMediaSource(uri);
|
|
||||||
case DemoUtil.MIME_TYPE_HLS:
|
case DemoUtil.MIME_TYPE_HLS:
|
||||||
return new HlsMediaSource.Factory(DATA_SOURCE_FACTORY).createMediaSource(uri);
|
return new HlsMediaSource.Factory(DATA_SOURCE_FACTORY).createMediaSource(uri);
|
||||||
case DemoUtil.MIME_TYPE_VIDEO_MP4:
|
case DemoUtil.MIME_TYPE_VIDEO_MP4:
|
||||||
|
@ -27,9 +27,7 @@ import com.google.android.exoplayer2.source.ExtractorMediaSource;
|
|||||||
import com.google.android.exoplayer2.source.MediaSource;
|
import com.google.android.exoplayer2.source.MediaSource;
|
||||||
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
||||||
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
||||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||||
@ -123,13 +121,9 @@ import com.google.android.exoplayer2.util.Util;
|
|||||||
@ContentType int type = Util.inferContentType(uri);
|
@ContentType int type = Util.inferContentType(uri);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case C.TYPE_DASH:
|
case C.TYPE_DASH:
|
||||||
return new DashMediaSource.Factory(
|
return new DashMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
|
||||||
new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory)
|
|
||||||
.createMediaSource(uri);
|
|
||||||
case C.TYPE_SS:
|
case C.TYPE_SS:
|
||||||
return new SsMediaSource.Factory(
|
return new SsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
|
||||||
new DefaultSsChunkSource.Factory(dataSourceFactory), dataSourceFactory)
|
|
||||||
.createMediaSource(uri);
|
|
||||||
case C.TYPE_HLS:
|
case C.TYPE_HLS:
|
||||||
return new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
|
return new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
|
||||||
case C.TYPE_OTHER:
|
case C.TYPE_OTHER:
|
||||||
|
@ -58,11 +58,9 @@ import com.google.android.exoplayer2.source.TrackGroupArray;
|
|||||||
import com.google.android.exoplayer2.source.ads.AdsLoader;
|
import com.google.android.exoplayer2.source.ads.AdsLoader;
|
||||||
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
import com.google.android.exoplayer2.source.dash.DashMediaSource;
|
||||||
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.dash.manifest.DashManifestParser;
|
import com.google.android.exoplayer2.source.dash.manifest.DashManifestParser;
|
||||||
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser;
|
import com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistParser;
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
|
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
|
||||||
import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifestParser;
|
import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifestParser;
|
||||||
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
||||||
@ -438,14 +436,12 @@ public class PlayerActivity extends Activity
|
|||||||
@ContentType int type = Util.inferContentType(uri, overrideExtension);
|
@ContentType int type = Util.inferContentType(uri, overrideExtension);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case C.TYPE_DASH:
|
case C.TYPE_DASH:
|
||||||
return new DashMediaSource.Factory(
|
return new DashMediaSource.Factory(dataSourceFactory)
|
||||||
new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory)
|
|
||||||
.setManifestParser(
|
.setManifestParser(
|
||||||
new FilteringManifestParser<>(new DashManifestParser(), getOfflineStreamKeys(uri)))
|
new FilteringManifestParser<>(new DashManifestParser(), getOfflineStreamKeys(uri)))
|
||||||
.createMediaSource(uri);
|
.createMediaSource(uri);
|
||||||
case C.TYPE_SS:
|
case C.TYPE_SS:
|
||||||
return new SsMediaSource.Factory(
|
return new SsMediaSource.Factory(dataSourceFactory)
|
||||||
new DefaultSsChunkSource.Factory(dataSourceFactory), dataSourceFactory)
|
|
||||||
.setManifestParser(
|
.setManifestParser(
|
||||||
new FilteringManifestParser<>(new SsManifestParser(), getOfflineStreamKeys(uri)))
|
new FilteringManifestParser<>(new SsManifestParser(), getOfflineStreamKeys(uri)))
|
||||||
.createMediaSource(uri);
|
.createMediaSource(uri);
|
||||||
|
@ -83,6 +83,16 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
private boolean isCreateCalled;
|
private boolean isCreateCalled;
|
||||||
private @Nullable Object tag;
|
private @Nullable Object tag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new factory for {@link DashMediaSource}s.
|
||||||
|
*
|
||||||
|
* @param dataSourceFactory A factory for {@link DataSource} instances that will be used to load
|
||||||
|
* manifest and media data.
|
||||||
|
*/
|
||||||
|
public Factory(DataSource.Factory dataSourceFactory) {
|
||||||
|
this(new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new factory for {@link DashMediaSource}s.
|
* Creates a new factory for {@link DashMediaSource}s.
|
||||||
*
|
*
|
||||||
|
@ -70,6 +70,16 @@ public final class SsMediaSource extends BaseMediaSource
|
|||||||
private boolean isCreateCalled;
|
private boolean isCreateCalled;
|
||||||
private @Nullable Object tag;
|
private @Nullable Object tag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new factory for {@link SsMediaSource}s.
|
||||||
|
*
|
||||||
|
* @param dataSourceFactory A factory for {@link DataSource} instances that will be used to load
|
||||||
|
* manifest and media data.
|
||||||
|
*/
|
||||||
|
public Factory(DataSource.Factory dataSourceFactory) {
|
||||||
|
this(new DefaultSsChunkSource.Factory(dataSourceFactory), dataSourceFactory);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new factory for {@link SsMediaSource}s.
|
* Creates a new factory for {@link SsMediaSource}s.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user