media/libraries/common
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
lint-baseline.xml Add lint base to make gradle lint run without errors 2022-06-15 15:27:34 +00:00
proguard-rules.txt Update to androidx.media3 2021-10-27 09:12:46 +01:00
README.md Fix javadoc links in media README files 2023-03-30 17:26:40 +00:00

Common module

Provides common code and utilities used by other media modules. Application code will not normally need to depend on this module directly.