diff options
author | Stefan Sauer <ensonic@users.sf.net> | 2012-01-10 22:27:11 +0100 |
---|---|---|
committer | Stefan Sauer <ensonic@users.sf.net> | 2012-01-10 22:35:02 +0100 |
commit | 7d4044aa46a947f96cbfff11e89fed395b289a08 (patch) | |
tree | 229302d1640d9b8d7a6764dc0363bcb7a68ed249 /ext/jack/gstjackaudiosrc.c | |
parent | d1bb060d71923e6db5c9f837232281a9b33b08cc (diff) |
jack: add transport control handling
This feature allows to start and stop playback from other jack applications (e.g. qjackctl).
Diffstat (limited to 'ext/jack/gstjackaudiosrc.c')
-rw-r--r-- | ext/jack/gstjackaudiosrc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/jack/gstjackaudiosrc.c b/ext/jack/gstjackaudiosrc.c index 3c3797062..a8ca1ed7d 100644 --- a/ext/jack/gstjackaudiosrc.c +++ b/ext/jack/gstjackaudiosrc.c @@ -211,10 +211,20 @@ jack_process_cb (jack_nframes_t nframes, void *arg) gint writeseg; gint channels, i, j, flen; sample_t *data; + GstState state; buf = GST_RING_BUFFER_CAST (arg); src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf)); + /* handle transport state requisitions */ + state = gst_jack_audio_client_get_transport_state (src->client); + if ((state != GST_STATE_VOID_PENDING) && (GST_STATE (src) != state)) { + GST_DEBUG_OBJECT (src, "requesting state change: %s", + gst_element_state_get_name (state)); + gst_element_post_message (GST_ELEMENT (src), + gst_message_new_request_state (GST_OBJECT (src), state)); + } + channels = buf->spec.channels; /* get input buffers */ |