media/library
tonihei 3c6b8c5d7b Handle AV sync timestamps when draining the audio sink during tunneling
When audio processors are enabled during tunneling, they must produce
output immediately, ensuring that the timestamps of the output samples
correspond to the input and that no additional samples are produced.
This requirement is documented in the Javadoc of DefaultAudioSink.

However, this alone doesn't guarantee all buffers are immediately
written to the AudioTrack, because the AudioTrack writes are
non-blocking and may need multiple attempts.

When draining the audio sink at the end of the stream, we currently
fail in this situation because we assert that the timestamp must be
set (=the drain operation is a no-op). But this may not be true when
the previous non-blocking write wasn't fully handled. We can fix this
by saving the last timestamp and reusing it during draining.

Issue: google/ExoPlayer#10847
PiperOrigin-RevId: 500943891
2023-01-10 20:51:19 +00:00
..
all Fix minimum API level issue 2022-02-08 11:03:36 +00:00
common Initialise fields used for bundling as String directly 2023-01-10 20:20:08 +00:00
core Handle AV sync timestamps when draining the audio sink during tunneling 2023-01-10 20:51:19 +00:00
dash Add missing IntDef on MediaSource.Factory.getSupportedTypes overrides 2022-11-10 16:12:02 +00:00
database Reformat some javadoc 2022-02-18 15:02:33 +00:00
datasource Deprecate C.POSITION_UNSET in favour of C.INDEX_UNSET 2022-12-12 12:24:50 +00:00
decoder Expect PresentationTime Discontinuity During Stream Transitions 2022-04-26 14:25:46 +01:00
effect Fix some minor issues/typos 2023-01-10 20:08:14 +00:00
extractor Throw a ParserException instead of a NullPointerException if the sample table (stbl) is missing a required sample description (stsd). 2023-01-10 20:04:22 +00:00
hls Refactor transformation completion 2022-11-21 14:27:00 +00:00
rtsp Add javadoc links to README files 2022-12-12 13:07:19 +00:00
smoothstreaming Add missing IntDef on MediaSource.Factory.getSupportedTypes overrides 2022-11-10 16:12:02 +00:00
transformer Make EncoderBitrateProvider and implementations package private. 2023-01-10 20:47:24 +00:00
ui Fix order of playback controls in RTL layout 2023-01-04 18:56:03 +00:00
README.md Update to androidx.media3 2021-10-27 09:12:46 +01:00

ExoPlayer library

The ExoPlayer library is split into multiple modules. See ExoPlayer's top level README for more information about the available library modules and how to use them.