mirror of
https://github.com/samsonjs/media.git
synced 2026-04-11 12:15:47 +00:00
Simplify DefaultDataSourceChain to use addTransferListener
Also locally cache length in BaseDataSource and use zero cost castNonNull to make sure there's no performance regression. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=207715734
This commit is contained in:
parent
af507efb2a
commit
ca473c86c7
1 changed files with 10 additions and 7 deletions
|
|
@ -15,8 +15,9 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.upstream;
|
||||
|
||||
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
||||
|
||||
import android.support.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
|
|
@ -31,6 +32,7 @@ public abstract class BaseDataSource implements DataSource {
|
|||
private final boolean isNetwork;
|
||||
private final ArrayList<TransferListener> listeners;
|
||||
|
||||
private int listenerCount;
|
||||
private @Nullable DataSpec dataSpec;
|
||||
|
||||
/**
|
||||
|
|
@ -46,6 +48,7 @@ public abstract class BaseDataSource implements DataSource {
|
|||
@Override
|
||||
public final void addTransferListener(TransferListener transferListener) {
|
||||
listeners.add(transferListener);
|
||||
listenerCount++;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -54,7 +57,7 @@ public abstract class BaseDataSource implements DataSource {
|
|||
* @param dataSpec {@link DataSpec} describing the data for initializing transfer.
|
||||
*/
|
||||
protected final void transferInitializing(DataSpec dataSpec) {
|
||||
for (int i = 0; i < listeners.size(); i++) {
|
||||
for (int i = 0; i < listenerCount; i++) {
|
||||
listeners.get(i).onTransferInitializing(/* source= */ this, dataSpec, isNetwork);
|
||||
}
|
||||
}
|
||||
|
|
@ -66,7 +69,7 @@ public abstract class BaseDataSource implements DataSource {
|
|||
*/
|
||||
protected final void transferStarted(DataSpec dataSpec) {
|
||||
this.dataSpec = dataSpec;
|
||||
for (int i = 0; i < listeners.size(); i++) {
|
||||
for (int i = 0; i < listenerCount; i++) {
|
||||
listeners.get(i).onTransferStart(/* source= */ this, dataSpec, isNetwork);
|
||||
}
|
||||
}
|
||||
|
|
@ -78,8 +81,8 @@ public abstract class BaseDataSource implements DataSource {
|
|||
* (or if the first call, since the transfer was started).
|
||||
*/
|
||||
protected final void bytesTransferred(int bytesTransferred) {
|
||||
DataSpec dataSpec = Assertions.checkNotNull(this.dataSpec);
|
||||
for (int i = 0; i < listeners.size(); i++) {
|
||||
DataSpec dataSpec = castNonNull(this.dataSpec);
|
||||
for (int i = 0; i < listenerCount; i++) {
|
||||
listeners
|
||||
.get(i)
|
||||
.onBytesTransferred(/* source= */ this, dataSpec, isNetwork, bytesTransferred);
|
||||
|
|
@ -88,8 +91,8 @@ public abstract class BaseDataSource implements DataSource {
|
|||
|
||||
/** Notifies listeners that a transfer ended. */
|
||||
protected final void transferEnded() {
|
||||
DataSpec dataSpec = Assertions.checkNotNull(this.dataSpec);
|
||||
for (int i = 0; i < listeners.size(); i++) {
|
||||
DataSpec dataSpec = castNonNull(this.dataSpec);
|
||||
for (int i = 0; i < listenerCount; i++) {
|
||||
listeners.get(i).onTransferEnd(/* source= */ this, dataSpec, isNetwork);
|
||||
}
|
||||
this.dataSpec = null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue