summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-10-27 20:56:46 +0100
committerwm4 <wm4@nowhere>2015-10-27 20:56:46 +0100
commitaaec2aba3890e1b2ea8f4dc158d884bc85a59517 (patch)
tree61d9e3464aa0777bb7e58257e24b290c4b2146bd /audio
parent3b95dd47d53d4d9b5a247f2dda550b5470e62b48 (diff)
downloadmpv-aaec2aba3890e1b2ea8f4dc158d884bc85a59517.tar.bz2
mpv-aaec2aba3890e1b2ea8f4dc158d884bc85a59517.tar.xz
player: add audio drop/duplicate mode
Not very robust in the moment.
Diffstat (limited to 'audio')
-rw-r--r--audio/audio_buffer.c9
-rw-r--r--audio/audio_buffer.h1
2 files changed, 10 insertions, 0 deletions
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);