"); //-->
在之前我们介绍了多媒体处理框架相关系统的知识关于插件相关
1)在想要学习编写插件之前,最好会应用程序的编写,理解GstElement, GstPads等等结构体的知识。因为插件编写的过程中,很可能随时会用到这些结构体。
2)学习GObject的语法等知识,理解使用C是怎样模拟实现面向对
象的编程思想,理解怎么使用C语言来实现继承,多态,虚函数等
知识点。
3)学习插件编写手册,理解插件编写的规则。
插件编写的原则及文件目录分析
• gstreamer的相关路径,有两个路径,如下所示:
• /home/ybx/fsl-release-bsp/build-x11/tmp/work/imx6qsabresd-poky-linuxgnueabi/gst1.0-fsl-plugin/4.0.8-r0/gst1.0-fsl-plugins-4.0.8
• /home/ybx/fsl-release-bsp/build-x11/tmp/work/cortexa9hf-vfp-neon-pokylinux- gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5
• 先来看第一个目录下面:
aclocal.m4 autom4te.cache config.guess configure.ac COPYING-LGPL-2.1 gstreamer-fsl.pc.in libs Makefile.am NEWS tools AUTHORS
ChangeLog config.sub COPYING depcomp INSTALL ltmain.sh Makefile.in plugins autogen.sh compile configure
COPYING-LGPL-2 ext-includes install-sh m4 missing README
• 在plugins目录下面是所有的插件,如下:
aiurdemux beepdec compositor mp3enc overlay_sink v4l2 videoconvert vpu
• 这些目录里面是相关的插件源码。
• 在libs目录下面,是于插件源码相关的库函数:
allocator device-2d gstimxcommon.h gstsutils Makefile.am Makefile.in overlaycompositionmeta v4l2_core video-overlay video-tsm
• 在插件编写的过程中,需要使用到libs里面提供的库函数。
• 比如在v4l2类的插件中,有sink, src插件,在编写这些插件的过程中需要使用libs/v4l2-core里面提供的库函数。所以,核心就是查看
插件的源码及这些库函数文件。
• 以v4l2为例,先来看看这个文件夹下有几个文件:
gstimxv4l2allocator.c gstimxv4l2allocator.h gstimxv4l2plugin.c
gstimxv4l2sink.c gstimxv4l2sink.h gstimxv4l2src.c gstimxv4l2src.h
Makefile.am Makefile.in
• 这几个函数的框架是这样的: gstimxv4l2plugin.c作为主入口函数文件,这个文件中会将v4l2相关的插件,通过plugin_init函数注册到系统中。需要注意的是,通过查看上面几个文件,可以看到有sink,src, allocator相关的文件,但是 allocator并不是插件,在编写sink,src插件的时候,需要 allocator提供的函数。
• 首先是plugin_init函数
在这个函数中,通过gst_element_register函数来向系统中注册插件,想要注册几个插件就
需要调用几次这个函数。如下所示:
static gboolean plugin_init (GstPlugin * plugin) { if (!gst_element_register (plugin, "imxv4l2sink", IMX_GST_PLUGIN_RANK, GST_TYPE_IMX_V4L2SINK)) return FALSE; if (!gst_element_register (plugin, "imxv4l2src", IMX_GST_PLUGIN_RANK, GST_TYPE_IMX_V4L2SRC)) return FALSE; return TRUE; } IMX_GST_PLUGIN_DEFINE (imxv4l2, "IMX SoC v4l2-based video source/sink", plugin_init);
之后就是具体查看每一个插件是怎么编写的了。
在编写插件的过程中,官方提供了一个工具来构建这个插件的基本框架,这个按照官方《插件编写手册》里面的操作即可。
关于插件的编写就是我们就介绍到这里,在接下来的博客中,我们将会对插件以及GObject的语法规则进行讨论分析。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。