Rabbit-R1/android (non root)/java/sources/androidx/media3/exoplayer/source/chunk/ChunkSampleStream.java
2024-05-21 17:08:36 -04:00

601 lines
25 KiB
Java

package androidx.media3.exoplayer.source.chunk;
import androidx.media3.common.Format;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.Util;
import androidx.media3.decoder.DecoderInputBuffer;
import androidx.media3.exoplayer.FormatHolder;
import androidx.media3.exoplayer.SeekParameters;
import androidx.media3.exoplayer.drm.DrmSessionEventListener;
import androidx.media3.exoplayer.drm.DrmSessionManager;
import androidx.media3.exoplayer.source.LoadEventInfo;
import androidx.media3.exoplayer.source.MediaSourceEventListener;
import androidx.media3.exoplayer.source.SampleQueue;
import androidx.media3.exoplayer.source.SampleStream;
import androidx.media3.exoplayer.source.SequenceableLoader;
import androidx.media3.exoplayer.source.chunk.ChunkSource;
import androidx.media3.exoplayer.upstream.Allocator;
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
import androidx.media3.exoplayer.upstream.Loader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/* loaded from: classes2.dex */
public class ChunkSampleStream<T extends ChunkSource> implements SampleStream, SequenceableLoader, Loader.Callback<Chunk>, Loader.ReleaseCallback {
private static final String TAG = "ChunkSampleStream";
private final SequenceableLoader.Callback<ChunkSampleStream<T>> callback;
private BaseMediaChunk canceledMediaChunk;
private final BaseMediaChunkOutput chunkOutput;
private final T chunkSource;
private final SampleQueue[] embeddedSampleQueues;
private final Format[] embeddedTrackFormats;
private final int[] embeddedTrackTypes;
private final boolean[] embeddedTracksSelected;
private long lastSeekPositionUs;
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private final Loader loader;
private Chunk loadingChunk;
boolean loadingFinished;
private final ArrayList<BaseMediaChunk> mediaChunks;
private final MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher;
private final ChunkHolder nextChunkHolder;
private int nextNotifyPrimaryFormatMediaChunkIndex;
private long pendingResetPositionUs;
private Format primaryDownstreamTrackFormat;
private final SampleQueue primarySampleQueue;
public final int primaryTrackType;
private final List<BaseMediaChunk> readOnlyMediaChunks;
private ReleaseCallback<T> releaseCallback;
/* loaded from: classes2.dex */
public interface ReleaseCallback<T extends ChunkSource> {
void onSampleStreamReleased(ChunkSampleStream<T> chunkSampleStream);
}
public T getChunkSource() {
return this.chunkSource;
}
boolean isPendingReset() {
return this.pendingResetPositionUs != -9223372036854775807L;
}
public ChunkSampleStream(int i, int[] iArr, Format[] formatArr, T t, SequenceableLoader.Callback<ChunkSampleStream<T>> callback, Allocator allocator, long j, DrmSessionManager drmSessionManager, DrmSessionEventListener.EventDispatcher eventDispatcher, LoadErrorHandlingPolicy loadErrorHandlingPolicy, MediaSourceEventListener.EventDispatcher eventDispatcher2) {
this.primaryTrackType = i;
int i2 = 0;
iArr = iArr == null ? new int[0] : iArr;
this.embeddedTrackTypes = iArr;
this.embeddedTrackFormats = formatArr == null ? new Format[0] : formatArr;
this.chunkSource = t;
this.callback = callback;
this.mediaSourceEventDispatcher = eventDispatcher2;
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
this.loader = new Loader(TAG);
this.nextChunkHolder = new ChunkHolder();
ArrayList<BaseMediaChunk> arrayList = new ArrayList<>();
this.mediaChunks = arrayList;
this.readOnlyMediaChunks = Collections.unmodifiableList(arrayList);
int length = iArr.length;
this.embeddedSampleQueues = new SampleQueue[length];
this.embeddedTracksSelected = new boolean[length];
int i3 = length + 1;
int[] iArr2 = new int[i3];
SampleQueue[] sampleQueueArr = new SampleQueue[i3];
SampleQueue createWithDrm = SampleQueue.createWithDrm(allocator, drmSessionManager, eventDispatcher);
this.primarySampleQueue = createWithDrm;
iArr2[0] = i;
sampleQueueArr[0] = createWithDrm;
while (i2 < length) {
SampleQueue createWithoutDrm = SampleQueue.createWithoutDrm(allocator);
this.embeddedSampleQueues[i2] = createWithoutDrm;
int i4 = i2 + 1;
sampleQueueArr[i4] = createWithoutDrm;
iArr2[i4] = this.embeddedTrackTypes[i2];
i2 = i4;
}
this.chunkOutput = new BaseMediaChunkOutput(iArr2, sampleQueueArr);
this.pendingResetPositionUs = j;
this.lastSeekPositionUs = j;
}
public void discardBuffer(long j, boolean z) {
if (isPendingReset()) {
return;
}
int firstIndex = this.primarySampleQueue.getFirstIndex();
this.primarySampleQueue.discardTo(j, z, true);
int firstIndex2 = this.primarySampleQueue.getFirstIndex();
if (firstIndex2 > firstIndex) {
long firstTimestampUs = this.primarySampleQueue.getFirstTimestampUs();
int i = 0;
while (true) {
SampleQueue[] sampleQueueArr = this.embeddedSampleQueues;
if (i >= sampleQueueArr.length) {
break;
}
sampleQueueArr[i].discardTo(firstTimestampUs, z, this.embeddedTracksSelected[i]);
i++;
}
}
discardDownstreamMediaChunks(firstIndex2);
}
public ChunkSampleStream<T>.EmbeddedSampleStream selectEmbeddedTrack(long j, int i) {
for (int i2 = 0; i2 < this.embeddedSampleQueues.length; i2++) {
if (this.embeddedTrackTypes[i2] == i) {
Assertions.checkState(!this.embeddedTracksSelected[i2]);
this.embeddedTracksSelected[i2] = true;
this.embeddedSampleQueues[i2].seekTo(j, true);
return new EmbeddedSampleStream(this, this.embeddedSampleQueues[i2], i2);
}
}
throw new IllegalStateException();
}
@Override // androidx.media3.exoplayer.source.SequenceableLoader
public long getBufferedPositionUs() {
if (this.loadingFinished) {
return Long.MIN_VALUE;
}
if (isPendingReset()) {
return this.pendingResetPositionUs;
}
long j = this.lastSeekPositionUs;
BaseMediaChunk lastMediaChunk = getLastMediaChunk();
if (!lastMediaChunk.isLoadCompleted()) {
if (this.mediaChunks.size() > 1) {
lastMediaChunk = this.mediaChunks.get(r2.size() - 2);
} else {
lastMediaChunk = null;
}
}
if (lastMediaChunk != null) {
j = Math.max(j, lastMediaChunk.endTimeUs);
}
return Math.max(j, this.primarySampleQueue.getLargestQueuedTimestampUs());
}
public long getAdjustedSeekPositionUs(long j, SeekParameters seekParameters) {
return this.chunkSource.getAdjustedSeekPositionUs(j, seekParameters);
}
public void seekToUs(long j) {
BaseMediaChunk baseMediaChunk;
boolean seekTo;
this.lastSeekPositionUs = j;
if (isPendingReset()) {
this.pendingResetPositionUs = j;
return;
}
int i = 0;
for (int i2 = 0; i2 < this.mediaChunks.size(); i2++) {
baseMediaChunk = this.mediaChunks.get(i2);
long j2 = baseMediaChunk.startTimeUs;
if (j2 == j && baseMediaChunk.clippedStartTimeUs == -9223372036854775807L) {
break;
} else {
if (j2 > j) {
break;
}
}
}
baseMediaChunk = null;
if (baseMediaChunk != null) {
seekTo = this.primarySampleQueue.seekTo(baseMediaChunk.getFirstSampleIndex(0));
} else {
seekTo = this.primarySampleQueue.seekTo(j, j < getNextLoadPositionUs());
}
if (seekTo) {
this.nextNotifyPrimaryFormatMediaChunkIndex = primarySampleIndexToMediaChunkIndex(this.primarySampleQueue.getReadIndex(), 0);
SampleQueue[] sampleQueueArr = this.embeddedSampleQueues;
int length = sampleQueueArr.length;
while (i < length) {
sampleQueueArr[i].seekTo(j, true);
i++;
}
return;
}
this.pendingResetPositionUs = j;
this.loadingFinished = false;
this.mediaChunks.clear();
this.nextNotifyPrimaryFormatMediaChunkIndex = 0;
if (this.loader.isLoading()) {
this.primarySampleQueue.discardToEnd();
SampleQueue[] sampleQueueArr2 = this.embeddedSampleQueues;
int length2 = sampleQueueArr2.length;
while (i < length2) {
sampleQueueArr2[i].discardToEnd();
i++;
}
this.loader.cancelLoading();
return;
}
this.loader.clearFatalError();
resetSampleQueues();
}
public void release() {
release(null);
}
public void release(ReleaseCallback<T> releaseCallback) {
this.releaseCallback = releaseCallback;
this.primarySampleQueue.preRelease();
for (SampleQueue sampleQueue : this.embeddedSampleQueues) {
sampleQueue.preRelease();
}
this.loader.release(this);
}
@Override // androidx.media3.exoplayer.upstream.Loader.ReleaseCallback
public void onLoaderReleased() {
this.primarySampleQueue.release();
for (SampleQueue sampleQueue : this.embeddedSampleQueues) {
sampleQueue.release();
}
this.chunkSource.release();
ReleaseCallback<T> releaseCallback = this.releaseCallback;
if (releaseCallback != null) {
releaseCallback.onSampleStreamReleased(this);
}
}
@Override // androidx.media3.exoplayer.source.SampleStream
public boolean isReady() {
return !isPendingReset() && this.primarySampleQueue.isReady(this.loadingFinished);
}
@Override // androidx.media3.exoplayer.source.SampleStream
public void maybeThrowError() throws IOException {
this.loader.maybeThrowError();
this.primarySampleQueue.maybeThrowError();
if (this.loader.isLoading()) {
return;
}
this.chunkSource.maybeThrowError();
}
@Override // androidx.media3.exoplayer.source.SampleStream
public int readData(FormatHolder formatHolder, DecoderInputBuffer decoderInputBuffer, int i) {
if (isPendingReset()) {
return -3;
}
BaseMediaChunk baseMediaChunk = this.canceledMediaChunk;
if (baseMediaChunk != null && baseMediaChunk.getFirstSampleIndex(0) <= this.primarySampleQueue.getReadIndex()) {
return -3;
}
maybeNotifyPrimaryTrackFormatChanged();
return this.primarySampleQueue.read(formatHolder, decoderInputBuffer, i, this.loadingFinished);
}
@Override // androidx.media3.exoplayer.source.SampleStream
public int skipData(long j) {
if (isPendingReset()) {
return 0;
}
int skipCount = this.primarySampleQueue.getSkipCount(j, this.loadingFinished);
BaseMediaChunk baseMediaChunk = this.canceledMediaChunk;
if (baseMediaChunk != null) {
skipCount = Math.min(skipCount, baseMediaChunk.getFirstSampleIndex(0) - this.primarySampleQueue.getReadIndex());
}
this.primarySampleQueue.skip(skipCount);
maybeNotifyPrimaryTrackFormatChanged();
return skipCount;
}
@Override // androidx.media3.exoplayer.upstream.Loader.Callback
public void onLoadCompleted(Chunk chunk, long j, long j2) {
this.loadingChunk = null;
this.chunkSource.onChunkLoadCompleted(chunk);
LoadEventInfo loadEventInfo = new LoadEventInfo(chunk.loadTaskId, chunk.dataSpec, chunk.getUri(), chunk.getResponseHeaders(), j, j2, chunk.bytesLoaded());
this.loadErrorHandlingPolicy.onLoadTaskConcluded(chunk.loadTaskId);
this.mediaSourceEventDispatcher.loadCompleted(loadEventInfo, chunk.type, this.primaryTrackType, chunk.trackFormat, chunk.trackSelectionReason, chunk.trackSelectionData, chunk.startTimeUs, chunk.endTimeUs);
this.callback.onContinueLoadingRequested(this);
}
@Override // androidx.media3.exoplayer.upstream.Loader.Callback
public void onLoadCanceled(Chunk chunk, long j, long j2, boolean z) {
this.loadingChunk = null;
this.canceledMediaChunk = null;
LoadEventInfo loadEventInfo = new LoadEventInfo(chunk.loadTaskId, chunk.dataSpec, chunk.getUri(), chunk.getResponseHeaders(), j, j2, chunk.bytesLoaded());
this.loadErrorHandlingPolicy.onLoadTaskConcluded(chunk.loadTaskId);
this.mediaSourceEventDispatcher.loadCanceled(loadEventInfo, chunk.type, this.primaryTrackType, chunk.trackFormat, chunk.trackSelectionReason, chunk.trackSelectionData, chunk.startTimeUs, chunk.endTimeUs);
if (z) {
return;
}
if (isPendingReset()) {
resetSampleQueues();
} else if (isMediaChunk(chunk)) {
discardUpstreamMediaChunksFromIndex(this.mediaChunks.size() - 1);
if (this.mediaChunks.isEmpty()) {
this.pendingResetPositionUs = this.lastSeekPositionUs;
}
}
this.callback.onContinueLoadingRequested(this);
}
/* JADX WARN: Removed duplicated region for block: B:20:0x00a9 */
/* JADX WARN: Removed duplicated region for block: B:26:0x00f1 */
@Override // androidx.media3.exoplayer.upstream.Loader.Callback
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public androidx.media3.exoplayer.upstream.Loader.LoadErrorAction onLoadError(androidx.media3.exoplayer.source.chunk.Chunk r31, long r32, long r34, java.io.IOException r36, int r37) {
/*
Method dump skipped, instructions count: 257
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.media3.exoplayer.source.chunk.ChunkSampleStream.onLoadError(androidx.media3.exoplayer.source.chunk.Chunk, long, long, java.io.IOException, int):androidx.media3.exoplayer.upstream.Loader$LoadErrorAction");
}
@Override // androidx.media3.exoplayer.source.SequenceableLoader
public boolean continueLoading(long j) {
List<BaseMediaChunk> list;
long j2;
if (this.loadingFinished || this.loader.isLoading() || this.loader.hasFatalError()) {
return false;
}
boolean isPendingReset = isPendingReset();
if (isPendingReset) {
list = Collections.emptyList();
j2 = this.pendingResetPositionUs;
} else {
list = this.readOnlyMediaChunks;
j2 = getLastMediaChunk().endTimeUs;
}
this.chunkSource.getNextChunk(j, j2, list, this.nextChunkHolder);
boolean z = this.nextChunkHolder.endOfStream;
Chunk chunk = this.nextChunkHolder.chunk;
this.nextChunkHolder.clear();
if (z) {
this.pendingResetPositionUs = -9223372036854775807L;
this.loadingFinished = true;
return true;
}
if (chunk == null) {
return false;
}
this.loadingChunk = chunk;
if (isMediaChunk(chunk)) {
BaseMediaChunk baseMediaChunk = (BaseMediaChunk) chunk;
if (isPendingReset) {
long j3 = baseMediaChunk.startTimeUs;
long j4 = this.pendingResetPositionUs;
if (j3 != j4) {
this.primarySampleQueue.setStartTimeUs(j4);
for (SampleQueue sampleQueue : this.embeddedSampleQueues) {
sampleQueue.setStartTimeUs(this.pendingResetPositionUs);
}
}
this.pendingResetPositionUs = -9223372036854775807L;
}
baseMediaChunk.init(this.chunkOutput);
this.mediaChunks.add(baseMediaChunk);
} else if (chunk instanceof InitializationChunk) {
((InitializationChunk) chunk).init(this.chunkOutput);
}
this.mediaSourceEventDispatcher.loadStarted(new LoadEventInfo(chunk.loadTaskId, chunk.dataSpec, this.loader.startLoading(chunk, this, this.loadErrorHandlingPolicy.getMinimumLoadableRetryCount(chunk.type))), chunk.type, this.primaryTrackType, chunk.trackFormat, chunk.trackSelectionReason, chunk.trackSelectionData, chunk.startTimeUs, chunk.endTimeUs);
return true;
}
@Override // androidx.media3.exoplayer.source.SequenceableLoader
public boolean isLoading() {
return this.loader.isLoading();
}
@Override // androidx.media3.exoplayer.source.SequenceableLoader
public long getNextLoadPositionUs() {
if (isPendingReset()) {
return this.pendingResetPositionUs;
}
if (this.loadingFinished) {
return Long.MIN_VALUE;
}
return getLastMediaChunk().endTimeUs;
}
@Override // androidx.media3.exoplayer.source.SequenceableLoader
public void reevaluateBuffer(long j) {
if (this.loader.hasFatalError() || isPendingReset()) {
return;
}
if (this.loader.isLoading()) {
Chunk chunk = (Chunk) Assertions.checkNotNull(this.loadingChunk);
if (!(isMediaChunk(chunk) && haveReadFromMediaChunk(this.mediaChunks.size() - 1)) && this.chunkSource.shouldCancelLoad(j, chunk, this.readOnlyMediaChunks)) {
this.loader.cancelLoading();
if (isMediaChunk(chunk)) {
this.canceledMediaChunk = (BaseMediaChunk) chunk;
return;
}
return;
}
return;
}
int preferredQueueSize = this.chunkSource.getPreferredQueueSize(j, this.readOnlyMediaChunks);
if (preferredQueueSize < this.mediaChunks.size()) {
discardUpstream(preferredQueueSize);
}
}
private void discardUpstream(int i) {
Assertions.checkState(!this.loader.isLoading());
int size = this.mediaChunks.size();
while (true) {
if (i >= size) {
i = -1;
break;
} else if (!haveReadFromMediaChunk(i)) {
break;
} else {
i++;
}
}
if (i == -1) {
return;
}
long j = getLastMediaChunk().endTimeUs;
BaseMediaChunk discardUpstreamMediaChunksFromIndex = discardUpstreamMediaChunksFromIndex(i);
if (this.mediaChunks.isEmpty()) {
this.pendingResetPositionUs = this.lastSeekPositionUs;
}
this.loadingFinished = false;
this.mediaSourceEventDispatcher.upstreamDiscarded(this.primaryTrackType, discardUpstreamMediaChunksFromIndex.startTimeUs, j);
}
private boolean isMediaChunk(Chunk chunk) {
return chunk instanceof BaseMediaChunk;
}
private void resetSampleQueues() {
this.primarySampleQueue.reset();
for (SampleQueue sampleQueue : this.embeddedSampleQueues) {
sampleQueue.reset();
}
}
private boolean haveReadFromMediaChunk(int i) {
int readIndex;
BaseMediaChunk baseMediaChunk = this.mediaChunks.get(i);
if (this.primarySampleQueue.getReadIndex() > baseMediaChunk.getFirstSampleIndex(0)) {
return true;
}
int i2 = 0;
do {
SampleQueue[] sampleQueueArr = this.embeddedSampleQueues;
if (i2 >= sampleQueueArr.length) {
return false;
}
readIndex = sampleQueueArr[i2].getReadIndex();
i2++;
} while (readIndex <= baseMediaChunk.getFirstSampleIndex(i2));
return true;
}
private void discardDownstreamMediaChunks(int i) {
int min = Math.min(primarySampleIndexToMediaChunkIndex(i, 0), this.nextNotifyPrimaryFormatMediaChunkIndex);
if (min > 0) {
Util.removeRange(this.mediaChunks, 0, min);
this.nextNotifyPrimaryFormatMediaChunkIndex -= min;
}
}
private void maybeNotifyPrimaryTrackFormatChanged() {
int primarySampleIndexToMediaChunkIndex = primarySampleIndexToMediaChunkIndex(this.primarySampleQueue.getReadIndex(), this.nextNotifyPrimaryFormatMediaChunkIndex - 1);
while (true) {
int i = this.nextNotifyPrimaryFormatMediaChunkIndex;
if (i > primarySampleIndexToMediaChunkIndex) {
return;
}
this.nextNotifyPrimaryFormatMediaChunkIndex = i + 1;
maybeNotifyPrimaryTrackFormatChanged(i);
}
}
private void maybeNotifyPrimaryTrackFormatChanged(int i) {
BaseMediaChunk baseMediaChunk = this.mediaChunks.get(i);
Format format = baseMediaChunk.trackFormat;
if (!format.equals(this.primaryDownstreamTrackFormat)) {
this.mediaSourceEventDispatcher.downstreamFormatChanged(this.primaryTrackType, format, baseMediaChunk.trackSelectionReason, baseMediaChunk.trackSelectionData, baseMediaChunk.startTimeUs);
}
this.primaryDownstreamTrackFormat = format;
}
private int primarySampleIndexToMediaChunkIndex(int i, int i2) {
do {
i2++;
if (i2 >= this.mediaChunks.size()) {
return this.mediaChunks.size() - 1;
}
} while (this.mediaChunks.get(i2).getFirstSampleIndex(0) <= i);
return i2 - 1;
}
private BaseMediaChunk getLastMediaChunk() {
return this.mediaChunks.get(r1.size() - 1);
}
private BaseMediaChunk discardUpstreamMediaChunksFromIndex(int i) {
BaseMediaChunk baseMediaChunk = this.mediaChunks.get(i);
ArrayList<BaseMediaChunk> arrayList = this.mediaChunks;
Util.removeRange(arrayList, i, arrayList.size());
this.nextNotifyPrimaryFormatMediaChunkIndex = Math.max(this.nextNotifyPrimaryFormatMediaChunkIndex, this.mediaChunks.size());
int i2 = 0;
this.primarySampleQueue.discardUpstreamSamples(baseMediaChunk.getFirstSampleIndex(0));
while (true) {
SampleQueue[] sampleQueueArr = this.embeddedSampleQueues;
if (i2 >= sampleQueueArr.length) {
return baseMediaChunk;
}
SampleQueue sampleQueue = sampleQueueArr[i2];
i2++;
sampleQueue.discardUpstreamSamples(baseMediaChunk.getFirstSampleIndex(i2));
}
}
/* loaded from: classes2.dex */
public final class EmbeddedSampleStream implements SampleStream {
private final int index;
private boolean notifiedDownstreamFormat;
public final ChunkSampleStream<T> parent;
private final SampleQueue sampleQueue;
@Override // androidx.media3.exoplayer.source.SampleStream
public void maybeThrowError() {
}
public EmbeddedSampleStream(ChunkSampleStream<T> chunkSampleStream, SampleQueue sampleQueue, int i) {
this.parent = chunkSampleStream;
this.sampleQueue = sampleQueue;
this.index = i;
}
@Override // androidx.media3.exoplayer.source.SampleStream
public boolean isReady() {
return !ChunkSampleStream.this.isPendingReset() && this.sampleQueue.isReady(ChunkSampleStream.this.loadingFinished);
}
@Override // androidx.media3.exoplayer.source.SampleStream
public int skipData(long j) {
if (ChunkSampleStream.this.isPendingReset()) {
return 0;
}
int skipCount = this.sampleQueue.getSkipCount(j, ChunkSampleStream.this.loadingFinished);
if (ChunkSampleStream.this.canceledMediaChunk != null) {
skipCount = Math.min(skipCount, ChunkSampleStream.this.canceledMediaChunk.getFirstSampleIndex(this.index + 1) - this.sampleQueue.getReadIndex());
}
this.sampleQueue.skip(skipCount);
if (skipCount > 0) {
maybeNotifyDownstreamFormat();
}
return skipCount;
}
@Override // androidx.media3.exoplayer.source.SampleStream
public int readData(FormatHolder formatHolder, DecoderInputBuffer decoderInputBuffer, int i) {
if (ChunkSampleStream.this.isPendingReset()) {
return -3;
}
if (ChunkSampleStream.this.canceledMediaChunk != null && ChunkSampleStream.this.canceledMediaChunk.getFirstSampleIndex(this.index + 1) <= this.sampleQueue.getReadIndex()) {
return -3;
}
maybeNotifyDownstreamFormat();
return this.sampleQueue.read(formatHolder, decoderInputBuffer, i, ChunkSampleStream.this.loadingFinished);
}
public void release() {
Assertions.checkState(ChunkSampleStream.this.embeddedTracksSelected[this.index]);
ChunkSampleStream.this.embeddedTracksSelected[this.index] = false;
}
private void maybeNotifyDownstreamFormat() {
if (this.notifiedDownstreamFormat) {
return;
}
ChunkSampleStream.this.mediaSourceEventDispatcher.downstreamFormatChanged(ChunkSampleStream.this.embeddedTrackTypes[this.index], ChunkSampleStream.this.embeddedTrackFormats[this.index], 0, null, ChunkSampleStream.this.lastSeekPositionUs);
this.notifiedDownstreamFormat = true;
}
}
}