vlc | branch: master | Thomas Guillem <[email protected]> | Mon Nov 23 18:04:07 2020 +0100| [ce763c7541fc0007977bfef64c525f3f95ade572] | committer: Thomas Guillem
audiotracy: always request the timestamp during the syncing phase Don't wait 500ms between 2 requests if we don't have a valid timestamp. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ce763c7541fc0007977bfef64c525f3f95ade572 --- modules/audio_output/audiotrack.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c index 7182f0b8fe..1cca517e3d 100644 --- a/modules/audio_output/audiotrack.c +++ b/modules/audio_output/audiotrack.c @@ -750,8 +750,6 @@ AudioTrack_GetTimestampPositionUs( JNIEnv *env, audio_output_t *p_aout ) /* Fetch an AudioTrack timestamp every AUDIOTIMESTAMP_INTERVAL_US (500ms) */ if( i_now - p_sys->timestamp.i_last_time >= AUDIOTIMESTAMP_INTERVAL_US ) { - p_sys->timestamp.i_last_time = i_now; - if( JNI_AT_CALL_BOOL( getTimestamp, p_sys->timestamp.p_obj ) ) { p_sys->timestamp.i_frame_us = VLC_TICK_FROM_NS(JNI_AUDIOTIMESTAMP_GET_LONG( nanoTime )); @@ -764,21 +762,26 @@ AudioTrack_GetTimestampPositionUs( JNIEnv *env, audio_output_t *p_aout ) p_sys->timestamp.i_frame_post_last = i_frame_post_last; p_sys->timestamp.i_frame_pos = i_frame_post_last + (p_sys->timestamp.i_frame_wrap_count << 32); + + /* frame time should be after last play time + * frame time shouldn't be in the future + * frame time should be less than 10 seconds old */ + if( p_sys->timestamp.i_frame_us != 0 && p_sys->timestamp.i_frame_pos != 0 + && p_sys->timestamp.i_frame_us > p_sys->timestamp.i_play_time + && i_now > p_sys->timestamp.i_frame_us + && ( i_now - p_sys->timestamp.i_frame_us ) <= VLC_TICK_FROM_SEC(10) ) + p_sys->timestamp.i_last_time = i_now; + else + { + p_sys->timestamp.i_last_time = 0; + p_sys->timestamp.i_frame_us = 0; + } } else - { p_sys->timestamp.i_frame_us = 0; - p_sys->timestamp.i_frame_pos = 0; - } } - /* frame time should be after last play time - * frame time shouldn't be in the future - * frame time should be less than 10 seconds old */ - if( p_sys->timestamp.i_frame_us != 0 && p_sys->timestamp.i_frame_pos != 0 - && p_sys->timestamp.i_frame_us > p_sys->timestamp.i_play_time - && i_now > p_sys->timestamp.i_frame_us - && ( i_now - p_sys->timestamp.i_frame_us ) <= VLC_TICK_FROM_SEC(10) ) + if( p_sys->timestamp.i_frame_us != 0 ) { vlc_tick_t i_time_diff = i_now - p_sys->timestamp.i_frame_us; jlong i_frames_diff = samples_from_vlc_tick(i_time_diff, p_sys->fmt.i_rate); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
