From aaec2aba3890e1b2ea8f4dc158d884bc85a59517 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 27 Oct 2015 20:56:46 +0100 Subject: player: add audio drop/duplicate mode Not very robust in the moment. --- audio/audio_buffer.c | 9 +++++++++ audio/audio_buffer.h | 1 + 2 files changed, 10 insertions(+) (limited to 'audio') diff --git a/audio/audio_buffer.c b/audio/audio_buffer.c index 2bd546a532..c0f1341afe 100644 --- a/audio/audio_buffer.c +++ b/audio/audio_buffer.c @@ -119,6 +119,15 @@ void mp_audio_buffer_prepend_silence(struct mp_audio_buffer *ab, int samples) mp_audio_fill_silence(ab->buffer, 0, samples); } +void mp_audio_buffer_duplicate(struct mp_audio_buffer *ab, int samples) +{ + assert(samples >= 0 && samples <= ab->buffer->samples); + int oldlen = ab->buffer->samples; + ab->buffer->samples += samples; + mp_audio_realloc_min(ab->buffer, ab->buffer->samples); + mp_audio_copy(ab->buffer, oldlen, ab->buffer, oldlen - samples, samples); +} + // Get the start of the current readable buffer. void mp_audio_buffer_peek(struct mp_audio_buffer *ab, struct mp_audio *out_mpa) { diff --git a/audio/audio_buffer.h b/audio/audio_buffer.h index 8cd0df30d0..f517542ef5 100644 --- a/audio/audio_buffer.h +++ b/audio/audio_buffer.h @@ -35,6 +35,7 @@ void mp_audio_buffer_get_write_buffer(struct mp_audio_buffer *ab, int minsamples void mp_audio_buffer_finish_write(struct mp_audio_buffer *ab, int samples); void mp_audio_buffer_append(struct mp_audio_buffer *ab, struct mp_audio *mpa); void mp_audio_buffer_prepend_silence(struct mp_audio_buffer *ab, int samples); +void mp_audio_buffer_duplicate(struct mp_audio_buffer *ab, int samples); void mp_audio_buffer_peek(struct mp_audio_buffer *ab, struct mp_audio *out_mpa); void mp_audio_buffer_skip(struct mp_audio_buffer *ab, int samples); void mp_audio_buffer_clear(struct mp_audio_buffer *ab); -- cgit v1.2.3