4)精灵 Pads (Ghost pads)

Bins有属于它自己的Pads,这就是”精灵Pads”的由来。

如下图。 没有使用精灵Pads的GstBin element

精灵pads来自于bins中某些element,它同样可以在该Bins中被直接访问。精灵Pads与UNIX文件系统中的符号链接很类似。使用Bins,你可以在你的代码中将Bins当作一个普通element来使用。

如下图. 使用了精灵Pads的GstBin element

最左边element的sink pad同样也是整个Bins的精灵pads。由于精灵pads看起来与其它pads没什么区别,而且与其它pads有着类似的功能。所以它们可以加到任何一种element上,而不仅仅是GstBin。

通过函数gst_ghost_pad_new ()可以创建一个ghost pad :

#include <gst/gst.h>

int  main (int   argc,   char *argv[])

{

  GstElement *bin, *sink;

  GstPad *pad;

  /* init */

  gst_init (&argc, &argv);

  /* create element, add to bin */

  sink = gst_element_factory_make ("fakesink", "sink");

  bin = gst_bin_new ("mybin");

  gst_bin_add (GST_BIN (bin), sink);

  /* add ghostpad */

  pad = gst_element_get_pad (sink, "sink");

  gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad));

  gst_object_unref (GST_OBJECT (pad));

[..]

}

上面的例子中,pads不仅有精灵pads,而且还存在一个带名叫”sink”的sink pad  element。 因此这个Bins可以作为那个element的替代者。你可以将其它的element与这个Bins进行连接。

文章標籤
全站熱搜
創作者介紹
創作者 丘猴子 的頭像
丘猴子

轉貼部落格

丘猴子 發表在 痞客邦 留言(0) 人氣(16)