GStreamer Basic tutorial 学习笔记(七)

多线程处理

目标:GStreamer可以自动处理多线程,但在某些情况下,可能需要手动分离线程。
介绍:GStreamer 是一个多线程框架。这意味着在内部,它根据需要创建和销毁线程,例如将流媒体与应用程序线程分离。此外,插件还可以自由地为它们自己的处理创建线程,例如,视频解码器可以创建 4 个线程以充分利用具有 4 个核心的 CPU。

此外,在构建管道时,应用程序可以显式指定分支(管道的一部分)在不同的线程上运行(例如,使音频和视频解码器同时执行)。

这可以通过使用队列元素来实现。队列元素的工作原理如下:接收端简单地将数据入队并返回控制权。在不同的线程上,数据被出队并向下游推送。此元素还用于缓冲,后续在流媒体教程中会看到。可以通过属性控制队列的大小。

Request pads

在基础教程 3:动态管道中,我们看到了一个元素(uridecodebin),它一开始没有 pad,而是在数据开始流动,并且元素获得媒体信息时出现的。这些被称为“Sometimes Pads”,与随时可用的常规 pad 相对应,后者称为“Always pads”。

第三种类型的 padRequest pads,它是根据需要创建的。经典的例子是 tee 元素,它有一个sink pad 和没有初始化的source pads:它们需要被请求,然后 tee 添加它们。通过这种方式,输入流可以被复制任意多次。缺点是与“Sometimes Pads”连接元素不像与“Always pads”连接那样自动。

注意:在 PLAYINGPAUSED 状态下请求(或释放)pad 时,需要采取额外的注意事项(pad 阻塞),本教程中未描述这些。不过,在 NULLREADY 状态下请求(或释放)pad 是线程安全的。

函数与知识点

  1. AudioTestSrc 属性:可以用来生成基本的音频信号。它支持几种不同的波形,并允许设置基本频率和音量。一些波形可能使用额外的属性。

  2. Wavescope 属性:是一个简单的音频可视化元素。它以示波器的方式渲染波形。

  3. 转换元素(audioconvertaudioresamplevideoconvert)是为了确保管道可以链接起来。事实上,音频和视频输出的Capabilities取决于硬件,在设计时您不知道它们是否与audiotestsrcwavescope产生的Caps匹配。然而,如果Caps匹配,这些元素将处于"直通模式",不会修改信号,对性能几乎没有影响。

  4. freq 介绍:audiotestsrc的属性之一。

    功能:“freq”属性控制波的频率(215Hz可以使波在窗口中几乎静止)。
    注意:此样式和visualshader属性用于使wavescope波连续显示。

  5. gst_element_link_many() 警告:实际上可以链接具有请求pad的元素。它在内部请求了pad,因此不必担心链接的元素是具有Always pads还是Request pads这是不方便的,可能听起来很奇怪,因为您仍然需要在之后释放申请的pads,并且如果pad是通过gst_element_link_many()自动请求的,很容易忘记。

  6. GstPad *gst_element_request_pad_simple (GstElement * element, const gchar * name) 功能:按名称(例如“src_%d”)从元素中检索一个pad。此版本仅检索Request padspad应该使用gst_element_release_request_pad()释放。

    说明:如果pad需要具有特定的名称(例如,名称是“src_1”而不是“src_%u”),则该方法比手动获取pad模板并调用gst_element_request_pad()慢。

  7. GstPad *gst_element_get_static_pad (GstElement * element, const gchar * name) 功能:按名称从元素中检索pad。此版本仅检索已经存在的(即“静态”)pads

  8. GstPadLinkReturn gst_pad_link (GstPad * srcpad, GstPad * sinkpad) 功能:链接source padsink pad

    说明:gst_element_get_static_pad()内部使用了gst_element_link()gst_element_link_many()

cleanup

  1. gst_element_release_request_pad() 解除函数与知识点6的引用。
  2. gst_object_unref() 解除tee的引用。

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

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

相关文章

MongoDB的分布式ID

MongoDB ObjectID是MongoDB数据库中的一种数据类型,用于表示一个文档(document)在集合(collection)中的唯一标识符。每个ObjectID值是一个12字节的字符串,其中前四个字节表示时间戳,后三个字节表…

win10 开机自动启动pyqt做的exe文件,显示后端请求的信息做提醒

1 py 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel from PyQt5.QtCore import QTimer import osclass ReminderWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle(Reminder)self.setGeometry(100, 100, 300, 200)sel…

为什么项目可见性难以实现?该如何提高?

在项目和专业服务管理中,失败有时难以避免。沟通不足和需求定义不明确被认为是造成失败的最大原因,这意味着项目可见性和信息流动至关重要。 什么是项目可见性? 项目可见性是组织项目相关信息的方式,以便所有团队成员、项目经理…

【机器学习】KNN 算法介绍

KNN(K-Nearest Neighbors)算法是一种基本的机器学习算法,用于分类和回归问题。该算法根据样本之间的距离度量,在训练数据集中找到与待分类样本最近邻的K个样本,并基于这K个样本进行分类或回归。 KNN算法的核心思想是“…

spring-cloud-gateway版本和springboot版本不匹配

在搭建gateway服务的时候,启动出现以下问题: Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.cloud.gateway.config.GatewayAutoConfiguration$Netty…

LeetCode 75 第五题(345)反转字符串中的元音字母

