Make CacheDataSink use ReusableBufferedOutputStream
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=140010664
This commit is contained in:
parent
fa3d129b14
commit
b29ff0cf51
@ -20,8 +20,8 @@ import com.google.android.exoplayer2.upstream.DataSink;
|
|||||||
import com.google.android.exoplayer2.upstream.DataSpec;
|
import com.google.android.exoplayer2.upstream.DataSpec;
|
||||||
import com.google.android.exoplayer2.upstream.cache.Cache.CacheException;
|
import com.google.android.exoplayer2.upstream.cache.Cache.CacheException;
|
||||||
import com.google.android.exoplayer2.util.Assertions;
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
|
import com.google.android.exoplayer2.util.ReusableBufferedOutputStream;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
import com.google.android.exoplayer2.util.Util;
|
||||||
import java.io.BufferedOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -42,6 +42,7 @@ public final class CacheDataSink implements DataSink {
|
|||||||
private FileOutputStream underlyingFileOutputStream;
|
private FileOutputStream underlyingFileOutputStream;
|
||||||
private long outputStreamBytesWritten;
|
private long outputStreamBytesWritten;
|
||||||
private long dataSpecBytesWritten;
|
private long dataSpecBytesWritten;
|
||||||
|
private ReusableBufferedOutputStream bufferedOutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Thrown when IOException is encountered when writing data into sink.
|
* Thrown when IOException is encountered when writing data into sink.
|
||||||
@ -132,9 +133,17 @@ public final class CacheDataSink implements DataSink {
|
|||||||
file = cache.startFile(dataSpec.key, dataSpec.absoluteStreamPosition + dataSpecBytesWritten,
|
file = cache.startFile(dataSpec.key, dataSpec.absoluteStreamPosition + dataSpecBytesWritten,
|
||||||
Math.min(dataSpec.length - dataSpecBytesWritten, maxCacheFileSize));
|
Math.min(dataSpec.length - dataSpecBytesWritten, maxCacheFileSize));
|
||||||
underlyingFileOutputStream = new FileOutputStream(file);
|
underlyingFileOutputStream = new FileOutputStream(file);
|
||||||
outputStream = bufferSize > 0
|
if (bufferSize > 0) {
|
||||||
? new BufferedOutputStream(underlyingFileOutputStream, bufferSize)
|
if (bufferedOutputStream == null) {
|
||||||
: underlyingFileOutputStream;
|
bufferedOutputStream = new ReusableBufferedOutputStream(underlyingFileOutputStream,
|
||||||
|
bufferSize);
|
||||||
|
} else {
|
||||||
|
bufferedOutputStream.reset(underlyingFileOutputStream);
|
||||||
|
}
|
||||||
|
outputStream = bufferedOutputStream;
|
||||||
|
} else {
|
||||||
|
outputStream = underlyingFileOutputStream;
|
||||||
|
}
|
||||||
outputStreamBytesWritten = 0;
|
outputStreamBytesWritten = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user