/* Called from I/O thread context */ static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) { struct userdata *u; pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); }
/* Called from I/O thread context */ static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) { struct userdata *u; pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); /* (7) IF YOU NEED A FIXED BLOCK SIZE ADD THE LATENCY FOR ONE * BLOCK MINUS ONE SAMPLE HERE. pa_usec_to_bytes_round_up() IS * USEFUL FOR THAT. */ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); }
/* Called from I/O thread context */ static void sink_input_attach_cb(pa_sink_input *i) { struct userdata *u; pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll); pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i)); pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i)); pa_sink_attach_within_thread(u->sink); }
/* Called from I/O thread context */ static void sink_input_attach_cb(pa_sink_input *i) { struct userdata *u; pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll); pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i)); /* FIXME: Too small max_rewind: * https://bugs.freedesktop.org/show_bug.cgi?id=53709 */ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i)); if (PA_SINK_IS_LINKED(u->sink->thread_info.state)) pa_sink_attach_within_thread(u->sink); }
/* Called from I/O thread context */ static void sink_input_attach_cb(pa_sink_input *i) { struct userdata *u; pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll); pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); /* (8.1) IF YOU NEED A FIXED BLOCK SIZE ADD THE LATENCY FOR ONE * BLOCK MINUS ONE SAMPLE HERE. SEE (7) */ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); /* (8.2) IF YOU NEED A FIXED BLOCK SIZE ROUND * pa_sink_input_get_max_request(i) UP TO MULTIPLES OF IT * HERE. SEE (6) */ pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i)); /* FIXME: Too small max_rewind: * https://bugs.freedesktop.org/show_bug.cgi?id=53709 */ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i)); pa_sink_attach_within_thread(u->sink); }