media/libraries
tonihei 9af65a909d Don't block AudioTrack when waiting for previous release
We wait until a previous AudioTrack has been released before
creating a new one. This is currently done with a thread
block operation, which may cause ANRs in the extreme case
when someone attempts to release the player while this is
still blocked.

The problem can be avoided by just returning false from
DefaultAudioSink.handleBuffer to try again until the previous
AudioTrack is released.

Reproduction steps to force the issue:
1. Add Thread.sleep(10000); to the AudioTrack release thread.
2. Add this to the demo app:
    private int positionMs = 0;

    Handler handler = new Handler();
    handler.post(new Runnable() {
      @Override
      public void run() {
        player.seekTo(positionMs++);
        if (positionMs == 10) {
          player.release();
        } else {
          handler.postDelayed(this, 1000);
        }
      }
3. Observe Player release timeout exception.

These steps can't be easily captured in a unit test as we can't
artifically delay the AudioTrack release from the test.

Issue: google/ExoPlayer#10057
PiperOrigin-RevId: 459468912
(cherry picked from commit a83ab05aec)
2022-07-07 10:22:56 +00:00
..
cast Use mediaId as contentId if available 2022-07-05 23:21:59 +00:00
common Merge pull request #10260 from sr1990:clearkey_parse_licenseurl 2022-07-07 16:43:14 +00:00
database Mark all non-public IntDefs as only TYPE_USE 2022-02-21 16:56:36 +00:00
datasource Remove InvalidResponseCodeException#headerFields from the stable API 2022-05-26 11:51:27 +00:00
datasource_cronet Add @deprecated javadoc to all @Deprecated @Override methods 2022-05-31 13:51:49 +00:00
datasource_okhttp Workaround for OkHttp Interrupt issues. 2022-05-09 10:59:41 +01:00
datasource_rtmp Remove references to deprecated DefaultDataSourceFactory from dev guide 2022-03-24 15:13:09 +00:00
decoder Expect PresentationTime Discontinuity During Stream Transitions 2022-04-26 14:21:36 +01:00
decoder_av1 Make sure native library loads use correct class loader 2022-02-22 11:25:44 +00:00
decoder_ffmpeg Remove FfmpegVideoRenderer from 2.18.0 release 2022-05-30 17:58:14 +00:00
decoder_flac Make sure native library loads use correct class loader 2022-02-22 11:25:44 +00:00
decoder_opus Ignore decoding test cases when library not available 2022-05-31 15:33:33 +00:00
decoder_vp9 Make sure native library loads use correct class loader 2022-02-22 11:25:44 +00:00
exoplayer Don't block AudioTrack when waiting for previous release 2022-07-07 10:22:56 +00:00
exoplayer_dash Merge pull request #10260 from sr1990:clearkey_parse_licenseurl 2022-07-07 16:43:14 +00:00
exoplayer_hls Fix bug: playback is frozen with HLS chunkless preparation 2022-06-09 18:36:35 +00:00
exoplayer_ima Simplify DefaultMediaSourceFactory instantiation in a test 2022-05-30 16:32:59 +00:00
exoplayer_rtsp Merge pull request #63 from ittiam-systems:rtp-h263 2022-06-16 11:41:49 +00:00
exoplayer_smoothstreaming Rollback of e01bb47263 2022-05-23 17:12:22 +01:00
exoplayer_workmanager Reformat some javadoc 2022-02-18 14:54:02 +00:00
extractor Fix MP4 parser issue in reading bitrates from esds boxes. 2022-07-01 09:52:45 +00:00
session Fix incorrect link tags 2022-07-06 11:02:12 +00:00
test_data Merge pull request #10260 from sr1990:clearkey_parse_licenseurl 2022-07-07 16:43:14 +00:00
test_exoplayer_playback Move TrackGroupArray back to ExoPlayer 2022-03-17 13:08:56 +00:00
test_session_common Remove setMediaUri/onSetMediaUri 2022-06-15 17:00:27 +00:00
test_session_current Avoid out of bounds when setting less media items than in playlist 2022-06-15 19:05:26 +00:00
test_utils Merge pull request #96 from fengdai:release 2022-07-04 19:56:41 +00:00
test_utils_robolectric Clean up offload state tracking 2022-06-27 09:34:56 +00:00
transformer Skip BitrateAnalysisTest if device is incapable. 2022-05-30 16:51:51 +00:00
ui Ensure TalkBack announces the selected playback speed in the UI menu 2022-06-29 16:10:11 +00:00
ui_leanback Fixes for some minor misc issues 2021-11-19 14:44:25 +00:00