Gstreamer(版本0.10 )允许使用“Appsrc”元素加载外部数据。
Appsrc有一个控制属性,用于定义在考虑队列已满之前可以在appsrc中排队的数据量。它被命名为“max-bytes”。
当队列大小达到预定义限制时,apprc信号带有“足够数据”信号。
有一个申请:
“start”和“stop”函数负责函数X的执行。这两个函数都在appsrc注册:
g_signal_connect(app->appsrc_v, "need-data", G_CALLBACK(start_feed), app);
g_signal_connect(app->appsrc_v, "enough-data", G_CALLBACK(stop_feed), app);
使用“max-bytes”属性定义的队列限制为:40960字节
一切看起来都很好 - pipline正在运行,appsrc消耗数据,正在运行,应用程序发出“需要”和“足够”的信号。
但有时我会看到以下内容:
appsrc gstappsrc.c:1451:gst_app_src_push_buffer_full:<appsrc_v> queue filled (**890033** >= **40960**)
appsrc gstappsrc.c:1451:gst_app_src_push_buffer_full:<appsrc_v> queue filled (**898225** >= **40960**)
appsrc gstappsrc.c:1451:gst_app_src_push_buffer_full:<appsrc_v> queue filled (**898225** >= **40960**)
已达到队列限制,但未发出“足够”信号。 馈送功能将继续将数据推送到appsrc,而不是40K,它可以推送到1Mb或更多。
你能帮我理解一下这个原因吗?