From 2d7b9d876f8b01b26eaa97cad1ff68c58ba3d1cc Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 8 Apr 2019 14:00:25 +0100 Subject: [PATCH] Allow ContainerMediaChunks to provide their own TrackOutputProvider. Adding a protected method for that allows to supply a customized TrackOutputProvider to the ExtractorWrapper used by the ContainerMediaChunk (e.g. for logging purposes). The alternative would be to provide a TrackOutputProvider through the ChunkSampleStream constructor, but the extra initialization taking place in the ChunkSampleStream constructor would need to move somewhere else and some methods of BaseMediaChunkOutput would need to move to the TrackOutputProvider interface. This seems too much effort for niche customization case. PiperOrigin-RevId: 242448776 --- .../source/chunk/ContainerMediaChunk.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java index 10b823d444..ba7c0d0d5b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ContainerMediaChunk.java @@ -121,7 +121,7 @@ public class ContainerMediaChunk extends BaseMediaChunk { BaseMediaChunkOutput output = getOutput(); output.setSampleOffsetUs(sampleOffsetUs); extractorWrapper.init( - output, + getTrackOutputProvider(output), clippedStartTimeUs == C.TIME_UNSET ? C.TIME_UNSET : (clippedStartTimeUs - sampleOffsetUs), @@ -144,4 +144,17 @@ public class ContainerMediaChunk extends BaseMediaChunk { loadCompleted = true; } + /** + * Returns the {@link ChunkExtractorWrapper.TrackOutputProvider} to be used by the wrapped + * extractor. + * + * @param baseMediaChunkOutput The {@link BaseMediaChunkOutput} most recently passed to {@link + * #init(BaseMediaChunkOutput)}. + * @return A {@link ChunkExtractorWrapper.TrackOutputProvider} to be used by the wrapped + * extractor. + */ + protected ChunkExtractorWrapper.TrackOutputProvider getTrackOutputProvider( + BaseMediaChunkOutput baseMediaChunkOutput) { + return baseMediaChunkOutput; + } }