学习Gstreamer断断续续也有一小段的时间了,不仅学习了基础教程和播放教程,同时还开始了翻译Gstreamer插件,但个人觉得对Gstreamer的了解还是比较的浅,特别是在学习和翻译Gstreamer插件的时候,感觉学的东西都是偏局部的,不能很好的串起来,所以,最近开始看Gstreamer的源码,但如果不做笔记的话,又可能会渐渐忘记其内部的工作原理,所以在这里对Gstreamer做一个总体上的分析。此教程不涉及应用的开发(基础教程和播放教程中已介绍),只对Gstramer是如何完成element的创建及链接的原理等进行解析。这也能很大的帮助我开发Gstreamer插件,从宏观上理解整个Gstreamer的框架。
Gstreamer创建element的过程
gst_element_factory_find
在创建pipeline时,我们需要创建element,此时可以调用gst_element_factory_make函数完成。在此函数中,Gstreamer会先调用gst_element_factory_find函数,根据factory的名称得到创建element的工厂对象指针。在创建工厂对象的过程中,Gstreamer会通过hash表查找是否注册对应的插件,若有,则返回对应的GstPluginFeature指针,并使用GST_ELEMENT_FACTORY将此对象转换成GstElementFactory指针。