[LAU] getting gstreamer and jack to play ball
theo
theo_linuxaudio at borm.org
Wed Feb 3 00:02:45 UTC 2016
On 02/01/2016 05:12 PM, Paul Davis wrote:
>
>
> On Fri, Jan 29, 2016 at 6:29 PM, Neil C Smith
> <neilcsmith.net at googlemail.com <mailto:neilcsmith.net at googlemail.com>>
> wrote:
>
> On 29 Jan 2016 22:47, "theo" <theo_linuxaudio at borm.org
> <mailto:theo_linuxaudio at borm.org>> wrote:.
> > - What is the point of this (re-)connection behaviour of
> gstreamer? - gstreamer doesn't suddenly become a "new device" when
> it starts playing a new song.
>
> Well, in some ways it does, depending on how you're using
> GStreamer. I've been having fun with this issue recently too.
>
> This is all down to the default behaviour of the GStreamer JACK
> sink. There are two properties that can be set on it that may be
> useful. The first, connect, controls whether GStreamer
> auto-connects to the outputs - I think using connect=0 will stop
> it auto-connecting. More recent versions of GStreamer also allow
> you to set a port pattern for auto-connection, which would allow
> you to control the behaviour you want without the patchbay.
>
>
> Slightly more than this: almost all gstreamer-enabled applications
> consider various user operations like "Stop" (and sometimes even
> "Pause" and sometimes even "Next Song") to be a point at which they
> disconnect from whatever audio backend gstreamer has been told to use.
> Specifically, they "close" the "device".
>
> The gstreamer backend was written to disconnect from JACK when told to
> "close". This behaviour makes sense if the "device" was an actual
> physical device, but it doesn't make any sense in the context of a
> server like JACK.
>
> I did try to patch the gstreamer JACK code to not do this, and remain
> connected to JACK across time and space (so to speak) but it was
> harder than I was willing to deal with.
>
>
Hi,
Sorry for the late reply. Got a lot of work dumped on my desk.
Well, come to think of it, maybe it is just easier coding to
close/reopen. I don't know what would happen if a program would leave an
audio device open only to find the next file to play inaccessible or
something like that. I guess that would require extra checks. AFAIK, the
close/reopen also does not result in audible issues.
Thanks a lot for the excellent hints. I had a look at the GStreamer
properties and control=0 indeed does the job.
for posterity:
I edited properties using gconf-editor. By setting the following keys:
system->gstreamer->0.10->default->audiosink
system->gstreamer->0.10->default->musicaudiosink
both to
jackaudiosink buffer-time=2000000 connect=0
(or jackaudiosink buffer-time=2000000 connect=none)
I got playback through jack from gstreamer without the default
connection to channels 1 and 2 of my multi-output sound card. By making
the required connections (in my case to channels 3 and 4) in the
qjackctl patch bay everything just works (tm).
I also had a look at the gstreamer code, and got completely bogged down
trying to set up a working gnome build environment. I'll have to leave
that for now. (It also should be noted that this is for gstreamer 0.10 -
I have no idea how this ties into gstreamer 1.0)
thanks again.
cheers, Theo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxaudio.org/pipermail/linux-audio-user/attachments/20160203/a57eb644/attachment.html>
More information about the Linux-audio-user
mailing list