Commit e2a2c49f authored by Justin Ruggles's avatar Justin Ruggles

avplay: use a separate buffer for playing silence

parent f08e54e8
...@@ -157,6 +157,7 @@ typedef struct VideoState { ...@@ -157,6 +157,7 @@ typedef struct VideoState {
compensation */ compensation */
DECLARE_ALIGNED(16,uint8_t,audio_buf1)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2]; DECLARE_ALIGNED(16,uint8_t,audio_buf1)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2];
DECLARE_ALIGNED(16,uint8_t,audio_buf2)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2]; DECLARE_ALIGNED(16,uint8_t,audio_buf2)[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2];
uint8_t silence_buf[SDL_AUDIO_BUFFER_SIZE];
uint8_t *audio_buf; uint8_t *audio_buf;
unsigned int audio_buf_size; /* in bytes */ unsigned int audio_buf_size; /* in bytes */
int audio_buf_index; /* in bytes */ int audio_buf_index; /* in bytes */
...@@ -2129,9 +2130,8 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len) ...@@ -2129,9 +2130,8 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
audio_size = audio_decode_frame(is, &pts); audio_size = audio_decode_frame(is, &pts);
if (audio_size < 0) { if (audio_size < 0) {
/* if error, just output silence */ /* if error, just output silence */
is->audio_buf = is->audio_buf1; is->audio_buf = is->silence_buf;
is->audio_buf_size = 1024; is->audio_buf_size = sizeof(is->silence_buf);
memset(is->audio_buf, 0, is->audio_buf_size);
} else { } else {
if (is->show_audio) if (is->show_audio)
update_sample_display(is, (int16_t *)is->audio_buf, audio_size); update_sample_display(is, (int16_t *)is->audio_buf, audio_size);
......
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