diff --git a/ffplay.c b/ffplay.c index aab03d1026..123f4bce16 100644 --- a/ffplay.c +++ b/ffplay.c @@ -2531,7 +2531,7 @@ static int audio_decode_frame(VideoState *is) static void sdl_audio_callback(void *opaque, Uint8 *stream, int len) { VideoState *is = opaque; - int audio_size, len1, silence = 0; + int audio_size, len1; audio_callback_time = av_gettime_relative(); @@ -2540,7 +2540,7 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len) audio_size = audio_decode_frame(is); if (audio_size < 0) { /* if error, just output silence */ - silence = 1; + is->audio_buf = NULL; is->audio_buf_size = SDL_AUDIO_MIN_BUFFER_SIZE / is->audio_tgt.frame_size * is->audio_tgt.frame_size; } else { if (is->show_mode != SHOW_MODE_VIDEO) @@ -2552,11 +2552,11 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len) len1 = is->audio_buf_size - is->audio_buf_index; if (len1 > len) len1 = len; - if (!is->muted && !silence && is->audio_volume == SDL_MIX_MAXVOLUME) + if (!is->muted && is->audio_buf && is->audio_volume == SDL_MIX_MAXVOLUME) memcpy(stream, (uint8_t *)is->audio_buf + is->audio_buf_index, len1); else { memset(stream, 0, len1); - if (!is->muted && !silence) + if (!is->muted && is->audio_buf) SDL_MixAudio(stream, (uint8_t *)is->audio_buf + is->audio_buf_index, len1, is->audio_volume); } len -= len1;