Commit b1f78632 authored by Marton Balint's avatar Marton Balint

ffplay: do not block audio thread on WIN32

The windows SDL audio driver plays the old data in the buffer in a loop if it
is not updated in time. So instead of waiting for data and blocking the the
audio thread, return silence if no data is available.

Should fix ticket #2289.
Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
parent 8db0f71b
...@@ -2303,6 +2303,13 @@ static int audio_decode_frame(VideoState *is) ...@@ -2303,6 +2303,13 @@ static int audio_decode_frame(VideoState *is)
return -1; return -1;
do { do {
#if defined(_WIN32)
while (frame_queue_nb_remaining(&is->sampq) == 0) {
if ((av_gettime_relative() - audio_callback_time) > 1000000LL * is->audio_hw_buf_size / is->audio_tgt.bytes_per_sec / 2)
return -1;
av_usleep (1000);
}
#endif
if (!(af = frame_queue_peek_readable(&is->sampq))) if (!(af = frame_queue_peek_readable(&is->sampq)))
return -1; return -1;
frame_queue_next(&is->sampq); frame_queue_next(&is->sampq);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment