Cache ChunkIndex once load is done

This commit is contained in:
Colin Kho 2024-08-19 10:28:14 -07:00
parent 1c1fd4d8b8
commit 4a6c5c7598

View file

@ -39,6 +39,7 @@ public final class InitializationChunk extends Chunk {
private final ChunkExtractor chunkExtractor; private final ChunkExtractor chunkExtractor;
private @MonotonicNonNull TrackOutputProvider trackOutputProvider; private @MonotonicNonNull TrackOutputProvider trackOutputProvider;
private @Nullable ChunkIndex chunkIndex;
private long nextLoadPosition; private long nextLoadPosition;
private volatile boolean loadCanceled; private volatile boolean loadCanceled;
@ -105,14 +106,19 @@ public final class InitializationChunk extends Chunk {
while (!loadCanceled && chunkExtractor.read(input)) {} while (!loadCanceled && chunkExtractor.read(input)) {}
} finally { } finally {
nextLoadPosition = input.getPosition() - dataSpec.position; nextLoadPosition = input.getPosition() - dataSpec.position;
chunkIndex = chunkExtractor.getChunkIndex();
} }
} finally { } finally {
DataSourceUtil.closeQuietly(dataSource); DataSourceUtil.closeQuietly(dataSource);
} }
} }
/**
* Returns the {@link ChunkIndex} most recently obtained from the latest {@link #load()}, or null
* if a {@link ChunkIndex} has not been obtained.
*/
@Nullable @Nullable
public ChunkIndex getChunkIndex() { public ChunkIndex getChunkIndex() {
return chunkExtractor.getChunkIndex(); return chunkIndex;
} }
} }