diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/DelegatingSubtitleDecoder.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/DelegatingSubtitleDecoder.java index ebbb156af7..d812bd11e5 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/DelegatingSubtitleDecoder.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/DelegatingSubtitleDecoder.java @@ -15,7 +15,10 @@ */ package androidx.media3.exoplayer.text; +import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE; + import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import androidx.media3.extractor.text.CuesWithTiming; import androidx.media3.extractor.text.SimpleSubtitleDecoder; import androidx.media3.extractor.text.Subtitle; @@ -43,17 +46,19 @@ import java.util.List; *
  • DelegatingSubtitleDecoder("XXX", new XXXParser(initializationData)) *
  • XXXDecoder(initializationData) * - * - *

    TODO(b/289983417): this will only be used in the old decoding flow (Decoder after SampleQueue) - * while we maintain dual architecture. Once we fully migrate to the pre-SampleQueue flow, it can be - * deprecated and later deleted. */ -/* package */ final class DelegatingSubtitleDecoder extends SimpleSubtitleDecoder { +// TODO(b/289983417): this will only be used in the old decoding flow (Decoder after SampleQueue) +// while we maintain dual architecture. Once we fully migrate to the pre-SampleQueue flow, it can be +// deprecated and later deleted. +// TODO: remove VisibleForTesting annotation once SubtitleExtractor uses SubtitleParser (rather than +// SubtitleDecoder) and SubtitleExtractorTest is refactored +@VisibleForTesting(otherwise = PACKAGE_PRIVATE) +public final class DelegatingSubtitleDecoder extends SimpleSubtitleDecoder { private static final Subtitle EMPTY_SUBTITLE = new CuesWithTimingSubtitle(ImmutableList.of()); private final SubtitleParser subtitleParser; - /* package */ DelegatingSubtitleDecoder(String name, SubtitleParser subtitleParser) { + public DelegatingSubtitleDecoder(String name, SubtitleParser subtitleParser) { super(name); this.subtitleParser = subtitleParser; } @@ -63,7 +68,8 @@ import java.util.List; if (reset) { subtitleParser.reset(); } - @Nullable List cuesWithTiming = subtitleParser.parse(data); + @Nullable + List cuesWithTiming = subtitleParser.parse(data, /* offset= */ 0, length); if (cuesWithTiming == null) { return EMPTY_SUBTITLE; } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/SubtitleDecoderFactory.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/SubtitleDecoderFactory.java index 815e525eb7..de4450643e 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/SubtitleDecoderFactory.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/SubtitleDecoderFactory.java @@ -25,7 +25,6 @@ import androidx.media3.extractor.text.SubtitleParser; import androidx.media3.extractor.text.cea.Cea608Decoder; import androidx.media3.extractor.text.cea.Cea708Decoder; import androidx.media3.extractor.text.ttml.TtmlDecoder; -import androidx.media3.extractor.text.webvtt.WebvttDecoder; import java.util.Objects; /** A factory for {@link SubtitleDecoder} instances. */ @@ -56,7 +55,6 @@ public interface SubtitleDecoderFactory { *

    Supports formats supported by {@link DefaultSubtitleParserFactory} as well as the following: * *