在 gstreamer 插件中可靠地找到流的像素 0,0

问题描述 投票:0回答:1

我正在编写一个 gstreamer 插件,可以就地修改缓冲区。我使用 GST_VIDEO_FRAME_WIDTH(frame) 和 GST_VIDEO_FRAME_HEIGHT(frame) 来获取缓冲区的宽度和高度。然而,这并不能反映屏幕上实际显示的内容。

带有裁剪的示例管道:

xinit /usr/local/usr/bin/gst-launch-1.0 videotestsrc ! videoconvert ! video/x-raw,format=BGRx,width=500,height=500 ! videocrop top=100 left=0 bottom=0 right=100 ! myplugin ! latencydetect debug=1 ! vaapisink sync=false

输出将为 400x400,但插件仍会看到 500x500 的缓冲区。

如何找到宽度、高度、xoffset 和 yoffset 以便我可以正确定位缓冲区中的像素?

我尝试检查盖子,它确实提供了正确的宽度和高度,但不包括偏移量。

gstreamer
1个回答
0
投票

videocrop
很可能不会更改缓冲区,但会向其中添加裁剪元数据。

有关元数据结构,请参阅 https://gstreamer.freedesktop.org/documentation/video/gstvideometa.html?gi-language=c#GstVideoCropMeta

使用 https://gstreamer.freedesktop.org/documentation/video/gstvideometa.html#gst_buffer_get_video_crop_meta 从缓冲区获取此元数据。

© www.soinside.com 2019 - 2024. All rights reserved.