Personal tools

Log in


From IGEP - ISEE Wiki

Jump to: navigation, search

Example GStreamer Pipelines

3,894 bytes added, 10:16, 31 December 2013
Loopback: Audio
== Notes ==
In order to make the next examples work I had to install (apt-get install <package>) the following packages on the target
*gstreamer0.10-alsa for alsasrc and alsasink
*gstreamer0.10-plugins-ugly for mad
Perhaps also install gstreamer0.10-plugins-good and gstreamer0.10-plugins-bad...
For all examples I had to perform gst-launch-0.10 in stead of gst-launch.
<br>When using the pipelines that use the TI codecs on the DSP, make sure you execute the
gst-launch command in the directory were the codec server (cs.x64P) is present.
<br>You may also make a link to the codecserver in the directory were you execute your command.
If you do not do this you will get an error like ''gst-launch-0.10: BufTab.c:440: BufTab_getNumBufs: Assertion `hBufTab' failed''
== Purpose ==
This page provides example pipelines that can be copied to the command line to demonstrate various GStreamer operations. Some of the pipelines may need modification for things such as file names, ip addresses, etc.
Refer to[[GStreamer|this Gstreamer article]]for more information on downloading and building TI Gstreamer elements.
== Testing ==
<span style="color: blue;">''' If you use [ IGEP GST FRAMEWORK 2.00.20] or upper you can use "omapdmaifbsink" instead of "TIDmaiVideoSink" to display the video inside the X windowing system. ''' </span>
=== Loopback: Video ===
=== Loopback: Audio ===
In order to have access to the alsasrc and alsasink plugins perform a 'apt-get install gstreamer0.10-alsa' on the igep board.
<pre>gst-launch audiotestsrc freq=1000 num-buffers=100&nbsp;! alsasink
<pre>mv /etc/asound.conf /etc/asound.conf.orig
to move the ALSA configuration file out of the way.
=== Loopback: Audio+Video ===
<pre>gst-launch udpsrc port=5555 caps="application/x-rtp"&nbsp;! queue&nbsp;! rtppcmudepay&nbsp;! mulawdec&nbsp;! audioconvert&nbsp;! alsasink
The above example experienced dropped audio, please update pipeline when you get it working properly.
<br> Case 2: sending audio from Ubuntu host to target (BeagleBoard)
<pre>gst-launch udpsrc port=5555 caps="application/x-rtp"&nbsp;! queue&nbsp;! rtppcmudepay&nbsp;! mulawdec&nbsp;! audioconvert&nbsp;! alsasink
The above example experienced dropped audio, please update pipeline when you get it working properly.<br>I had the same problem using my IGEP WLAN interface. After direct connect with Ethernet cable the dropped audio problem was solved. I also used these pipelines:<br>On host:<pre>gst-launch filesrc location=DownUnder.mp3 ! mad ! audioconvert ! audio/x-raw-int,channels=1,depth=16,width=16,\rate=44100 ! rtpL16pay ! udpsink host= port=5000</pre>On target:<pre>gst-launch udpsrc port=5000 ! “application/x-rtp, media=(string)audio, clock-rate=44100, width=16, height=16, \encoding-name=(string)L16,encoding-params=(string)1, channels=(int)1, channel-position=(int)1, payload=(int)96” ! \gstrtpjitterbuffer do-lost=true ! rtpL16depay ! audioconvert ! alsasink sync=false</pre> And if you want to multicast your stream to multiple computers try this one: On host:<pre>gst-launch filesrc location=DownUnder.mp3 ! mad ! audioconvert ! audio/x-raw-int,channels=1,depth=16,width=16, \rate=44100 ! rtpL16pay ! udpsink host= port=5000</pre> On multiple targets:<pre>gst-launch-0.10 udpsrc port=5000 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, width=16, height=16,\ encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, channel-positions=(int)1, payload=(int)96" ! \gstrtpjitterbuffer do-lost=true ! rtpL16depay ! audioconvert ! alsasink sync=false</pre>
==== H.264 RTP Streaming ====
A simple RTP client to receive and decode the MPEG-4 encoded stream.
<pre>gst-launch -v udpsrc port=5000 caps="&lt;CAPS_FROM_SERVER&gt;"&nbsp;! rtpmp4vdepay &nbsp;! TIViddec2&nbsp;! TIDmaiVideoSink videoStd=VGA videoOutput=LCD sync=false
== All ==
<pre>gst-launch udpsrc port=5555 caps="application/x-rtp"&nbsp;! queue&nbsp;! rtppcmudepay&nbsp;! mulawdec &nbsp;! alsasink
<br>  == DSS2 Video Driver == The DSS2 video driver documentation can be found [;a=blob;f=Documentation/arm/OMAP/DSS;h=0af0e9eed5d6c1281433b4c0bc26f7c6577fe8a6;hb=refs/heads/linux-2.6.35.y here] for kernel 2.6.35.y  Some useful examples:  omapfb.mode=dvi:1024x768MR-16@60<br>omapfb.mode=dvi:1280x720MR-16@60 (for 720p HDTV with 1:1 pixel mapping)<br>omapfb.mode=dvi:1360x768MR-16@60 (works nice on 720p HDMI TV which crops edges due to overscan)<br>  Note: the M indicates the kernel will calculate a VESA mode on-the-fly instead of using modedb lookup. The R indicates reduced blanking which is for LCD monitors. Most HDTV will probably only operate with a VESA mode.<br>  omapfb.mode should be passed in the kernel command line, this is the uboot example: <pre>bootargs-base=mem=430M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1280x720MR-16@60 vram=32M omapfb.vram=0:8M,1:16M,2:8M</pre> <br> == Performance == Here are some test results I measured on my IGEPV2 board.<br>Decoding an aac music file using software decoder (faad) requires 60% load (top output).<br>Decoding the same file using the DSP TI framework results in 4% CPU load (top output) and 176kbps / 21 fps DSP "load" (dmaiperf output).<br><br>To get performance figures from the DSP add dmaiperf in the pipeline.<br><br>I used the following pipelines:<br> *gst-launch -v filesrc location=sample.aac ! faad ! audioconvert ! audioresample ! alsasink *gst-launch -v filesrc location=sample.aac ! TIAuddec1 codecName=aachedec engineName=codecServer ! dmaiperf ! alsasink sync=false  [[Category:DMAI_GStreamer_Plug-InGstreamer]] [[Category:GstreamerSoftware applications]]