DMAI GStreamer Plug-in FAQ
From Texas Instruments Wiki
How do I get Started?
What is unique about this GStreamer port?
If you have been following GStreamer on TI parts you know that there have been previous ports of GStreamer done for DM6446 and DM355. What makes this version is the use of TI DMAI library to provide compatibility between processors as well as simplify the TI plugin code that interfaces with the hardware accelerators on the processors. This port uses the codec combos provided in the DVSDK which allows for easy upgrading to newer versions of the TI DVSDK software. This port also has additional features such as image encoding and decoding that the previous ports did not have. Overall this port supports more platforms and is more portable that previously which allows it to be a better baseline to develop applications on.
What is a DVSDK?
A Digital Video Software Development Kit provides system software and demonstration applications for TI DSPs and SoCs used in multimedia applications. A DVSDK bundles the Linux port, drivers, and frameworks, plus demonstration multimedia codecs. You must log into TI's DVSDK website to access the various DVSDKs that are available.
What capabilities does the GStreamer DMAI plug-in support for my processor?
Short answer: the codecs bundled with the DVSDK are supported. See the FeatureMatrix for a summary.
How do I get the code?
What Linux distributions are commonly used to build the DMAI plug-in?
Each release of the DMAI plug-in is verified to bulid and run correctly (on at least device) on the following Linux distributions:
- RHEL 4
- [Linux Host Configuration - Ubuntu | Ubuntu] 9.04
How do I get some example pipelines to use this plug-ins?
Run the scripts on gstreamer_demo directory, you will get example gst-launch strings to test the plugins. ComparisonPipelines also includes examples you can try.
How do I debug this xyz problem?
- Be sure to enable debug support on gstreamer and use the options: "-v --gst-debug=TI*:2" in your application (where TI*:2 enables debug level 2 for all TI plugins). Increase the debug number up to 5 to add more verbosity to the debug.
- To debug problems inside DMAI, set the DMAI_DEBUG=2 environment variable.
- The underlying Codec Engine also enables a great deal of Trace for debug analysis : see CE DEBUG
- If you need more quick help visit the irc channel #gst_ti on irc.freenode.net
How do I pass arguments to a plugin?
Arguments (defined as parameters in the plugin) are specified on the command line by <name>=<value>. For example in the test_dmai.sh script the "filesrc" plugin has an argument "location" which is specified using location=$1
Where do I get DMAI?
The Davinci Multimedia Application Interface website has the download information.
How do I build the TI GStreamer plugin with Angstrom for BeagleBoard
The steps are documented at Building GStreamer Binaries with Arago.
How do I play a YouTube? QuickTime video?
TI gstreamer plugin has support for decoding mp4 video (AAC audio + H.264). You can use this to play YouTube? videos as follows:
- Browse your favorite video on YouTube? and choose the URL (e.g http://www.youtube.com/watch?v=mLPp8y-mEhw )
- Goto http://www.savevid.com . This website will let you download mp4 file for the selected youtube URL. To do that, enter YouTube? URL in download box and click "Download" button, this will bring another link to download its corresponding mp4.
- Copy the mp4 file on target filesystem.
- Run "./decode_qt.sh -f /clips/myhero.mp" command on shell to play the video. Note: If you get a resizer or framecopy asseration failure then it means the driver is not able to copy the decoded frame on display sink. This is due to framecopy module limitation where the video width need to be 32-byte aligned. To avoid this, you can use "-c" option in decode_qt script to disable the hardware accel copy. Disabling the hardware accel copy means plugin will use memcpy to copy the data from decoded element to dmaivideo sink(may affect performance). We are working on improving the plugin where we will use DMA/SDMA to copy the data to avoid the resizer hardware limitation and this will help us play any video resolutions.