动作信号与gstreamer中的查询的目的是什么?

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

有关gstreamer元素的一些信息,我必须发出一个类似的查询

gst_element_query_position (data.playbin, GST_FORMAT_TIME, &current)

(来自basic tutorial 4

而对于其他人,我必须发出一个动作信号,如

g_signal_emit_by_name (data->playbin, "get-video-tags", i, &tags)

(来自playback tutorial 1)。

这是什么原因?是不是都在做同样的事情,向元素询问一些信息并等待答案(阻塞/同步)?对我来说,似乎查询正是如此,如“Foundations”一章和下图所示。

但动作信号如何适应该画面?它们是事件(请求)和消息(响应)还是仅查询的组合?最重要的是:为什么在已有查询时它们存在?

感谢您的时间和知识。


Gstreamer Communication

gstreamer gstreamer-1.0
1个回答
1
投票

正如评论中提到的@vk_gst,查询是同步的,但信号(事件)不是。查询的目的是从管道获取一些信息,而事件的目的是告诉管道对给定的条件/要求采取某些行动。示例:您可以查询流的比特率。但你必须发送信号(事件)进行回放搜索。

换句话说,查询用于请求某些信息,而事件用于通知。如果元素发送查询,则它期望除成功/失败状态之外的某些输出。但是,如果元素发送事件,则只需要成功/失败状态。如何处理该事件留给收到它的其他元素。

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