有关gstreamer元素的一些信息,我必须发出一个类似的查询
gst_element_query_position (data.playbin, GST_FORMAT_TIME, ¤t)
(来自basic tutorial 4)
而对于其他人,我必须发出一个动作信号,如
g_signal_emit_by_name (data->playbin, "get-video-tags", i, &tags)
(来自playback tutorial 1)。
这是什么原因?是不是都在做同样的事情,向元素询问一些信息并等待答案(阻塞/同步)?对我来说,似乎查询正是如此,如“Foundations”一章和下图所示。
但动作信号如何适应该画面?它们是事件(请求)和消息(响应)还是仅查询的组合?最重要的是:为什么在已有查询时它们存在?
感谢您的时间和知识。
正如评论中提到的@vk_gst,查询是同步的,但信号(事件)不是。查询的目的是从管道获取一些信息,而事件的目的是告诉管道对给定的条件/要求采取某些行动。示例:您可以查询流的比特率。但你必须发送信号(事件)进行回放搜索。
换句话说,查询用于请求某些信息,而事件用于通知。如果元素发送查询,则它期望除成功/失败状态之外的某些输出。但是,如果元素发送事件,则只需要成功/失败状态。如何处理该事件留给收到它的其他元素。