diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/AssetDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/AssetDataSource.java index 1742f498de..6b284710bd 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/AssetDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/AssetDataSource.java @@ -108,7 +108,7 @@ public final class AssetDataSource implements DataSource { @Override public int read(byte[] buffer, int offset, int readLength) throws AssetDataSourceException { if (bytesRemaining == 0) { - return -1; + return C.RESULT_END_OF_INPUT; } else { int bytesRead = 0; try { diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java index 682c8cf212..8e5f005bb6 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/ByteArrayDataSource.java @@ -31,7 +31,7 @@ public final class ByteArrayDataSource implements DataSource { private Uri uri; private int readPosition; - private int remainingBytes; + private int bytesRemaining; /** * @param data The data to be read. @@ -46,24 +46,24 @@ public final class ByteArrayDataSource implements DataSource { public long open(DataSpec dataSpec) throws IOException { uri = dataSpec.uri; readPosition = (int) dataSpec.position; - remainingBytes = (int) ((dataSpec.length == C.LENGTH_UNBOUNDED) + bytesRemaining = (int) ((dataSpec.length == C.LENGTH_UNBOUNDED) ? (data.length - dataSpec.position) : dataSpec.length); - if (remainingBytes <= 0 || readPosition + remainingBytes > data.length) { + if (bytesRemaining <= 0 || readPosition + bytesRemaining > data.length) { throw new IOException("Unsatisfiable range: [" + readPosition + ", " + dataSpec.length + "], length: " + data.length); } - return remainingBytes; + return bytesRemaining; } @Override public int read(byte[] buffer, int offset, int length) throws IOException { - if (remainingBytes == 0) { - return -1; + if (bytesRemaining == 0) { + return C.RESULT_END_OF_INPUT; } - length = Math.min(length, remainingBytes); + length = Math.min(length, bytesRemaining); System.arraycopy(data, readPosition, buffer, offset, length); readPosition += length; - remainingBytes -= length; + bytesRemaining -= length; return length; } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/ContentDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/ContentDataSource.java index 74688a69b5..c1a2f6ea19 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/ContentDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/ContentDataSource.java @@ -106,7 +106,7 @@ public final class ContentDataSource implements DataSource { @Override public int read(byte[] buffer, int offset, int readLength) throws ContentDataSourceException { if (bytesRemaining == 0) { - return -1; + return C.RESULT_END_OF_INPUT; } else { int bytesRead = 0; try { diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java index ff3d0b7b8e..52e507a5df 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceInputStream.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.upstream; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.util.Assertions; import java.io.IOException; @@ -74,7 +75,8 @@ public final class DataSourceInputStream extends InputStream { public int read(byte[] buffer, int offset, int length) throws IOException { Assertions.checkState(!closed); checkOpened(); - return dataSource.read(buffer, offset, length); + int bytesRead = dataSource.read(buffer, offset, length); + return bytesRead == C.RESULT_END_OF_INPUT ? -1 : bytesRead; } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java index 65d9e79f38..7b5c94c307 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java @@ -88,7 +88,7 @@ public final class FileDataSource implements DataSource { @Override public int read(byte[] buffer, int offset, int readLength) throws FileDataSourceException { if (bytesRemaining == 0) { - return -1; + return C.RESULT_END_OF_INPUT; } else { int bytesRead = 0; try {