vlc | branch: master | Thomas Guillem <[email protected]> | Wed Nov 25 08:52:45 2020 +0100| [9c3fe6ad2e46eecd660e9aef94a297d4d564207f] | committer: Thomas Guillem
audiotrack: refactor Move special hack and deadline handling just after the write call. No functional changes. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9c3fe6ad2e46eecd660e9aef94a297d4d564207f --- modules/audio_output/audiotrack.c | 40 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c index 8e4c2ff329..605d76ce36 100644 --- a/modules/audio_output/audiotrack.c +++ b/modules/audio_output/audiotrack.c @@ -1815,7 +1815,6 @@ AudioTrack_Thread( void *p_data ) audio_output_t *p_aout = p_data; aout_sys_t *p_sys = p_aout->sys; JNIEnv *env = GET_ENV(); - vlc_tick_t i_play_deadline = 0; vlc_tick_t i_last_time_blocked = 0; if( !env ) @@ -1830,16 +1829,6 @@ AudioTrack_Thread( void *p_data ) vlc_mutex_lock( &p_sys->lock ); - /* Wait for free space in Audiotrack internal buffer */ - if( i_play_deadline != 0 && vlc_tick_now() < i_play_deadline ) - { - while( p_sys->b_thread_running && i_ret == 0 ) - i_ret = vlc_cond_timedwait( &p_sys->thread_cond, - &p_sys->lock, - i_play_deadline ); - i_play_deadline = 0; - } - /* Wait for not paused state */ while( p_sys->b_thread_running && p_sys->b_thread_paused ) { @@ -1878,22 +1867,31 @@ AudioTrack_Thread( void *p_data ) b_forced ); if( i_ret >= 0 ) { - if( p_sys->i_write_type == WRITE_BYTEARRAY ) + if( i_ret == 0 ) { - if( i_ret != 0 ) - i_last_time_blocked = 0; - else if( i_last_time_blocked == 0 ) - i_last_time_blocked = vlc_tick_now(); - } + vlc_tick_t i_now = vlc_tick_now(); - if( i_ret == 0 ) - i_play_deadline = vlc_tick_now() + __MAX( 10000, FRAMES_TO_US( - p_sys->i_max_audiotrack_samples / 5 ) ); + /* cf. b_forced HACK comment */ + if( p_sys->i_write_type == WRITE_BYTEARRAY && i_last_time_blocked == 0 ) + i_last_time_blocked = i_now; + + /* Wait for free space in Audiotrack internal buffer */ + vlc_tick_t i_play_deadline = i_now + __MAX( 10000, + FRAMES_TO_US( p_sys->i_max_audiotrack_samples / 5 ) ); + + while( p_sys->b_thread_running && i_ret == 0 ) + i_ret = vlc_cond_timedwait( &p_sys->thread_cond, &p_sys->lock, + i_play_deadline ); + + } else + { + i_last_time_blocked = 0; p_sys->circular.i_read += i_ret; + vlc_cond_signal( &p_sys->aout_cond ); + } } - vlc_cond_signal( &p_sys->aout_cond ); vlc_mutex_unlock( &p_sys->lock ); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
