[gst-devel] multichannel vorbis

Dirk Griffioen dirk.griffioen at barcelonamedia.org
Mon Sep 21 15:46:35 CEST 2009


Tristan,

If I add 'host' to the udpsink it works ...

gst-launch -v jackaudiosrc connect=none ! audio/x-raw-float, channels=10
! vorbisenc ! rtpvorbispay ! udpsink port=10000 host=127.0.0.1


Then both jackaudiosink and jackaudiosrc show up.

Thanks for the help!

Best, Dirk
> Are you copying the caps from udpsink's sink pad directly from the
> sender pipeline? Vorbis caps (i.e. the codebook) will change for
> different configurations.
>
> -T
>
> Dirk Griffioen wrote:
>   
>> Hi Tristan,
>>
>> Thanks for the replies. They are really helpfull! (And I will have a
>> further look at 'miville' - it looks really nice).
>>     
>>> This example might help:
>>> sender
>>>
>>> gst-launch -v jackaudiosrc connect=none ! audio/x-raw-float, channels=10
>>> ! vorbisenc ! rtpvorbispay ! udpsink port=10000
>>>
>>> receiver
>>>
>>> gst-launch -v udpsrc caps="$CAPS" port=10000 ! rtpvorbisdepay !
>>> vorbisdec ! queue max-size-buffers=3 ! jackaudiosink connect=none
>>>
>>> where $CAPS are the caps of the udpsink from the first pipeline.
>>>
>>>
>>>       
>> This does not work for me, jackaudiosink does not pop up in qjackctl
>> ... I tried some other configurations, but nothing.
>>
>> However, somehow my first pipeline with rtp decided to work, with 24
>> channels and from gst-launch. Still, I get:
>>
>> WARNING: from element /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0:
>> Could not decode stream.
>> Additional debug info:
>> vorbisdec.c(670): vorbis_handle_identification_packet ():
>> /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0:
>> Using NONE channel layout for more than 8 channels
>>
>> Maybe this can interpreted as 'cannot read layout from stream,
>> defaulting to NONE' - as the audio streams fine.
>>     
>>> -Tristan
>>>
>>> Tristan Matthews wrote:
>>>
>>>       
>>>> As far as I know this should be fine in python, though I haven't tried
>>>> it. Our app (https://svn.sat.qc.ca/trac/miville) does this for up to 8
>>>> channels of vorbis or raw audio (with rtpL16pay/depay) and gstrtpbin. We
>>>> haven't tried (yet) to implement support for more than 8 channels. Here
>>>> we don't set the channel positions and it works, but I do get that same
>>>> "warning could not decode stream" even though the sound if fine.
>>>> The element to set the number of channels is a caps filter element, so
>>>> the equivalent in C would be:
>>>>
>>>> GstElement *capsfilter;
>>>> gst_element_factory_make(capsfilter, NULL);
>>>> g_object_set(capsfilter, "caps", "audio/x-raw-float, channels=8", NULL);
>>>>
>>>> and then link it in between jackaudiosrc and vorbisenc.
>>>>
>>>> -Tristan
>>>>
>>>> Dirk Griffioen wrote:
>>>>
>>>>
>>>>         
>>>>> Hi Tristan,
>>>>>
>>>>>
>>>>>           
>>>>>> You probably have to set the "channel-positions" property on the
>>>>>> interleave element, which you can't do with gst-launch as I recall (i.e.
>>>>>> you need to write c or python app for it) as it is an array. However for
>>>>>> more than 8 channels the positions might have to all be set to
>>>>>> GST_AUDIO_CHANNEL_POSITION_NONE
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>> Yes I read about that
>>>>> (http://tristanswork.blogspot.com/2008/08/multichannel-audio-with-gstreamer.html),
>>>>> and can I do this in python as well? (I dont mind C, but python will
>>>>> be quicker).
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>>> Are you just trying to do something like this?
>>>>>>
>>>>>> gst-launch -v jackaudiosrc connect=none ! audio/x-raw-float, channels=24
>>>>>> ! vorbisenc ! vorbisdec ! jackaudiosink connect=none
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>> Well, almost :)
>>>>>
>>>>> I am trying to put rtp in between the vorbisencoder and decoder so I
>>>>> can stream n channels from A to B over a single rtp session
>>>>>
>>>>> I get the following on the receiving end (after copying the new config
>>>>> string from A to B):
>>>>>
>>>>> GstPipeline:pipeline0/GstVorbisDec:vorbisdec0.GstPad:sink: caps =
>>>>> audio/x-vorbis
>>>>> WARNING: from element /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0:
>>>>> Could not decode stream.
>>>>> Additional debug info:
>>>>> vorbisdec.c(670): vorbis_handle_identification_packet ():
>>>>> /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0:
>>>>> Using NONE channel layout for more than 8 channels
>>>>>
>>>>> Which is weird because it knows this:
>>>>>
>>>>> /GstPipeline:pipeline0/GstVorbisDec:vorbisdec0.GstPad:src: caps =
>>>>> audio/x-raw-float, rate=(int)48000, channels=(int)24,
>>>>> endianness=(int)1234, width=(int)32,
>>>>> channel-positions=(GstAudioChannelPosition)<
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE,
>>>>> GST_AUDIO_CHANNEL_POSITION_NONE, GST_AUDIO_CHANNEL_POSITION_NONE >
>>>>>
>>>>> Do you have any tips? (Maybe the NONE layout is not in the vorbis
>>>>> config string ...)
>>>>>
>>>>> Regards, Dirk
>>>>>
>>>>> PS - how do you call the 'audio/x-raw-float, channels=24' element?
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>>> (note that the bottleneck here will probably be your soundcard).
>>>>>>
>>>>>> -Tristan
>>>>>>
>>>>>> Dirk Griffioen wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Thanks for the answer!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> I think you need to interleave several mono channels from audiotestsrc
>>>>>>>> into a stereo stream and then shove them into the vorbis encoder. You
>>>>>>>> need an audio mixer, or something like that.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> I would like to encode separate channels.
>>>>>>>
>>>>>>> For example, this runs
>>>>>>>
>>>>>>> gst-launch-0.10 -v interleave name=i ! queue ! \
>>>>>>> vorbisenc ! vorbisdec ! \
>>>>>>> jackaudiosink connect=none \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i. \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i.
>>>>>>>
>>>>>>> but this does not:
>>>>>>>
>>>>>>> gst-launch-0.10 -v interleave name=i ! queue ! \
>>>>>>> vorbisenc ! vorbisdec ! \
>>>>>>> jackaudiosink connect=none \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i. \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i. \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i. \
>>>>>>> jackaudiosrc ! audioconvert ! queue ! i.
>>>>>>>
>>>>>>> Do you know why? The vorbis spec allows for 255 channels and I simply
>>>>>>> would like to run n channels through the vorbis encoder ...
>>>>>>>
>>>>>>> I really could use some help.
>>>>>>>
>>>>>>> Thanks in advance, Dirk
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
>>>>>>> is the only developer event you need to attend this year. Jumpstart your
>>>>>>> developing skills, take BlackBerry mobile applications to market and stay
>>>>>>> ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
>>>>>>> http://p.sf.net/sfu/devconf
>>>>>>> _______________________________________________
>>>>>>> gstreamer-devel mailing list
>>>>>>> gstreamer-devel at lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>
>>>>>>             
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
>>>>> is the only developer event you need to attend this year. Jumpstart your
>>>>> developing skills, take BlackBerry mobile applications to market and stay
>>>>> ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
>>>>> http://p.sf.net/sfu/devconf
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> gstreamer-devel mailing list
>>>>> gstreamer-devel at lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>         
>>>
>>>       
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>> Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
>> is the only developer event you need to attend this year. Jumpstart your
>> developing skills, take BlackBerry mobile applications to market and stay
>> ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
>> http://p.sf.net/sfu/devconf
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>
>>     
>
>
> --
> Tristan Matthews
> Société des arts technologiques [SAT]
> email: tristan at sat.qc.ca
> web: http://www.music.mcgill.ca/~tmatthews
>
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
> http://p.sf.net/sfu/devconf
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20090921/f97ab585/attachment.htm>


More information about the gstreamer-devel mailing list