[FFmpeg-cvslog] ffplay: silence buffer size must be a multiple of frame size
Marton Balint
git at videolan.org
Sat Jan 14 16:55:25 CET 2012
ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Mon Jan 9 00:23:12 2012 +0100| [1348420b8ae87f19e1659a9a50e74df6e3791b57] | committer: Marton Balint
ffplay: silence buffer size must be a multiple of frame size
Otherwise the audio channels sometimes would be shifted on output.
Signed-off-by: Marton Balint <cus at passwd.hu>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1348420b8ae87f19e1659a9a50e74df6e3791b57
---
ffplay.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/ffplay.c b/ffplay.c
index 5019fb5..749cfc7 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -2163,6 +2163,7 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
VideoState *is = opaque;
int audio_size, len1;
int bytes_per_sec;
+ int frame_size = av_samples_get_buffer_size(NULL, is->audio_tgt_channels, 1, is->audio_tgt_fmt, 1);
double pts;
audio_callback_time = av_gettime();
@@ -2173,7 +2174,7 @@ static void sdl_audio_callback(void *opaque, Uint8 *stream, int len)
if (audio_size < 0) {
/* if error, just output silence */
is->audio_buf = is->silence_buf;
- is->audio_buf_size = sizeof(is->silence_buf);
+ is->audio_buf_size = sizeof(is->silence_buf) / frame_size * frame_size;
} else {
if (is->show_mode != SHOW_MODE_VIDEO)
update_sample_display(is, (int16_t *)is->audio_buf, audio_size);
More information about the ffmpeg-cvslog
mailing list