avplay: use a separate buffer for playing silence
This commit is contained in:
parent
f08e54e83d
commit
e2a2c49fcd
6
avplay.c
6
avplay.c
@ -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)
|
|||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user