mirror of https://github.com/TeamNewPipe/NewPipe
47 lines
1.8 KiB
Java
47 lines
1.8 KiB
Java
package org.schabi.newpipe.player.helper;
|
|
|
|
import android.content.Context;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import com.google.android.exoplayer2.upstream.DataSource;
|
|
import com.google.android.exoplayer2.upstream.DefaultDataSource;
|
|
import com.google.android.exoplayer2.upstream.FileDataSource;
|
|
import com.google.android.exoplayer2.upstream.TransferListener;
|
|
import com.google.android.exoplayer2.upstream.cache.CacheDataSink;
|
|
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
|
|
import com.google.android.exoplayer2.upstream.cache.SimpleCache;
|
|
|
|
final class CacheFactory implements DataSource.Factory {
|
|
private static final int CACHE_FLAGS = CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR;
|
|
|
|
private final Context context;
|
|
private final TransferListener transferListener;
|
|
private final DataSource.Factory upstreamDataSourceFactory;
|
|
private final SimpleCache cache;
|
|
|
|
CacheFactory(final Context context,
|
|
final TransferListener transferListener,
|
|
final SimpleCache cache,
|
|
final DataSource.Factory upstreamDataSourceFactory) {
|
|
this.context = context;
|
|
this.transferListener = transferListener;
|
|
this.cache = cache;
|
|
this.upstreamDataSourceFactory = upstreamDataSourceFactory;
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public DataSource createDataSource() {
|
|
final DefaultDataSource dataSource = new DefaultDataSource.Factory(context,
|
|
upstreamDataSourceFactory)
|
|
.setTransferListener(transferListener)
|
|
.createDataSource();
|
|
|
|
final FileDataSource fileSource = new FileDataSource();
|
|
final CacheDataSink dataSink =
|
|
new CacheDataSink(cache, PlayerHelper.getPreferredFileSize());
|
|
return new CacheDataSource(cache, dataSource, fileSource, dataSink, CACHE_FLAGS, null);
|
|
}
|
|
}
|