diff options
Diffstat (limited to 'libavutil/audio_fifo.c')
-rw-r--r-- | libavutil/audio_fifo.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libavutil/audio_fifo.c b/libavutil/audio_fifo.c index 574907aa32..d5298cce4d 100644 --- a/libavutil/audio_fifo.c +++ b/libavutil/audio_fifo.c @@ -136,6 +136,25 @@ int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples) return nb_samples; } +int av_audio_fifo_peek(AVAudioFifo *af, void **data, int nb_samples) +{ + int i, ret, size; + + if (nb_samples < 0) + return AVERROR(EINVAL); + nb_samples = FFMIN(nb_samples, af->nb_samples); + if (!nb_samples) + return 0; + + size = nb_samples * af->sample_size; + for (i = 0; i < af->nb_buffers; i++) { + if ((ret = av_fifo_generic_peek(af->buf[i], data[i], size, NULL)) < 0) + return AVERROR_BUG; + } + + return nb_samples; +} + int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples) { int i, ret, size; |