使用 gst-element-maker 创建一个完全透传的 videofilter 插件

news2024/11/28 9:47:24

系列文章目录

创建 gstreamer 插件的几种方式
使用 gst-template 创建自己的 gstreamer 插件
使用 gst-plugins-bad 里面的 gst-element-maker 工具创建gstreamer 插件
使用 gst-element-maker 创建一个完全透传的 videofilter 插件


文章目录

  • 系列文章目录
  • 前言
  • 一、使用gst-element-maker 创建一个videofilter 插件
    • 1. 使用 gst-element-maker 基于videofilter 基类模板创建一个 g2dfilter 插件
    • 2. 修改 g2dfilter 插件源码,支持透传功能
    • 3. 编译修改后添加透传功能的 g2dfilter 插件
    • 4. 本地电脑安装 g2dfilter 插件
  • 二、测试 g2dfilter 插件的透传功能
  • 总结
  • 参考资料


前言

本文主要介绍如何使用gst-plugins-bad 里面的 gst-element-maker 工具创建一个基于 videofilter base class 的透传功能videofilter gstreamer插件(上一篇文章 使用 gst-plugins-bad 里面的 gst-element-maker 工具创建gstreamer 插件 只是创建了一个最基础的videofilter 插件,但是它不支持透传功能,即进入该插件 sink pad 的数据不能从该插件的 src pad 发送出去)
软硬件环境:
ubuntu18.04
meson 0.55.0
gstreamer 1.14.5
ninja 1.8.2
python 3.6.9


一、使用gst-element-maker 创建一个videofilter 插件

1. 使用 gst-element-maker 基于videofilter 基类模板创建一个 g2dfilter 插件

如下图所示,使用 gst-element-maker g2dfilter videofilter 命令生成 g2dfilter 插件相关的代码

cd gst-plugins-bad/tools
./gst-element-maker g2dfilter videofilter

在这里插入图片描述

2. 修改 g2dfilter 插件源码,支持透传功能

如下图所示,在 gstg2dfilter.c 文件中的 **gst_g2dfilter_start() **函数中添加一句 gst_base_transform_set_passthrough(trans, TRUE) 函数调用,就实现了透传功能, 至于gst_base_transform_set_passthrough() 函数的相关说明,请参考 gstreamer官网 GstBaseTransform 基类的相关资料
在这里插入图片描述
修改后的完整的gstg2dfilter.c 代码(包括添加的一些打印信息)如下:

/* GStreamer
 * Copyright (C) 2023 FIXME <fixme@example.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Suite 500,
 * Boston, MA 02110-1335, USA.
 */
/**
 * SECTION:element-gstg2dfilter
 *
 * The g2dfilter element does FIXME stuff.
 *
 * <refsect2>
 * <title>Example launch line</title>
 * |[
 * gst-launch-1.0 -v fakesrc ! g2dfilter ! FIXME ! fakesink
 * ]|
 * FIXME Describe what the pipeline does.
 * </refsect2>
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdint.h>
#include <gst/gst.h>
#include <gst/video/video.h>
#include <gst/video/gstvideofilter.h>
#include "gstg2dfilter.h"

GST_DEBUG_CATEGORY_STATIC (gst_g2dfilter_debug_category);
#define GST_CAT_DEFAULT gst_g2dfilter_debug_category

/* prototypes */


static void gst_g2dfilter_set_property (GObject * object,
    guint property_id, const GValue * value, GParamSpec * pspec);
static void gst_g2dfilter_get_property (GObject * object,
    guint property_id, GValue * value, GParamSpec * pspec);
static void gst_g2dfilter_dispose (GObject * object);
static void gst_g2dfilter_finalize (GObject * object);

