在自定义gstreamer插件中无法transform_caps

时间:2014-10-01 18:22:36

标签: c gstreamer

我正在编写一个gstreamer(1.x)插件,它将自动增益应用于视频帧。它将改变GRAY16_LE - > GRAY8。

我首先在gst-plugins-bad-1.3.2 / tools中运行gst-element-maker工具,然后使用 videofilter 模板。

如果我将src和sink pad caps设置为“{GRAY8,GRAY16_LE}”,我可以运行以下管道:

gst-launch-1.0 videotestsrc ! video/x-raw,format=GRAY16_LE ! videoautogain ! videoconvert ! autovideosink

但是,它在src和接收器上使用相同的大写字母(在本例中为GRAY16_LE)。如果将接收器盖更改为“{GRAY16_LE}”并将src上限更改为“{GRAY8}”,则会出现连接管道的错误。我想我可能需要实现GstBaseTransform-> transform_caps函数,但我不确定,我不知道我应该如何实现它来强制静态但两个垫上有不同的上限。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我能够在gst-plugins-bad-1.3.2 / ext / opencv中找到一个我需要做的简单示例(尽管在GRAY8-> GRAY16_LE方向而不是GRAY16_LE-> GRAY8) /gstcvsobel.c插件。现在很棒!