Lines Matching defs:sink
4 This module is based off Lennart Poettering's LADSPA sink and swaps out
53 #include <pulsecore/sink.h>
72 _("sink_name=<name of the sink> "
73 "sink_properties=<properties for the sink> "
74 "sink_master=<sink to connect to> "
88 pa_sink *sink;
247 //size_t fs=pa_frame_size(&u->sink->sample_spec);
249 /* The sink is _put() before the sink input is, so let's
251 * sink input is first shut down, the sink second. */
252 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
259 /* Get the latency of the master sink */
260 pa_sink_get_latency_within_thread(u->sink_input->sink, true) +
262 /* Add the latency internal to our sink input on top */
264 pa_memblockq_get_length(u->input_q), &u->sink_input->sink->sample_spec) +
265 pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
266 // pa_bytes_to_usec(u->samples_gathered * fs, &u->sink->sample_spec);
301 * of the master sink to make sure we are heard immediately */
317 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
321 /* Just hand this one over to the master sink */
332 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
336 /* Just hand this one over to the master sink */
524 size_t mbs = pa_mempool_block_size_max(u->sink->core->mempool);
531 tchunk.memblock = pa_memblock_new(u->sink->core->mempool, tchunk.length);
543 size_t fs = pa_frame_size(&(u->sink->sample_spec));
593 size_t fs = pa_frame_size(&(u->sink->sample_spec));
620 pa_assert(u->sink);
622 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state))
629 fs = pa_frame_size(&(u->sink->sample_spec));
630 mbs = pa_mempool_block_size_max(u->sink->core->mempool);
635 //nbytes = PA_MIN(nbytes, pa_mempool_block_size_max(u->sink->core->mempool));
654 pa_sink_process_rewind(u->sink, 0);
663 //pa_sink_render(u->sink, input_remaining * fs, &tchunk);
664 pa_sink_render_full(u->sink, PA_MIN(input_remaining * fs, mbs), &tchunk);
710 pa_sink_volume_changed(u->sink, &i->volume);
720 pa_sink_mute_changed(u->sink, i->muted);
725 size_t fs = pa_frame_size(&u->sink->sample_spec);
737 pa_sink_set_max_request_within_thread(u->sink, max_request * fs);
750 /* If the sink is not yet linked, there is nothing to rewind */
751 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state))
754 if (u->sink->thread_info.rewind_nbytes > 0) {
760 amount = PA_MIN(u->sink->thread_info.rewind_nbytes, max_rewrite);
761 u->sink->thread_info.rewind_nbytes = 0;
771 pa_sink_process_rewind(u->sink, amount);
785 pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
797 pa_sink_set_max_request_within_thread(u->sink, PA_ROUND_UP(nbytes / fs, u->R) * fs);
807 pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
817 pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
827 if (PA_SINK_IS_LINKED(u->sink->thread_info.state))
828 pa_sink_detach_within_thread(u->sink);
830 pa_sink_set_rtpoll(u->sink, NULL);
841 pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
842 pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
843 pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
850 pa_sink_set_max_request_within_thread(u->sink, max_request * fs);
854 pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i));
856 if (PA_SINK_IS_LINKED(u->sink->thread_info.state))
857 pa_sink_attach_within_thread(u->sink);
867 /* The order here matters! We first kill the sink so that streams
868 * can properly be moved away while the sink input is still connected
871 pa_sink_unlink(u->sink);
877 /* Leave u->sink alone for now, it will be cleaned up on module
970 key.data = u->sink->name;
1035 key.data = u->sink->name;
1072 return u->sink != dest;
1089 pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
1090 pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
1099 pa_sink_set_description(u->sink, new_description);
1103 pa_sink_set_asyncmsgq(u->sink, NULL);
1122 pa_log_warn("module-equalizer-sink is currently unsupported, and can sometimes cause "
1132 pa_log("Master sink not found");
1197 /* Create sink */
1230 u->sink = pa_sink_new(m->core, &sink_data, (master->flags & (PA_SINK_LATENCY | PA_SINK_DYNAMIC_LATENCY))
1234 if (!u->sink) {
1235 pa_log("Failed to create sink.");
1239 u->sink->parent.process_msg = sink_process_msg_cb;
1240 u->sink->set_state_in_main_thread = sink_set_state_in_main_thread_cb;
1241 u->sink->set_state_in_io_thread = sink_set_state_in_io_thread_cb;
1242 u->sink->update_requested_latency = sink_update_requested_latency_cb;
1243 u->sink->request_rewind = sink_request_rewind_cb;
1244 pa_sink_set_set_mute_callback(u->sink, sink_set_mute_cb);
1246 pa_sink_set_set_volume_callback(u->sink, sink_set_volume_cb);
1247 pa_sink_enable_decibel_volume(u->sink, true);
1249 u->sink->userdata = u;
1251 u->input_q = pa_memblockq_new("module-equalizer-sink input_q", 0, MEMBLOCKQ_MAXLENGTH, 0, &ss, 1, 1, 0, &u->sink->silence);
1252 u->output_q = pa_memblockq_new("module-equalizer-sink output_q", 0, MEMBLOCKQ_MAXLENGTH, 0, &ss, 1, 1, 0, NULL);
1257 pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
1258 //pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->R*fs, &ss));
1260 /* Create sink input */
1265 sink_input_data.origin_sink = u->sink;
1294 u->sink->input_to_master = u->sink_input;
1315 * otherwise streams might attach to the sink before the sink
1318 pa_sink_put(u->sink);
1340 return pa_sink_linked_by(u->sink);
1366 if (u->sink)
1367 pa_sink_unlink(u->sink);
1374 if (u->sink)
1375 pa_sink_unref(u->sink);
1463 {"sink", "o", NULL}
1625 u->dbus_protocol=pa_dbus_protocol_get(u->sink->core);
1626 u->dbus_path=pa_sprintf_malloc("/org/pulseaudio/core1/sink%d", u->sink->index);
1629 sink_list = pa_shared_get(u->sink->core, SINKLIST);
1630 u->database = pa_shared_get(u->sink->core, EQDB);
1634 pa_shared_set(u->sink->core, SINKLIST, sink_list);
1638 pa_shared_set(u->sink->core, EQDB, u->database);
1639 pa_dbus_protocol_add_interface(u->dbus_protocol, MANAGER_PATH, &manager_info, u->sink->core);
1660 pa_assert_se(sink_list=pa_shared_get(u->sink->core,SINKLIST));
1665 pa_shared_remove(u->sink->core, EQDB);
1667 pa_shared_remove(u->sink->core, SINKLIST);
2237 rate = (uint32_t) u->sink->sample_spec.rate;
2263 rate = (uint32_t) u->sink->sample_spec.rate;