media/libraries/extractor
ibaker d111976125 Change SubtitleParser interface to support incremental output
This change introduces two new types of method to `SubtitleParser`:
1. `parse()` methods that take a `Consumer<CuesWithTiming>` and return `void`
2. `parseToLegacySubtitle` method that returns `Subtitle`

(1) ensures that in the new 'parse before SampleQueue' world we can
write cues to the `SampleQueue` as soon as they're ready - this is
especially important when parsing monolithic text files, e.g. for a
whole movie.

(2) ensures that during the transition, the legacy 'parse after
SampleQueue' behaviour doesn't see any regressions in 'time to first
cue being shown'. Previously we had a single implementation to convert
from `List<CuesWithTiming>` to `Subtitle`, but this relies on the
complete list of cues being available, which can take a long time for
large files in some formats (with ExoPlayer's current parsing logic).
By allowing implementations to customise the way they create a
`Subtitle`, we can directly re-use the existing logic, so that the
'time to first cue being shown' should stay the same.

This change migrates all **usages** to the new methods, but doesn't
migrate any **implementations**. I will migrate the implementations in
follow-up CLs before deleting the old list-returning `parse()` methods.

PiperOrigin-RevId: 565057945
2023-09-13 08:33:29 -07:00
..
src Change SubtitleParser interface to support incremental output 2023-09-13 08:33:29 -07:00
build.gradle Replace deprecated NullableType from checkerframework with our own one 2023-06-19 16:08:20 +01:00
proguard-rules.txt Release MIDI decoder module in open-source 2023-06-02 09:18:09 +00:00
README.md Fix javadoc links in media README files 2023-03-30 17:26:40 +00:00

Extractor module

Provides media container extractors and related utilities. Application code will not normally need to depend on this module directly.