mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-30 11:02:31 -06:00
70 lines
2 KiB
Java
70 lines
2 KiB
Java
|
package androidx.media3.datasource;
|
||
|
|
||
|
import android.net.Uri;
|
||
|
import androidx.media3.common.util.Assertions;
|
||
|
import java.io.IOException;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public final class ByteArrayDataSource extends BaseDataSource {
|
||
|
private int bytesRemaining;
|
||
|
private final byte[] data;
|
||
|
private boolean opened;
|
||
|
private int readPosition;
|
||
|
private Uri uri;
|
||
|
|
||
|
@Override // androidx.media3.datasource.DataSource
|
||
|
public Uri getUri() {
|
||
|
return this.uri;
|
||
|
}
|
||
|
|
||
|
public ByteArrayDataSource(byte[] bArr) {
|
||
|
super(false);
|
||
|
Assertions.checkNotNull(bArr);
|
||
|
Assertions.checkArgument(bArr.length > 0);
|
||
|
this.data = bArr;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.media3.datasource.DataSource
|
||
|
public long open(DataSpec dataSpec) throws IOException {
|
||
|
this.uri = dataSpec.uri;
|
||
|
transferInitializing(dataSpec);
|
||
|
if (dataSpec.position > this.data.length) {
|
||
|
throw new DataSourceException(2008);
|
||
|
}
|
||
|
this.readPosition = (int) dataSpec.position;
|
||
|
this.bytesRemaining = this.data.length - ((int) dataSpec.position);
|
||
|
if (dataSpec.length != -1) {
|
||
|
this.bytesRemaining = (int) Math.min(this.bytesRemaining, dataSpec.length);
|
||
|
}
|
||
|
this.opened = true;
|
||
|
transferStarted(dataSpec);
|
||
|
return dataSpec.length != -1 ? dataSpec.length : this.bytesRemaining;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.media3.common.DataReader
|
||
|
public int read(byte[] bArr, int i, int i2) {
|
||
|
if (i2 == 0) {
|
||
|
return 0;
|
||
|
}
|
||
|
int i3 = this.bytesRemaining;
|
||
|
if (i3 == 0) {
|
||
|
return -1;
|
||
|
}
|
||
|
int min = Math.min(i2, i3);
|
||
|
System.arraycopy(this.data, this.readPosition, bArr, i, min);
|
||
|
this.readPosition += min;
|
||
|
this.bytesRemaining -= min;
|
||
|
bytesTransferred(min);
|
||
|
return min;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.media3.datasource.DataSource
|
||
|
public void close() {
|
||
|
if (this.opened) {
|
||
|
this.opened = false;
|
||
|
transferEnded();
|
||
|
}
|
||
|
this.uri = null;
|
||
|
}
|
||
|
}
|