Lines Matching refs:sink
72 gst_jack_audio_sink_allocate_channels (GstJackAudioSink * sink, gint channels) in gst_jack_audio_sink_allocate_channels() argument
76 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_audio_sink_allocate_channels()
79 while (sink->port_count > channels) { in gst_jack_audio_sink_allocate_channels()
80 jack_port_unregister (client, sink->ports[--sink->port_count]); in gst_jack_audio_sink_allocate_channels()
84 sink->ports = g_realloc (sink->ports, sizeof (jack_port_t *) * channels); in gst_jack_audio_sink_allocate_channels()
85 sink->buffers = g_realloc (sink->buffers, sizeof (sample_t *) * channels); in gst_jack_audio_sink_allocate_channels()
88 while (sink->port_count < channels) { in gst_jack_audio_sink_allocate_channels()
93 g_strdup_printf ("out_%s_%d", GST_ELEMENT_NAME (sink), in gst_jack_audio_sink_allocate_channels()
94 sink->port_count + 1); in gst_jack_audio_sink_allocate_channels()
95 sink->ports[sink->port_count] = in gst_jack_audio_sink_allocate_channels()
98 if (sink->ports[sink->port_count] == NULL) in gst_jack_audio_sink_allocate_channels()
101 sink->port_count++; in gst_jack_audio_sink_allocate_channels()
109 gst_jack_audio_sink_free_channels (GstJackAudioSink * sink) in gst_jack_audio_sink_free_channels() argument
114 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_audio_sink_free_channels()
117 while (sink->port_count) { in gst_jack_audio_sink_free_channels()
118 GST_LOG_OBJECT (sink, "unregister port %d", i); in gst_jack_audio_sink_free_channels()
119 if ((res = jack_port_unregister (client, sink->ports[i++]))) { in gst_jack_audio_sink_free_channels()
120 GST_DEBUG_OBJECT (sink, "unregister of port failed (%d)", res); in gst_jack_audio_sink_free_channels()
122 sink->port_count--; in gst_jack_audio_sink_free_channels()
124 g_free (sink->ports); in gst_jack_audio_sink_free_channels()
125 sink->ports = NULL; in gst_jack_audio_sink_free_channels()
126 g_free (sink->buffers); in gst_jack_audio_sink_free_channels()
127 sink->buffers = NULL; in gst_jack_audio_sink_free_channels()
190 GstJackAudioSink *sink; in jack_process_cb() local
198 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in jack_process_cb()
204 sink->buffers[i] = in jack_process_cb()
205 (sample_t *) jack_port_get_buffer (sink->ports[i], nframes); in jack_process_cb()
215 GST_DEBUG_OBJECT (sink, "copy %d frames: %p, %d bytes, %d channels", in jack_process_cb()
223 sink->buffers[j][i] = *data++; in jack_process_cb()
233 GST_DEBUG_OBJECT (sink, "write %d frames silence", nframes); in jack_process_cb()
237 memset (sink->buffers[i], 0, nframes * sizeof (sample_t)); in jack_process_cb()
245 GST_ERROR_OBJECT (sink, "nbytes (%d) != flen (%d)", in jack_process_cb()
255 GstJackAudioSink *sink; in jack_sample_rate_cb() local
259 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (arg)); in jack_sample_rate_cb()
269 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, in jack_sample_rate_cb()
279 GstJackAudioSink *sink; in jack_buffer_size_cb() local
283 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (arg)); in jack_buffer_size_cb()
293 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, in jack_buffer_size_cb()
302 GstJackAudioSink *sink; in jack_shutdown_cb() local
304 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (arg)); in jack_shutdown_cb()
306 GST_DEBUG_OBJECT (sink, "shutdown"); in jack_shutdown_cb()
308 GST_ELEMENT_ERROR (sink, RESOURCE, NOT_FOUND, in jack_shutdown_cb()
326 GstJackAudioSink *sink; in gst_jack_ring_buffer_open_device() local
330 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_open_device()
332 GST_DEBUG_OBJECT (sink, "open"); in gst_jack_ring_buffer_open_device()
334 if (sink->client_name) { in gst_jack_ring_buffer_open_device()
335 name = sink->client_name; in gst_jack_ring_buffer_open_device()
342 sink->client = gst_jack_audio_client_new (name, sink->server, in gst_jack_ring_buffer_open_device()
343 sink->jclient, in gst_jack_ring_buffer_open_device()
347 if (sink->client == NULL) in gst_jack_ring_buffer_open_device()
350 GST_DEBUG_OBJECT (sink, "opened"); in gst_jack_ring_buffer_open_device()
358 GST_ELEMENT_ERROR (sink, RESOURCE, NOT_FOUND, in gst_jack_ring_buffer_open_device()
362 GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, in gst_jack_ring_buffer_open_device()
374 GstJackAudioSink *sink; in gst_jack_ring_buffer_close_device() local
376 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_close_device()
378 GST_DEBUG_OBJECT (sink, "close"); in gst_jack_ring_buffer_close_device()
380 gst_jack_audio_sink_free_channels (sink); in gst_jack_ring_buffer_close_device()
381 gst_jack_audio_client_free (sink->client); in gst_jack_ring_buffer_close_device()
382 sink->client = NULL; in gst_jack_ring_buffer_close_device()
402 GstJackAudioSink *sink; in gst_jack_ring_buffer_acquire() local
408 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_acquire()
411 GST_DEBUG_OBJECT (sink, "acquire"); in gst_jack_ring_buffer_acquire()
413 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_ring_buffer_acquire()
425 if (!gst_jack_audio_sink_allocate_channels (sink, channels)) in gst_jack_ring_buffer_acquire()
439 if (spec->segtotal < 2 || sink->low_latency) { in gst_jack_ring_buffer_acquire()
444 GST_DEBUG_OBJECT (sink, "buffer time: %" G_GINT64_FORMAT " usec", in gst_jack_ring_buffer_acquire()
446 GST_DEBUG_OBJECT (sink, "latency time: %" G_GINT64_FORMAT " usec", in gst_jack_ring_buffer_acquire()
448 GST_DEBUG_OBJECT (sink, "buffer_size %d, segsize %d, segtotal %d", in gst_jack_ring_buffer_acquire()
455 if ((res = gst_jack_audio_client_set_active (sink->client, TRUE))) in gst_jack_ring_buffer_acquire()
460 if (sink->connect == GST_JACK_CONNECT_AUTO in gst_jack_ring_buffer_acquire()
461 || sink->connect == GST_JACK_CONNECT_AUTO_FORCED in gst_jack_ring_buffer_acquire()
462 || sink->connect == GST_JACK_CONNECT_EXPLICIT) { in gst_jack_ring_buffer_acquire()
470 if (sink->port_names) { in gst_jack_ring_buffer_acquire()
472 sink->port_names, JackPortIsInput); in gst_jack_ring_buffer_acquire()
478 if (!available_ports && sink->connect == GST_JACK_CONNECT_EXPLICIT) in gst_jack_ring_buffer_acquire()
482 if (!sink->port_pattern) { in gst_jack_ring_buffer_acquire()
486 jack_ports = jack_get_ports (client, sink->port_pattern, NULL, in gst_jack_ring_buffer_acquire()
496 GST_ELEMENT_WARNING (sink, RESOURCE, NOT_FOUND, (NULL), in gst_jack_ring_buffer_acquire()
505 GST_ELEMENT_WARNING (sink, RESOURCE, NOT_FOUND, (NULL), in gst_jack_ring_buffer_acquire()
509 GST_DEBUG_OBJECT (sink, "try connecting to %s", in gst_jack_ring_buffer_acquire()
510 jack_port_name (sink->ports[i])); in gst_jack_ring_buffer_acquire()
513 jack_port_name (sink->ports[i]), available_ports[i]); in gst_jack_ring_buffer_acquire()
536 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), in gst_jack_ring_buffer_acquire()
543 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), in gst_jack_ring_buffer_acquire()
549 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), in gst_jack_ring_buffer_acquire()
555 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), in gst_jack_ring_buffer_acquire()
562 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), in gst_jack_ring_buffer_acquire()
572 GstJackAudioSink *sink; in gst_jack_ring_buffer_release() local
577 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_release()
579 GST_DEBUG_OBJECT (sink, "release"); in gst_jack_ring_buffer_release()
581 if ((res = gst_jack_audio_client_set_active (sink->client, FALSE))) { in gst_jack_ring_buffer_release()
584 GST_ELEMENT_WARNING (sink, RESOURCE, CLOSE, (NULL), in gst_jack_ring_buffer_release()
602 GstJackAudioSink *sink; in gst_jack_ring_buffer_start() local
604 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_start()
606 GST_DEBUG_OBJECT (sink, "start"); in gst_jack_ring_buffer_start()
608 if (sink->transport & GST_JACK_TRANSPORT_MASTER) { in gst_jack_ring_buffer_start()
611 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_ring_buffer_start()
621 GstJackAudioSink *sink; in gst_jack_ring_buffer_pause() local
623 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_pause()
625 GST_DEBUG_OBJECT (sink, "pause"); in gst_jack_ring_buffer_pause()
627 if (sink->transport & GST_JACK_TRANSPORT_MASTER) { in gst_jack_ring_buffer_pause()
630 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_ring_buffer_pause()
640 GstJackAudioSink *sink; in gst_jack_ring_buffer_stop() local
642 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_stop()
644 GST_DEBUG_OBJECT (sink, "stop"); in gst_jack_ring_buffer_stop()
646 if (sink->transport & GST_JACK_TRANSPORT_MASTER) { in gst_jack_ring_buffer_stop()
649 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_ring_buffer_stop()
660 GstJackAudioSink *sink; in gst_jack_ring_buffer_delay() local
664 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_delay()
666 for (i = 0; i < sink->port_count; i++) { in gst_jack_ring_buffer_delay()
667 jack_port_get_latency_range (sink->ports[i], JackPlaybackLatency, &range); in gst_jack_ring_buffer_delay()
672 GST_LOG_OBJECT (sink, "delay %u", res); in gst_jack_ring_buffer_delay()
680 GstJackAudioSink *sink; in gst_jack_ring_buffer_delay() local
685 sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); in gst_jack_ring_buffer_delay()
686 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_ring_buffer_delay()
688 for (i = 0; i < sink->port_count; i++) { in gst_jack_ring_buffer_delay()
689 latency = jack_port_get_total_latency (client, sink->ports[i]); in gst_jack_ring_buffer_delay()
694 GST_LOG_OBJECT (sink, "delay %u", res); in gst_jack_ring_buffer_delay()
752 * gst_jack_audio_sink_create_ringbuffer (GstAudioBaseSink * sink);
876 gst_jack_audio_sink_init (GstJackAudioSink * sink) in gst_jack_audio_sink_init() argument
878 sink->connect = DEFAULT_PROP_CONNECT; in gst_jack_audio_sink_init()
879 sink->server = g_strdup (DEFAULT_PROP_SERVER); in gst_jack_audio_sink_init()
880 sink->jclient = NULL; in gst_jack_audio_sink_init()
881 sink->ports = NULL; in gst_jack_audio_sink_init()
882 sink->port_count = 0; in gst_jack_audio_sink_init()
883 sink->buffers = NULL; in gst_jack_audio_sink_init()
884 sink->client_name = g_strdup (DEFAULT_PROP_CLIENT_NAME); in gst_jack_audio_sink_init()
885 sink->transport = DEFAULT_PROP_TRANSPORT; in gst_jack_audio_sink_init()
886 sink->low_latency = DEFAULT_PROP_LOW_LATENCY; in gst_jack_audio_sink_init()
892 GstJackAudioSink *sink = GST_JACK_AUDIO_SINK (object); in gst_jack_audio_sink_dispose() local
894 gst_caps_replace (&sink->caps, NULL); in gst_jack_audio_sink_dispose()
896 if (sink->client_name != NULL) { in gst_jack_audio_sink_dispose()
897 g_free (sink->client_name); in gst_jack_audio_sink_dispose()
898 sink->client_name = NULL; in gst_jack_audio_sink_dispose()
901 if (sink->port_pattern != NULL) { in gst_jack_audio_sink_dispose()
902 g_free (sink->port_pattern); in gst_jack_audio_sink_dispose()
903 sink->port_pattern = NULL; in gst_jack_audio_sink_dispose()
906 g_clear_pointer (&sink->port_names, g_free); in gst_jack_audio_sink_dispose()
915 GstJackAudioSink *sink; in gst_jack_audio_sink_set_property() local
917 sink = GST_JACK_AUDIO_SINK (object); in gst_jack_audio_sink_set_property()
921 g_free (sink->client_name); in gst_jack_audio_sink_set_property()
922 sink->client_name = g_value_dup_string (value); in gst_jack_audio_sink_set_property()
925 g_free (sink->port_pattern); in gst_jack_audio_sink_set_property()
926 sink->port_pattern = g_value_dup_string (value); in gst_jack_audio_sink_set_property()
929 sink->connect = g_value_get_enum (value); in gst_jack_audio_sink_set_property()
932 g_free (sink->server); in gst_jack_audio_sink_set_property()
933 sink->server = g_value_dup_string (value); in gst_jack_audio_sink_set_property()
936 if (GST_STATE (sink) == GST_STATE_NULL || in gst_jack_audio_sink_set_property()
937 GST_STATE (sink) == GST_STATE_READY) { in gst_jack_audio_sink_set_property()
938 sink->jclient = g_value_get_boxed (value); in gst_jack_audio_sink_set_property()
942 sink->transport = g_value_get_flags (value); in gst_jack_audio_sink_set_property()
945 sink->low_latency = g_value_get_boolean (value); in gst_jack_audio_sink_set_property()
948 g_free (sink->port_names); in gst_jack_audio_sink_set_property()
949 sink->port_names = g_value_dup_string (value); in gst_jack_audio_sink_set_property()
961 GstJackAudioSink *sink; in gst_jack_audio_sink_get_property() local
963 sink = GST_JACK_AUDIO_SINK (object); in gst_jack_audio_sink_get_property()
967 g_value_set_string (value, sink->client_name); in gst_jack_audio_sink_get_property()
970 g_value_set_string (value, sink->port_pattern); in gst_jack_audio_sink_get_property()
973 g_value_set_enum (value, sink->connect); in gst_jack_audio_sink_get_property()
976 g_value_set_string (value, sink->server); in gst_jack_audio_sink_get_property()
979 g_value_set_boxed (value, sink->jclient); in gst_jack_audio_sink_get_property()
982 g_value_set_flags (value, sink->transport); in gst_jack_audio_sink_get_property()
985 g_value_set_boolean (value, sink->low_latency); in gst_jack_audio_sink_get_property()
988 g_value_set_string (value, sink->port_names); in gst_jack_audio_sink_get_property()
999 GstJackAudioSink *sink = GST_JACK_AUDIO_SINK (bsink); in gst_jack_audio_sink_getcaps() local
1005 if (sink->client == NULL) in gst_jack_audio_sink_getcaps()
1008 if (sink->connect == GST_JACK_CONNECT_EXPLICIT && !sink->port_names) in gst_jack_audio_sink_getcaps()
1011 client = gst_jack_audio_client_get_client (sink->client); in gst_jack_audio_sink_getcaps()
1013 if (sink->connect == GST_JACK_CONNECT_AUTO || in gst_jack_audio_sink_getcaps()
1014 sink->connect == GST_JACK_CONNECT_EXPLICIT) { in gst_jack_audio_sink_getcaps()
1017 if (sink->port_names) { in gst_jack_audio_sink_getcaps()
1020 sink->port_names, JackPortIsInput); in gst_jack_audio_sink_getcaps()
1025 GST_ELEMENT_WARNING (sink, RESOURCE, NOT_FOUND, in gst_jack_audio_sink_getcaps()
1028 sink->port_names)); in gst_jack_audio_sink_getcaps()
1037 if (sink->connect == GST_JACK_CONNECT_EXPLICIT) in gst_jack_audio_sink_getcaps()
1056 if (sink->connect == GST_JACK_CONNECT_EXPLICIT) { in gst_jack_audio_sink_getcaps()
1064 GST_DEBUG_OBJECT (sink, "got %d-%d ports, samplerate: %d", min, max, rate); in gst_jack_audio_sink_getcaps()
1066 if (!sink->caps) { in gst_jack_audio_sink_getcaps()
1067 sink->caps = gst_caps_new_simple ("audio/x-raw", in gst_jack_audio_sink_getcaps()
1071 gst_caps_set_simple (sink->caps, "channels", G_TYPE_INT, min, NULL); in gst_jack_audio_sink_getcaps()
1073 gst_caps_set_simple (sink->caps, in gst_jack_audio_sink_getcaps()
1077 GST_INFO_OBJECT (sink, "returning caps %" GST_PTR_FORMAT, sink->caps); in gst_jack_audio_sink_getcaps()
1079 return gst_caps_ref (sink->caps); in gst_jack_audio_sink_getcaps()
1084 GST_DEBUG_OBJECT (sink, "device not open, using template caps"); in gst_jack_audio_sink_getcaps()
1090 GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, in gst_jack_audio_sink_getcaps()
1098 gst_jack_audio_sink_create_ringbuffer (GstAudioBaseSink * sink) in gst_jack_audio_sink_create_ringbuffer() argument
1103 GST_DEBUG_OBJECT (sink, "created ringbuffer @%p", buffer); in gst_jack_audio_sink_create_ringbuffer()