文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GStreamer流程分析

GStreamer流程分析

时间:2010-12-21  来源:piaoyizu

parser = gst_element_factory_make ("oggdemux", "ogg-parser");
2007-10-06 18:29

这条语句首先检查 oggdemux factory 是否已经在 registery 中注册,然后进一步检查 ogg factory 中是否有 ogg-parser plugin。如果有,就调用 gst_ogg_parse_init 函数:

static void
gst_ogg_parse_init (GstOggParse * ogg)
{
   /* create the sink and source pads */
   ogg->sinkpad =
       gst_pad_new_from_static_template (&ogg_parse_sink_template_factory,
       "sink");
   ogg->srcpad =
       gst_pad_new_from_static_template (&ogg_parse_src_template_factory, "src");

   /* TODO: Are there any events we must handle? */
   /* gst_pad_set_event_function (ogg->sinkpad, gst_ogg_parse_handle_event); */
   gst_pad_set_chain_function (ogg->sinkpad, gst_ogg_parse_chain);

   gst_element_add_pad (GST_ELEMENT (ogg), ogg->sinkpad);
   gst_element_add_pad (GST_ELEMENT (ogg), ogg->srcpad);

   ogg->oggstreams = NULL;
}

ogg-parser 元件的数据结构如下:

struct _GstOggParse
{
   GstElement element;
   GstPad *sinkpad;               /* Sink pad we're reading data from */
   GstPad *srcpad;                /* Source pad we're writing to */
   GSList *oggstreams;            /* list of GstOggStreams for known streams */
   gint64 offset;                 /* Current stream offset */
   gboolean in_headers;           /* Set if we're reading headers for streams */
   gboolean last_page_not_bos;    /* Set if we've seen a non-BOS page */
   ogg_sync_state sync;           /* Ogg page synchronisation */
   GstCaps *caps;                 /* Our src caps */
};

gst_ogg_parse_init 函数对 GstOggParse 数据结构进行了必要的初始化,并把核心函数 gst_ogg_parse_chain 注册到了 sinkpad 中。

在 helloworld 程序中执行 gst_element_set_state (pipeline, GST_STATE_PLAYING); 这条语句之后,ogg-parser 元件对 filesrc 源元件传递过来的数据进行解析。

(传递的过程应该是由 gst_element_link (source, parser); 这条语句完成的,它可能设置了 GstOggParse 数据结构中的 GstPad *sinkpad;   数据项。)

而解析过程是由核心函数 gst_ogg_parse_chain 完成的。

ogg 插件位于 \gst-plugins-base-0.10.14\ext\ogg 目录下。

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载