通过rtpgstdepay事件字符串的消息传输未0终止



当我使用rtpgstdepay卸载时,我会收到警告消息

事件字符串不是0终止的。

如何解决这个问题?

pipeline : gst-launch-1.0 udpsrc ! queue ! rtpgstdepay ! autovideosink 

Warning :: "event string not 0 terminated"
Debug Info ::  gstrtpgstdepay.c(331): read_event (): /GstPipeline:Transporter/GstRtpGSTDepay:rtp_depay

在rtpgstdepay caps中,对于新版本,事件字符串应以"0字节字符(\0)"终止。对于较旧的版本,应以";(分号)'。

如果事件字符串未正确终止,则会出现"事件字符串未0终止"警告消息。

添加此条件是为了解决修复缓冲区重写问题,并确保我们不会读取超过缓冲区末尾的字符串。

兼容性矩阵如下:

  • 旧付->旧付:

没有变化,升级后的核心不会在某些格式错误的情况下崩溃输入

  • 旧付款->新付款:

新的depay发现;并解析消息。核心变更不会课题

  • 新付款->旧付款:

new depay在字符串后面加上额外的0。老戴只是解析并跳过额外的0字节(因为它包含在长度中)。有了新的核心,肯定格式错误的有效载荷没有崩溃。

  • 新付款->新付款:

new pay在字符串后添加额外的0,new depay检查0并解码。新core将避免某些缓冲区溢出。

通过使用rtpgstpay&rtpgstdepay组件我通过udp通过rtp成功地传输了修改后的缓冲区。

在接收器端,

在udpsrc caps中,我添加了类型为G_type_string的caps中的caps事件字符串。

caps事件字符串是在我使用-v选项启动此管道时获取的。

该事件字符串用于我的C代码的udpsrc caps属性。

最新更新