mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +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;
|
package com.google.android.exoplayer2.upstream;
|
||||||
|
|
||||||
|
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
||||||
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.util.Assertions;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -31,6 +32,7 @@ public abstract class BaseDataSource implements DataSource {
|
||||||
private final boolean isNetwork;
|
private final boolean isNetwork;
|
||||||
private final ArrayList<TransferListener> listeners;
|
private final ArrayList<TransferListener> listeners;
|
||||||
|
|
||||||
|
private int listenerCount;
|
||||||
private @Nullable DataSpec dataSpec;
|
private @Nullable DataSpec dataSpec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -46,6 +48,7 @@ public abstract class BaseDataSource implements DataSource {
|
||||||
@Override
|
@Override
|
||||||
public final void addTransferListener(TransferListener transferListener) {
|
public final void addTransferListener(TransferListener transferListener) {
|
||||||
listeners.add(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.
|
* @param dataSpec {@link DataSpec} describing the data for initializing transfer.
|
||||||
*/
|
*/
|
||||||
protected final void transferInitializing(DataSpec dataSpec) {
|
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);
|
listeners.get(i).onTransferInitializing(/* source= */ this, dataSpec, isNetwork);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +69,7 @@ public abstract class BaseDataSource implements DataSource {
|
||||||
*/
|
*/
|
||||||
protected final void transferStarted(DataSpec dataSpec) {
|
protected final void transferStarted(DataSpec dataSpec) {
|
||||||
this.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);
|
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).
|
* (or if the first call, since the transfer was started).
|
||||||
*/
|
*/
|
||||||
protected final void bytesTransferred(int bytesTransferred) {
|
protected final void bytesTransferred(int bytesTransferred) {
|
||||||
DataSpec dataSpec = Assertions.checkNotNull(this.dataSpec);
|
DataSpec dataSpec = castNonNull(this.dataSpec);
|
||||||
for (int i = 0; i < listeners.size(); i++) {
|
for (int i = 0; i < listenerCount; i++) {
|
||||||
listeners
|
listeners
|
||||||
.get(i)
|
.get(i)
|
||||||
.onBytesTransferred(/* source= */ this, dataSpec, isNetwork, bytesTransferred);
|
.onBytesTransferred(/* source= */ this, dataSpec, isNetwork, bytesTransferred);
|
||||||
|
|
@ -88,8 +91,8 @@ public abstract class BaseDataSource implements DataSource {
|
||||||
|
|
||||||
/** Notifies listeners that a transfer ended. */
|
/** Notifies listeners that a transfer ended. */
|
||||||
protected final void transferEnded() {
|
protected final void transferEnded() {
|
||||||
DataSpec dataSpec = Assertions.checkNotNull(this.dataSpec);
|
DataSpec dataSpec = castNonNull(this.dataSpec);
|
||||||
for (int i = 0; i < listeners.size(); i++) {
|
for (int i = 0; i < listenerCount; i++) {
|
||||||
listeners.get(i).onTransferEnd(/* source= */ this, dataSpec, isNetwork);
|
listeners.get(i).onTransferEnd(/* source= */ this, dataSpec, isNetwork);
|
||||||
}
|
}
|
||||||
this.dataSpec = null;
|
this.dataSpec = null;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue