# 开发定制 GStreamer 插件

在尝试编写自己的 GStreamer 插件之前，您需要先熟悉核心概念。

![../_images/guidelines-gstreamer-plugin.png](data:image/png;base64,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)

**实施新的 GStreamer 插件的工作流**

如需实现定制插件，您需要：

- 决定是从现有的基本模板类继承还是直接从 GstElement 主干类继承。
- 指定 pads、elements 和 caps (capabilities)。
- 实现 init、set\_caps、set\_property、transform 等关键函数。
- 注册插件。

主要教程、指南和资源

- 教程：

    [https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=c)
- 插件编写者指南：

    [https://gstreamer.freedesktop.org/documentation/plugin-development/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/plugin-development/index.html?gi-language=c)
- 其他文档：

    [https://gstreamer.freedesktop.org/documentation/additional/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/additional/index.html?gi-language=c)
- API 参考：

    [https://gstreamer.freedesktop.org/documentation/libs.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/libs.html?gi-language=c)
- Caps 功能：

    [https://gstreamer.freedesktop.org/documentation/gstreamer/gstcapsfeatures.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/gstreamer/gstcapsfeatures.html?gi-language=c)
- Caps 协商：

    [https://gstreamer.freedesktop.org/documentation/plugin-development/advanced/negotiation.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/plugin-development/advanced/negotiation.html?gi-language=c)

要点

开发新插件时请记住以下要点：

- 继承和基类

    - 每个 GStreamer 插件要么从基本模板类继承，要么直接从 GstElement 主干类继承。
    - GstElement 类可用作一个最小的框架，而开发者负责实现事件处理、查询、缓存管理和其他核心功能。
    - 当现有的基本模板类均不符合插件的要求时，开发者可以使用 GstElement 类开始进行开发。
- 基本模板类

    - GStreamer 提供了诸多基本模板类，用于处理大多数事件和查询；但是，这些基类不能管理对缓存的处理操作。
- 缓存管理

    - 根据所选的基类，开发者必须实施缓存管理并重写相关的虚方法。
    - 有些方法有默认实现，而其他方法则仅有虚拟功能。
- 功能

    - Caps 在 GstPadTemplates 上公开，用以指定 pad 支持的媒体类型。
    - Pads 采用 caps 来交换有关其支持的格式的信息。连接 pads 的 caps 交集决定了通信所采用的实际数据格式。
- 基类的优点

    - 基类提供了虚方法，开发者可以使用定制实现重写这些方法。
    - 利用现有基类的功能，开发者可以专注于插件设计所需的特定定制。

注释

- 这些说明基于 `imsdk.lnx.2.0.0.r1-rel` 版本。
- 本指南面向经验丰富的开发者，他们正在创建 Qualcomm IM SDK 插件，以便在现有插件的基础上处理不受支持的用例（例如超分辨率）。
- 创建定制 GStreamer 插件是一项进阶任务，只能由经验丰富的 GStreamer 开发者完成。
- 在开源领域和官方 GStreamer 门户上，提供了有关此任务的大量教程。
- 可将本指南用作模板并使用开源资源来了解如何开发定制插件。

Last Published: Oct 12, 2025

[Previous Topic
为定制模型添加后处理支持](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BY/topics/add-postprocessing-support-custom-model.md) [Next Topic
开发超分辨率插件](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BY/topics/development-process-for-new-plugin.md)