static gboolean gst_g2dfilter_start (GstBaseTransform 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亿图脑图新版本支持思维导图一键生成PPT、音视频等格式,办公提效再升级

近日&#xff0c;国产思维导图软件——亿图脑图MindMaster发布了全新版本V10.9.0&#xff0c;本次亿图脑图的升级给用户带来了极大的惊喜。全新升级的亿图脑图MindMaster不仅支持20格式的文件智能解析成思维导图&#xff0c;还支持思维导图一键生成PPT、音频、视频等内容形式&a…

公认黑客守则

1、不要恶意的破坏任何系统&#xff0c;恶意的破坏他人的软件或服务器将要承担法律责任&#xff0c;如果你只是使用计算机&#xff0c;也是非法的&#xff0c;千万不要破坏别人的文件或数据 2、不要修改别人的任何系统文件&#xff0c;如果你是为了进入而修改它&#xff0c;请在…

计算机视觉与深度学习-Transformer-【北邮鲁鹏】

目录 引入基本组成编码器多头自注意力机制&#xff08;Multi-Head Self-Attention&#xff09;多头自注意力的计算过程头数与维度关系前馈神经网络&#xff08;Feed-Forward Neural Network&#xff09; 编码器中的ADD&NORM加法操作&#xff08;Addition&#xff09;归一化…

三、2023.9.29.C++面向对象.3

文章目录 33、简述一下什么是面向对象&#xff1f;34、简述一下面向对象的三大特征&#xff1f;35、简述一下 C 的重载和重写&#xff0c;以及它们的区别&#xff1f;36、说说 C 的重载和重写是如何实现的&#xff1f;37、说说构造函数有几种&#xff0c;分别什么作用?38、只定…

(二) gitblit用户使用教程

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 网页访问git客户端设置推送错误配置查看当前配置 日常使用仓库分组my profile修改上传代码简洁 网页访问 点击Advanced... 点击Accept the Risk and Contiue 初始用户名和密码都是admin,点击login…

使用SDKMAN在Linux系统上安装JDK

本文使用的Linux发行版为Rocky Linux 9.2&#xff0c;可以当做CentOS的平替产品。 SDKMAN是一个sdk包管理工具&#xff0c;通过自带的命令可以快速切换软件环境&#xff0c; 官网地址&#xff1a;https://sdkman.io/。 1、安装sdkman&#xff1a; # curl -s "https://ge…

1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning

2022CIKM 1 intro 1.1 背景 轨迹相似度计算是轨迹分析任务&#xff08;相似子轨迹搜索、轨迹预测和轨迹聚类&#xff09;最基础的组件之一现有的关于轨迹相似度计算的研究主要可以分为两大类&#xff1a; 传统方法 DTW、EDR、EDwP等二次计算复杂度O(n^2)缺乏稳健性 会受到非…

【机器学习】训练集/验证集/测试集释疑

文章目录 序言1. 训练集、验证集、测试集是什么2. 为什么需要验证集3. 验证集是必须的吗4. 验证集和测试集上的表现会不同吗5. 如何从Train/Test Set划分Validation Set6. 训练集、验证集和测试集的比例怎么设置7. 模型表现不好时测试集可以反复使用来调整模型吗8. 训练集、验证…

设计模式6、适配器模式 Adapter

解释说明&#xff1a;将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作 目标接口&#xff08;Target&#xff09;&#xff1a;当前系统所期待的接口&#xff0c;它可以是抽象类或接口 适配者&#xff08;Adaptee&#xff09;&#xff1a…

堆的介绍、堆的向上、 向下调整法与基本功能实现

&#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;数据结构 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识 堆 二叉树的顺序结构堆的概念&#xff1a;堆的…

汽车电子——产品标准规范汇总和梳理(开发体系)

文章目录 前言 一、设计架构 二、安全可靠 三、测试验证 四、过程能力 五、质量管理 六、开发指南 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、设计架构 《Autosar R22-11 汽车开放系统体系架构》 二、安全可靠 《GB/T 34590.1-2022&#xff08;ISO 262…

零代码编程:用ChatGPT批量自动下载archive.org上的音频书

http://archive.org 是一个神奇的网站&#xff0c;可以下载各种古旧的软件、书籍、音频、视频&#xff0c;还可以搜索各个网站的历史网页。 比如说&#xff0c;一些儿童故事音频就可以在http://archive.org下载到&#xff0c;可以用来做英语听力启蒙用。 举个例子&#xff0c…

【开发篇】四、数据源、JdbcTemplate、内嵌H2

文章目录 1、数据源DataSource2、SpringBoot的内嵌数据源对象3、Spring的内置持久化方案JdbcTemplate4、SpringBoot内嵌数据库5、内嵌数据库H2的访问 1、数据源DataSource 了解数据源这个概念前&#xff0c;先看下原生JDBC的基本步骤&#xff1a; Connection conn null; State…

【JVM】双亲委派模型

双亲委派模型 1. 什么是双亲委派模型2. 双亲委派模型的优点 1. 什么是双亲委派模型 提到 类加载 机制&#xff0c;不得不提的一个概念就是“双亲委派模型”。 双亲委派模型指的就是 JVM 中的类加载器如何根据类的全限定名找到 .class 文件的过程 类加载器: JVM 里面专门提供…

坠落防护 挂点装置

声明 本文是学习GB 30862-2014 坠落防护 挂点装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高处坠落防护挂点装置的技术要求、检验方法、检验规则及标识。 本标准适用于防护高处坠落的挂点装置。 本标准不适用于体育及消…

【C++】unordered_set与unordered_map的封装

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

Java | Maven(知识点查询)

文章目录 Maven知识速查1. Maven概述2. Maven的作用3. Maven的下载4. Maven的环境配置5. Maven 的基础组成5.1 Maven仓库5.1.1 本地仓库配置&#xff1a;5.1.2 中央仓库配置&#xff1a;5.1.3 镜像仓库配置 5.2 Maven坐标 6. Maven项目6.1 手工创建Maven项目6.2 自动构建项目 7…

7、Docker网络

docker网络模式能干嘛&#xff1f; 容器间的互联和通信以及端口映射 容器IP变动时候可以通过服务名直接网络通信而不受到影响 docker 网络模式采用的是桥接模式&#xff0c;当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡&#xff0c;这个虚拟网卡和我们的容器网…

火热报名中 | 2天峰会、20+热门议题,AutoESG 2023数智低碳---中国汽车碳管理创新峰会亮点抢先看!

在碳中和的背景下&#xff0c;减碳之风吹遍全球&#xff0c;而汽车行业则由于产业链长、辐射面广、碳排放总量增长快、单车碳强度高的特点&#xff0c;成为各国碳排放管理的监管重点&#xff0c;聚焦汽车业的碳博弈也逐步升级。 2020年&#xff0c;国务院办公厅印发的《新能源…