# Phát triển plugin GStreamer tùy chỉnh

Trước khi thử viết plugin GStreamer của riêng mình, bạn nên làm quen với các khái niệm cốt lõi và hướng dẫn.

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

**Quy trình làm việc cấp cao để triển khai plugin GStreamer mới**

Để triển khai plugin tùy chỉnh, bạn sẽ cần:

- Quyết định xem nên kế thừa từ base class hiện có hay trực tiếp từ skeleton class GstElement.
- Chỉ định các pad, phần tử và caps (khả năng).
- Triển khai các hàm chính như init, set\_caps, set\_property, transform, v.v.
- Đăng ký plugin.

Hướng dẫn, tài liệu hướng dẫn và tài nguyên quan trọng

- Hướng dẫn:

    [https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-language=c)
- Hướng dẫn dành cho người viết plugin:

    [https://gstreamer.freedesktop.org/documentation/plugin-development/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/plugin-development/index.html?gi-language=c)
- Tài liệu khác:

    [https://gstreamer.freedesktop.org/documentation/additional/index.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/additional/index.html?gi-language=c)
- Tài liệu tham khảo về API:

    [https://gstreamer.freedesktop.org/documentation/libs.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/libs.html?gi-language=c)
- Các tính năng của caps:

    [https://gstreamer.freedesktop.org/documentation/gstreamer/gstcapsfeatures.html?gi-language=c](https://gstreamer.freedesktop.org/documentation/gstreamer/gstcapsfeatures.html?gi-language=c)
- Thỏa thuận về 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)

Các điểm chính

Hãy ghi nhớ các điểm chính sau đây khi bạn phát triển một plugin mới:

- Kế thừa và các lớp cơ sở

    - Mỗi plugin GStreamer được kế thừa từ một lớp mẫu cơ sở hoặc trực tiếp từ lớp skeleton GstElement.
    - Lớp GstElement đóng vai trò là một framework tối thiểu và nhà phát triển chịu trách nhiệm triển khai xử lý sự kiện, truy vấn, quản lý buffer và các chức năng thiết yếu khác.
    - Khi không có lớp mẫu cơ sở nào phù hợp với yêu cầu của plugin, các nhà phát triển có thể bắt đầu từ GstElement.
- Lớp mẫu cơ sở

    - GStreamer cung cấp các lớp mẫu cơ sở xử lý hầu hết các sự kiện và truy vấn; tuy nhiên, các lớp cơ sở này không quản lý việc xử lý buffer.
- Quản lý buffer

    - Tùy thuộc vào lớp cơ sở đã chọn, nhà phát triển phải triển khai quản lý buffer và ghi đè các phương thức ảo có liên quan.
    - Một số phương thức có cách triển khai mặc định, trong khi những phương thức khác là các hàm ảo thuần túy.
- Khả năng

    - Caps được hiển thị trên GstPadTemplates để chỉ định các loại phương tiện được hỗ trợ cho một pad.
    - Các pad trao đổi thông tin về những định dạng pad được hỗ trợ bằng cách sử dụng caps. Phần giao nhau của caps từ các pad kết nối sẽ xác định định dạng dữ liệu thực tế để giao tiếp.
- Ưu điểm của lớp cơ sở

    - Lớp cơ sở cung cấp các phương thức ảo mà nhà phát triển có thể ghi đè bằng cách triển khai tùy chỉnh.
    - Bằng cách tận dụng chức năng của lớp cơ sở hiện có, nhà phát triển có thể tập trung vào các tùy chỉnh cụ thể theo yêu cầu của thiết kế plugin.

Ghi chú

- Hướng dẫn này dựa trên bản phát hành `imsdk.lnx.2.0.0.r1-rel`.
- Hướng dẫn này dành cho các nhà phát triển có kinh nghiệm cần tạo plugin Qualcomm IM SDK để xử lý các trường hợp không được hỗ trợ, chẳng hạn như superresolution, bằng cách xây dựng dựa trên các plugin hiện có.
- Tạo plugin GStreamer tùy chỉnh là một tác vụ nâng cao và chỉ dành cho các nhà phát triển GStreamer có kinh nghiệm.
- Có nhiều hướng dẫn chi tiết trong miền nguồn mở và trên cổng thông tin GStreamer chính thức cho tác vụ này.
- Hãy dùng hướng dẫn này làm mẫu và sử dụng các tài nguyên nguồn mở để tìm hiểu về việc phát triển plugin tùy chỉnh.

Last Published: Dec 23, 2025

[Previous Topic
Thêm tính năng hỗ trợ hậu xử lý cho model tùy chỉnh](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BV/topics/add-postprocessing-support-custom-model.md) [Next Topic
Phát triển plugin superresolution](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BV/topics/development-process-for-new-plugin.md)