# 開發自訂 GStreamer 外掛程式

在嘗試編寫自訂 GStreamer 外掛程式之前，您應熟悉核心概念及教學。

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

**開發新 GStreamer 外掛程式的高層級工作流程**

若要實作自訂外掛程式，您需要：

- 決定是繼承自現有的基底範本類別，還是直接從 GstElement 骨架類別繼承。
- 指定 pads、元素以及 caps (能力) 。
- 實作關鍵功能，例如 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 上公開，以指定 pads 支援的媒體類型。
    - Pads 使用 cap 交換關於支援格式的資訊。相連 pads 的 caps 交集決定通訊的實際資料格式。
- 基底類別的優勢

    - 基底類別提供虛擬方法，開發者可覆寫這些方法來進行自訂實作。
    - 利用現有基底類別的功能，開發者可以專注於其外掛程式設計所需的特定自訂化需求。

附註

- 這些說明是基於 `imsdk.lnx.2.0.0.r1-rel` 版本。
- 本指南適用於經驗豐富的開發人員，用於建立 Qualcomm IM SDK 外掛程式以處理現有外掛程式無法支援的使用案例（例如超解析度）。
- 開發自訂 GStreamer 外掛程式是一項高階任務，僅適用於熟悉 GStreamer 開發的專業人員。
- 有關此任務的詳細教學課程，可在開放原始碼社群及 GStreamer 官方網站找到。
- 請將此指引作為範例模板，並參考開放原始碼資源學習如何開發自訂外掛程式。

Last Published: Dec 23, 2025

[Previous Topic
為自訂模型新增後處理支援](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BT/topics/add-postprocessing-support-custom-model.md) [Next Topic
開發超解析度外掛程式](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BT/topics/development-process-for-new-plugin.md)