mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-27 09:32:27 -06:00
71 lines
1.9 KiB
Java
71 lines
1.9 KiB
Java
|
package androidx.media3.datasource;
|
||
|
|
||
|
import androidx.media3.common.util.Assertions;
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStream;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public final class DataSourceInputStream extends InputStream {
|
||
|
private final DataSource dataSource;
|
||
|
private final DataSpec dataSpec;
|
||
|
private long totalBytesRead;
|
||
|
private boolean opened = false;
|
||
|
private boolean closed = false;
|
||
|
private final byte[] singleByteArray = new byte[1];
|
||
|
|
||
|
public long bytesRead() {
|
||
|
return this.totalBytesRead;
|
||
|
}
|
||
|
|
||
|
public DataSourceInputStream(DataSource dataSource, DataSpec dataSpec) {
|
||
|
this.dataSource = dataSource;
|
||
|
this.dataSpec = dataSpec;
|
||
|
}
|
||
|
|
||
|
public void open() throws IOException {
|
||
|
checkOpened();
|
||
|
}
|
||
|
|
||
|
@Override // java.io.InputStream
|
||
|
public int read() throws IOException {
|
||
|
if (read(this.singleByteArray) == -1) {
|
||
|
return -1;
|
||
|
}
|
||
|
return this.singleByteArray[0] & 255;
|
||
|
}
|
||
|
|
||
|
@Override // java.io.InputStream
|
||
|
public int read(byte[] bArr) throws IOException {
|
||
|
return read(bArr, 0, bArr.length);
|
||
|
}
|
||
|
|
||
|
@Override // java.io.InputStream
|
||
|
public int read(byte[] bArr, int i, int i2) throws IOException {
|
||
|
Assertions.checkState(!this.closed);
|
||
|
checkOpened();
|
||
|
int read = this.dataSource.read(bArr, i, i2);
|
||
|
if (read == -1) {
|
||
|
return -1;
|
||
|
}
|
||
|
this.totalBytesRead += read;
|
||
|
return read;
|
||
|
}
|
||
|
|
||
|
@Override // java.io.InputStream, java.io.Closeable, java.lang.AutoCloseable
|
||
|
public void close() throws IOException {
|
||
|
if (this.closed) {
|
||
|
return;
|
||
|
}
|
||
|
this.dataSource.close();
|
||
|
this.closed = true;
|
||
|
}
|
||
|
|
||
|
private void checkOpened() throws IOException {
|
||
|
if (this.opened) {
|
||
|
return;
|
||
|
}
|
||
|
this.dataSource.open(this.dataSpec);
|
||
|
this.opened = true;
|
||
|
}
|
||
|
}
|