interleave ! pulsesink link doesn't work

Bug #657457 reported by Antti S. Lankila
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gst-plugins-good0.10 (Ubuntu)
Expired
Low
Unassigned

Bug Description

I have a stereo LADSPA plugin I want to use to filter my audio using gstreamer. Unfortunately, I discovered that gstreamer's gstladspa plugin can't be naturally used with stereo sound sources. However, I realized that the interleave and deinterleave plugins can be used to split a 2-channel stream to 2 separate streams, which can be routed to the LADSPA plugin, and the result can then be reassembled back to 2-channel audio.

However, there is a bug between the interleave and pulsesink. Given a suitable 2-channel file, one should be able to reproduce the problem on a 10.10 installation:

gst-launch-0.10 \
 de.src0 '!' queue '!' in.sink0 \
 de.src1 '!' queue '!' in.sink1 \
 filesrc location="$1" '!' decodebin '!' deinterleave name=de \
 interleave name=in '!' audioconvert '!' pulsesink

To parse this out, the fragment is copypasted from shell script. The filename to play is specified in $1, and is decoded and split to two channels (it is a stereo file), which are then piped through queue (which seems to be necessary for some reason) to the interleave sink, which assembles them together and sends the result to pulsesink. However, pulsesink rejects this command, saying:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: Failed to create stream: Invalid argument
Additional debug info:
pulsesink.c(826): gst_pulseringbuffer_acquire (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

The failure to create stream arises from pa_stream_new() call in ext/pulse/pulsesink.c. The strange thing is, if I change the sink to alsasink, the file I specified begins to play, indicating that the problem must somehow be related to pulsesink. Similarly, if I modify the last line to something like:

 interleave name=il '!' audioconvert '!' flacenc '!' decodebin '!' pulsesink

also workarounds the problem, for some unfathomable reason.

Revision history for this message
Antti S. Lankila (alankila) wrote :

OK, I discovered that NULLing out the channel map in the pa_stream_new() call seems to fix the problem, so therefore the problem must be with bad generation of the channel-positions in interleave source or bad handling of (valid) channel-positions in pulsesink.

I haven't yet worked out how to give custom channel-positions arrays on the gst-launch command line. Should be an array of integers, and in this case probably {1, 2}, but I haven't found the syntax to express those arrays in yet.

Revision history for this message
Pedro Villavicencio (pedro) wrote :

Thanks for the report, it has been some time without any response or feedback in this bug report and we are wondering if this is still an issue for you with the latest release of Ubuntu the Natty Narwhal, May you please test with that version and comment back if you're still having or not the issue? Please have a look at http://www.ubuntu.com/download to know how to install that version. Thanks in advance and sorry for the late response.

Changed in gst-plugins-good0.10 (Ubuntu):
importance: Undecided → Low
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for gst-plugins-good0.10 (Ubuntu) because there has been no activity for 60 days.]

Changed in gst-plugins-good0.10 (Ubuntu):
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.