gstreamer将不同的sink / source caps链接到插件

时间:2015-06-22 17:24:12

标签: gstreamer

我有一个适用于原始视频的插件,可以在工作期间调整大小。 这个插件有两个(兼容的)视频输入和一个视频输出。 输入和输出的上限可能不同

但是当我尝试在接收器和源上使用不同的大写时,它无法链接。

实施例

这很好用。

gst-launch-1.0 videotestsrc ! video/x-raw,format=BGR,width=800,height=600 ! my_plugin name=t ! video/x-raw,format=BGR,width=800,height=600 ! fakesink videotestsrc ! video/x-raw,format=BGR,width=800,height=600 ! t.

但事实并非如此。 [警告:错误的管道:无法将t链接到fakesink0]

gst-launch-1.0 videotestsrc ! video/x-raw,format=BGR,width=800,height=600 ! my_plugin make_small=1 name=t ! video/x-raw,format=BGR,width=750,height=600 ! fakesink videotestsrc ! video/x-raw,format=BGR,width=800,height=600 ! t.

我阅读了docs/design/draft-klass.txt并查看了视频插件描述并更改了my_plugin描述,如

Factory Details:
  ..
  Klass                    Mixer/Effect/Converter/Video/Scaler
  ..

但它仍然无效。我想念的是什么?

编辑。我的问题是因为GST_PAD_SET_PROXY_CAPS()用于所有接收器/源接收器。根据{{​​3}},此功能简化了事件管理,并保证这些上限兼容。

1 个答案:

答案 0 :(得分:0)

使用GST_PAD_SET_PROXY_CAPS()是一个答案。