From 8afbdc375c23c21d484df456d22e982a8e26d85b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 7 May 2008 01:38:16 +0000 Subject: update to new rewinding logic git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2380 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/modules/module-ladspa-sink.c | 7 ++----- src/modules/module-remap-sink.c | 7 ++----- src/pulsecore/protocol-native.c | 4 ++-- src/pulsecore/sound-file-stream.c | 7 ++----- 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c index be509d73..664d73e9 100644 --- a/src/modules/module-ladspa-sink.c +++ b/src/modules/module-ladspa-sink.c @@ -146,10 +146,7 @@ static void sink_request_rewind(pa_sink *s) { pa_assert_se(u = s->userdata); /* Just hand this one over to the master sink */ - pa_sink_input_request_rewind( - u->sink_input, - s->thread_info.rewind_nbytes + pa_memblockq_get_length(u->memblockq), - FALSE, FALSE); + pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes + pa_memblockq_get_length(u->memblockq), TRUE, FALSE); } /* Called from I/O thread context */ @@ -334,7 +331,7 @@ static void sink_input_state_change_cb(pa_sink_input *i, pa_sink_input_state_t s if (PA_SINK_INPUT_IS_LINKED(state) && i->thread_info.state == PA_SINK_INPUT_INIT) { pa_log_debug("Requesting rewind due to state change."); - pa_sink_input_request_rewind(i, 0, TRUE, TRUE); + pa_sink_input_request_rewind(i, 0, FALSE, TRUE); } } diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c index c2adf2cb..985afbc8 100644 --- a/src/modules/module-remap-sink.c +++ b/src/modules/module-remap-sink.c @@ -119,10 +119,7 @@ static void sink_request_rewind(pa_sink *s) { pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); - pa_sink_input_request_rewind( - u->sink_input, - s->thread_info.rewind_nbytes, - FALSE, FALSE); + pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes, TRUE, FALSE); } /* Called from I/O thread context */ @@ -251,7 +248,7 @@ static void sink_input_state_change_cb(pa_sink_input *i, pa_sink_input_state_t s if (PA_SINK_INPUT_IS_LINKED(state) && i->thread_info.state == PA_SINK_INPUT_INIT) { pa_log_debug("Requesting rewind due to state change."); - pa_sink_input_request_rewind(i, 0, TRUE, TRUE); + pa_sink_input_request_rewind(i, 0, FALSE, TRUE); } } diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index d6e5602e..7eeefb84 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -1116,7 +1116,7 @@ static void handle_seek(playback_stream *s, int64_t indexw) { pa_log_debug("Requesting rewind due to end of underrun."); pa_sink_input_request_rewind(s->sink_input, s->sink_input->thread_info.underrun_for == (size_t) -1 ? 0 : s->sink_input->thread_info.underrun_for, - TRUE, TRUE); + FALSE, TRUE); } } else { @@ -1129,7 +1129,7 @@ static void handle_seek(playback_stream *s, int64_t indexw) { * let's have it usk us again */ pa_log_debug("Requesting rewind due to rewrite."); - pa_sink_input_request_rewind(s->sink_input, indexr - indexw, FALSE, FALSE); + pa_sink_input_request_rewind(s->sink_input, indexr - indexw, TRUE, FALSE); } } diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c index 918313f8..e209676f 100644 --- a/src/pulsecore/sound-file-stream.c +++ b/src/pulsecore/sound-file-stream.c @@ -3,7 +3,7 @@ /*** This file is part of PulseAudio. - Copyright 2004-2006 Lennart Poettering + Copyright 2004-2008 Lennart Poettering PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published @@ -245,7 +245,6 @@ int pa_play_file( pa_sample_spec ss; pa_sink_input_new_data data; int fd; - pa_memchunk silence; pa_assert(sink); pa_assert(fname); @@ -347,9 +346,7 @@ int pa_play_file( u->sink_input->state_change = sink_input_state_change_cb; u->sink_input->userdata = u; - pa_sink_input_get_silence(u->sink_input, &silence); - u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&u->sink_input->sample_spec), 1, 1, 0, &silence); - pa_memblock_unref(silence.memblock); + u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL); pa_sink_input_put(u->sink_input); -- cgit