Linux Gstreamer and GST-OMX插件

时间:2022-09-08 20:05:53
1. Gstreamer基本介绍
Gstreamer是linux上的多媒体框架。如下所示:
      Linux Gstreamer and GST-OMX插件

 从上面这个图中可以看到,底层是以plugin插件形式存在包括codec标准,parser,audio, protocol等,
 也包括用户自己开发的plugin和第三方开发的plugin。
 core framework提供了plugin之间的交互机制和管理,通过将一些plugin连接起来形成一个系统,并且对上
 提供访问的接口。APP是构建在framework上的。

 通过这个框架,底层开发者可以专注于开发plugin,APP开发者通过调用这个plugin来组成完成某种功能的
 APP,plugin之间的通信都是由gstreamer framework提供的。

 目前已经有一些成熟的plugin已经开发,并且作为library提供给了用户:
     gst-plugins-base: an essential exemplary set of elements
     gst-plugins-good: a set of good-quality plug-ins under LGPL
     gst-plugins-ugly: a set of good-quality plug-ins that might pose distribution problems
     gst-plugins-bad:  a set of plug-ins that need more quality

plugin中的element实际上就是实现该element支持的API,供上层来调用.

Gstreamer中的几个术语:
   Elements: plugin的实例,在一个APP中可能需要创建多个elements并且把这些elements连接在一起形成系统
       elements可以分为:
          source element: 没有输入,只有输出pad,用来产生数据。
          sink element:    只有输入pad,没有输出pad,是数据的目的地。如disk,soundcard
          filter element: 包含输入pad和输出pad,接收输入的数据并且产生输出数据
                           输入输出Pad的数目可以是N个(N >= 1)
                          
                         Linux Gstreamer and GST-OMX插件
                 queue element: 是一个特殊的element,作为thread的边界存在。Gstreamer是可以
                                支持多线程的,线程的边界通过queue来隔开。
                            Linux Gstreamer and GST-OMX插件

  element state:
      element有4个状态:
           Linux Gstreamer and GST-OMX插件
   
Pads:element的输入输出端口。elements之间就是通过Pad来进行连接的。数据通过Pads在elements之间
         进行传递。