Lines Matching refs:sink

37 #include <pulsecore/sink.h>
50 PA_MODULE_DESCRIPTION(_("Virtual surround sink"));
54 _("sink_name=<name for the sink> "
55 "sink_properties=<properties for the sink> "
56 "master=<name of sink to filter> "
57 "sink_master=<name of sink to filter> "
78 pa_sink *sink;
266 /* The sink is _put() before the sink input is, so let's
268 * sink input is first shut down, the sink second. */
269 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
277 /* Get the latency of the master sink */
278 pa_sink_get_latency_within_thread(u->sink_input->sink, true) +
280 /* Add the latency internal to our sink input on top */
281 pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
315 * of the master sink to make sure we are heard immediately */
332 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
339 /* Just hand this one over to the master sink */
350 if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
354 /* Just hand this one over to the master sink */
414 pa_sink_process_rewind(u->sink, 0);
419 pa_sink_render(u->sink, bytes_missing, &nchunk);
434 chunk->memblock = pa_memblock_new(i->sink->core->mempool, chunk->length);
512 if (u->sink->thread_info.rewind_nbytes > 0) {
516 amount = PA_MIN(u->sink->thread_info.rewind_nbytes, max_rewrite);
517 u->sink->thread_info.rewind_nbytes = 0;
524 pa_sink_process_rewind(u->sink, amount);
543 pa_sink_set_max_rewind_within_thread(u->sink, nbytes_sink);
558 pa_sink_set_max_request_within_thread(u->sink, nbytes_sink);
568 pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
578 pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
588 if (PA_SINK_IS_LINKED(u->sink->thread_info.state))
589 pa_sink_detach_within_thread(u->sink);
591 pa_sink_set_rtpoll(u->sink, NULL);
602 pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
603 pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
605 pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
609 pa_sink_set_max_request_within_thread(u->sink, max_request);
613 pa_sink_set_max_rewind_within_thread(u->sink, sink_bytes(u, sink_input_samples(pa_sink_input_get_max_rewind(i))));
615 pa_sink_attach_within_thread(u->sink);
625 /* The order here matters! We first kill the sink input, followed
626 * by the sink. That means the sink callbacks must be protected
627 * against an unconnected sink input! */
630 pa_sink_unlink(u->sink);
635 pa_sink_unref(u->sink);
636 u->sink = NULL;
651 return u->sink != dest;
662 pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
663 pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
665 pa_sink_set_asyncmsgq(u->sink, NULL);
674 pa_proplist_gets(u->sink->proplist, "device.vsurroundsink.name"), z ? z : dest->name);
676 pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl);
688 pa_sink_volume_changed(u->sink, &i->volume);
698 pa_sink_mute_changed(u->sink, i->muted);
766 pa_log("Master sink not found");
842 /* Create sink */
871 u->sink = pa_sink_new(m->core, &sink_data, (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY))
875 if (!u->sink) {
876 pa_log("Failed to create sink.");
880 u->sink->parent.process_msg = sink_process_msg_cb;
881 u->sink->set_state_in_main_thread = sink_set_state_in_main_thread_cb;
882 u->sink->set_state_in_io_thread = sink_set_state_in_io_thread_cb;
883 u->sink->update_requested_latency = sink_update_requested_latency_cb;
884 u->sink->request_rewind = sink_request_rewind_cb;
885 pa_sink_set_set_mute_callback(u->sink, sink_set_mute_cb);
887 pa_sink_set_set_volume_callback(u->sink, sink_set_volume_cb);
888 pa_sink_enable_decibel_volume(u->sink, true);
892 u->sink->flags |= PA_SINK_FLAT_VOLUME;
893 u->sink->userdata = u;
895 pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
897 /* Create sink input */
902 sink_input_data.origin_sink = u->sink;
903 pa_proplist_setf(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Virtual Surround Sink Stream from %s", pa_proplist_gets(u->sink->proplist, PA_PROP_DEVICE_DESCRIPTION));
929 u->sink->input_to_master = u->sink_input;
933 resampler = pa_resampler_new(u->sink->core->mempool, &hrir_left_temp_ss, &hrir_map, &ss_input, &hrir_map, u->sink->core->lfe_crossover_freq,
1131 u->memblockq_sink = pa_memblockq_new("module-virtual-surround-sink memblockq (input)", 0, MEMBLOCKQ_MAXLENGTH, sink_bytes(u, BLOCK_SIZE), &ss_input, 0, 0, sink_bytes(u, u->fftlen), &silence);
1137 pa_sink_put(u->sink);
1186 return pa_sink_linked_by(u->sink);
1204 if (u->sink)
1205 pa_sink_unlink(u->sink);
1210 if (u->sink)
1211 pa_sink_unref(u->sink);