![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GStreamer插件开发
文章平均质量分 87
李尔阳
这个作者很懒,什么都没留下…
展开
-
五、Plugin Different scheduling modes
pad的调度模式定义了如何从(source)pad检索数据或将数据提供给(sink) pad。GStreamer可以在两种调度模式下工作,称为push-mode和pull-mode。GStreamer支持在任何调度模式下具有pad的元素,其中并非所有pad都需要运行在同一模式下。到目前为止,我们只讨论了_chain()操作元素,即在其sink pad上设置了chain函数并在其source pad上设置了push buffer的元素。原创 2023-02-21 16:56:57 · 387 阅读 · 0 评论 -
四、Plugin Request and Sometimes pads
到目前为止,我们只处理了总是可用的pad。然而,也有一些pad仅在某些情况下创建,或者仅在应用程序请求pad时创建。第一个有时被称为a;第二个被称为请求pad。pad的可用性(always, sometimes or request)可以在pad的模板中看到。本章将讨论它们各自在什么时候有用,如何创建它们,以及何时处理它们。原创 2023-02-21 15:56:35 · 398 阅读 · 0 评论 -
三、Plugin states、Building a Test Application
状态描述元素实例是否已初始化,是否准备传输数据,以及当前是否正在处理数据。GStreamer中定义了四种状态。从现在起,它们将被简称为“NULL”、“READY”、“PAUSED”和“PLAYING”。GST_STATE_NULL是元素的默认状态。在这种状态下,它没有分配任何运行时资源,没有加载任何运行时库,显然不能处理数据。GST_STATE_READY是元素可能处于的下一个状态。在就绪状态下,元素拥有分配的所有默认资源(运行时库、运行时内存)。然而,它还没有分配或定义任何特定于流的东西。原创 2023-02-21 15:30:16 · 235 阅读 · 0 评论 -
二、Plugin The chain/event/query function
链函数是所有数据处理都在其中进行的函数。在简单过滤器的情况下(本节示例的情况),_chain()函数大多是线性函数——因此对于每个传入的缓冲区,也将输出一个缓冲区。显然,上面的代码没什么用。你通常会在那里处理数据,而不是打印出数据所在的位置。但请记住,缓冲区并不总是可写的。在更高级的元素(进行事件处理的元素)中,你可能需要另外指定一个事件处理函数,在发送流事件时调用该函数(如caps、end-of-stream、newsegment、tags等)。在某些情况下,元素还可以控制输入数据速率。原创 2023-02-21 14:58:32 · 398 阅读 · 0 评论 -
一、Plugin Constructing the Boilerplate
在本章中,你将学习如何为一个新插件构建最少的代码。从起点开始,您将看到如何获取GStreamer模板源代码。然后,您将学习如何使用一些基本工具来复制和修改模板插件,以创建一个新的插件。如果您遵循这里的示例,那么在本章结束时,您将拥有一个可以编译并在GStreamer应用程序中使用的功能强大的音频过滤器插件。原创 2023-02-21 12:59:55 · 414 阅读 · 0 评论