题目: 示例: 分析: 给一个字符串,将里面的元音字母反转,并且保持非元音字母不变(包括顺序). 字符串反转类型的题,我们都可以使用双指针来解决:定义首尾指针,分别向中间靠拢,直到首尾指针都指向了元音字母,然后交换首尾指针所指的字母,如此不会影响到非元音字母,同时也将元音字…

2023“钉耙编程”中国大学生算法设计超级联赛(1)Hide-And-Seek Game

2023“钉耙编程”中国大学生算法设计超级联赛(1)Hide-And-Seek Game 题目大意 有一棵有 n n n个节点的树,小 S S S和小 R R R在树上各有一条链。小 S S S的链的起点为 S a S_a Sa​,终点为 T a T_a Ta​;小 R R R的链…

pytest实现用例间参数传递的方式

pytest实现用例间参数传递的方式 一、通过conftest创建全局变量二、使用tmpdir_factory方法 我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B的某个字段的入参。如果是使用postman,那我们可…

CSS:给子元素设置了浮动,页面缩放的时候,子元素往下掉

前言 给子元素设置了浮动&#xff0c;页面缩放的时候&#xff0c;子元素往下掉 html代码&#xff1a; <div class"father"><div class"child1"></div><div class"child2"></div> </div>css代码 .child1…

Spring Batch之读数据库——JdbcCursorItemReader之使用框架提供的BeanPropertyRowMapper(三十六)

一、BeanPropertyRowMapper介绍 参考我的另一篇博客&#xff1a; Spring Batch之读数据库——JdbcCursorItemReader&#xff08;三十五&#xff09;_人……杰的博客-CSDN博客 二、项目实例 1.项目框架 2.代码实现 BatchMain.java: package com.xj.demo27;import org.spri…

中金:龙湖基本面稳健,股价超跌具备配置价值

恒大2.4万亿元的天量债务爆出后&#xff0c;让本就信心不足的房地产行业&#xff0c;越发雪上加霜&#xff0c;房企股价遭遇集体下挫&#xff0c;业内公认的万科、龙湖、保利、中海等“优等生”也不免被波及。多家证券机构提醒&#xff0c;行业预期降至冰点的情况下&#xff0c…

oc基本控件2

// // ViewController.m // OcDemoTest // // Created by Mac on 2023/7/14. //#import "ViewController.h"interface ViewController () // label property (weak, nonatomic) IBOutlet UIImageView *imageView; // Use of undeclared identifier // 全局propert…

CentOS 7.9 使用rpm包安装MySQL-5.7.43

参考&#xff1a;refman-5.7.pdf: 2.5.5 Installing MySQL on Linux Using RPM Packages from Oracle 【前期准备】 1.防火墙端口检查与设置 检查防火墙状态&#xff1a;systemctl status firewalld 启动防火墙&#xff1a;systemctl start firewalld 关闭防火墙&#xff1a…

6. Docker之使用第三方镜像

第三方镜像是在Docker Hub或其他容器注册表上提供的预构建Docker容器镜像。这些镜像由个人或组织创建和维护&#xff0c;可以作为您容器化应用程序的起点。 查找第三方镜像 Docker Hub 是最大和最受欢迎的容器镜像注册表&#xff0c;包含官方和社区维护的镜像。您可以根据名称…

创建型模式

创建型模式&#xff08;Creational Pattern&#xff09;关注对象的创建过程&#xff0c;是一类最常用的设计模式&#xff0c;在软件开发中应用非常广泛。创建型模式将对象的创建和使用分离&#xff0c;在使用对象时无须关心对象的创建细节&#xff0c;从而降低系统的耦合度&…

学堂在线数据结构(上)(2023春)邓俊辉 课后题

The reverse number of a sequence is defined as the total number of reversed pairs in the sequence, and the total number of element comparisons performed by the insertion sort in the list of size n is: 一个序列的逆序数定义为该序列中的逆序对总数&#xff0c;…

pandas 笔记:pivot_table 数据透视表\pivot

1 基本使用方法 pandas.pivot_table(data, valuesNone, indexNone, columnsNone, aggfuncmean, fill_valueNone, marginsFalse, dropnaTrue, margins_nameAll, observedFalse, sortTrue)2 主要参数 dataDataFramevalues要进行聚合的列index在数据透视表索引&#xff08;index…

瞧瞧别人家的API接口,那叫一个优雅

前言 在实际工作中&#xff0c;我们需要经常跟第三方平台打交道&#xff0c;可能会对接第三方平台API接口&#xff0c;或者提供API接口给第三方平台调用。 那么问题来了&#xff0c;如果设计一个优雅的API接口&#xff0c;能够满足&#xff1a;安全性、可重复调用、稳定性、好…

自动驾驶代客泊车AVP摄像头与ECU交互需求规范

目录 1 文档范围及控制方法... 5 1.1 目的.... 5 1.2 文档授权... 5 1.3 文档变更管理... 5 1.4 缩写.... 5 1.5 术语.... 5 2 系统组成... 6 2.1 系统框图... 6 2.2 电源供应和时序要求... 7 2.2.1 摄像头供电控制... 7 2.2.2 摄像头上电时序要求…

【产品经理】TO B市场分析

市场分析是一个独立而又宏大的学科领域&#xff0c;并且具体使用中&#xff0c;目标和个体不同&#xff0c;分析的方式方法也不同。TO B产品的市场分析是对市场环境、市场规模、性质、特征、竞品进行分析&#xff0c;从而寻找和研究潜在需求的市场机会&#xff0c;帮助产品经理…