update to new rewinding logic

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2380 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2008-05-07 01:38:16 +00:00
parent 9d7fde5fe3
commit 8afbdc375c
4 changed files with 8 additions and 17 deletions

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);