media/libraries
tonihei 7ab677239e 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 18:39:42 +00:00
..
cast Clarify behavior for out-of-bounds indices and align implementations 2022-12-21 15:07:20 +00:00
common Initialise fields used for bundling as String directly 2023-01-10 18:33:20 +00:00
database Add javadoc links to README files 2022-12-12 11:19:23 +00:00
datasource Add javadoc links to README files 2022-12-12 11:19:23 +00:00
datasource_cronet Add javadoc links to README files 2022-12-12 11:19:23 +00:00
datasource_okhttp Add javadoc links to README files 2022-12-12 11:19:23 +00:00
datasource_rtmp Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder_av1 Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder_ffmpeg Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder_flac Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder_opus Add javadoc links to README files 2022-12-12 11:19:23 +00:00
decoder_vp9 Add javadoc links to README files 2022-12-12 11:19:23 +00:00
effect Fix some minor issues/typos 2023-01-10 18:30:50 +00:00
exoplayer Handle AV sync timestamps when draining the audio sink during tunneling 2023-01-10 18:39:42 +00:00
exoplayer_dash Add javadoc links to README files 2022-12-12 11:19:23 +00:00
exoplayer_hls Add javadoc links to README files 2022-12-12 11:19:23 +00:00
exoplayer_ima Initialise fields used for bundling as String directly 2023-01-10 18:33:20 +00:00
exoplayer_rtsp Add javadoc links to README files 2022-12-12 11:19:23 +00:00
exoplayer_smoothstreaming Add javadoc links to README files 2022-12-12 11:19:23 +00:00
exoplayer_workmanager Add javadoc links to README files 2022-12-12 11:19:23 +00:00
extractor Throw a ParserException instead of a NullPointerException if the sample table (stbl) is missing a required sample description (stsd). 2023-01-04 21:58:17 +00:00
session Initialise fields used for bundling as String directly 2023-01-10 18:33:20 +00:00
test_data Fix sample interleaving 2023-01-10 18:35:11 +00:00
test_exoplayer_playback Fix instrumentation tests not working via Gradle 2022-09-30 18:03:11 +00:00
test_session_common Migrate BROWSER_ROOT_HINTS_KEY_ROOT_CHILDREN_SUPPORTED_FLAGS to Media3 2022-11-24 14:38:41 +00:00
test_session_current Add BitmapLoader injection in MediaController 2022-12-21 15:23:38 +00:00
test_utils Rollback of 7e63997459 2022-12-21 15:13:24 +00:00
test_utils_robolectric Rollback of 7e63997459 2022-12-21 15:13:24 +00:00
transformer Make EncoderBitrateProvider and implementations package private. 2023-01-10 18:38:53 +00:00
ui Fix order of playback controls in RTL layout 2023-01-04 21:38:29 +00:00
ui_leanback Fix Dackka error due to param name mismatch 2022-12-21 15:17:34 +00:00