From Texas Instruments Embedded Processors Wiki
GStreamer is a pipeline-based multimedia framework that allows you to create a variety of media-handling software components, including simple audio playback, audio and video playback, recording, streaming, and editing. The pipeline design allows you to easily write any type of streaming multimedia application. GStreamer also provides existing libraries and plugins for features such as A/V synchronization, muxing/demuxing, etc. Using GStreamer allows you to leverage all of this existing code in your product.
However, existing open source plugins do not leverage the DSP and accelerator modules on TI hardware. Leveraging these resources allows the system to perform labor-intensive operations while consuming fewer ARM cycles. This leaves the ARM processor free to perform other tasks in parallel. In order to enable full use of the hardware we do not need to significantly modify GStreamer to support TI platforms, we just need to write a plugin.
By providing a plugin that provides access to the hardware we are enabling the user to:
- Focus development efforts on "WOW" features of an application rather than spending time on base functionality.
- Enable DaVinci and OMAP devices to use existing applications built on top of GStreamer.
- Leverage the modular design to decrease the time required to develop new applications and enable more re-use of existing code.
GStreamer Plug-ins for TI hardware
There are several approaches that have been used to develop GStreamer plug-ins that utilize the DSP and accelerator modules in TI hardware.
- gst-dmai - Davinci Multimedia Application Interface based plug-in for most of the TI davinci and OMAP chips.
- gst-openmax - Plug-in that uses the OpenMAX IL component. OpenMAX IL is an industry standard that provides an abstraction layer for computer graphics, video, and sound routines. Only OMAP3 is supported.
- gst-dsp - dsp-bridge based plug-in. Only OMAP3 is supported.
Gstreamer version: 0.99.00 To use script to run gst-launch repeatedly, after about 100 times, there will be a memory allocating error. System will initial the oom-killer to kill all current processes to acquire memory.
But if use the “free” command, you will find there are still many free memories. The system will kill all other processes to get memory even if there are still many free ones. Why? How can we trace the gstreamer allocating memory? Thanks.