我正在编写一个 gstreamer (1.x) 插件,它将自动增益应用于视频帧。它将转换 GRAY16_LE -> GRAY8。
我首先在 gst-plugins-bad-1.3.2/tools 中运行 gst-element-maker 工具并使用 videofilter 模板。
如果我将 src 和水槽垫盖设置为“{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 函数,但我不确定,也不知道应该如何实现它以在两个焊盘上强制静态但不同的上限。有人能指出我正确的方向吗?
最佳答案
我能够在 gst-plugins-bad-1.3.2/ext/opencv/gstcvsobel 中找到我需要做的事情的简单示例(尽管是在 GRAY8->GRAY16_LE 方向而不是 GRAY16_LE->GRAY8) .c 插件。现在效果很好!
关于无法在自定义 gstreamer 插件中 Transform_caps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147988/