NewPipe/app/src/main/java/org/schabi/newpipe/player/helper/CacheFactory.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);
}
}