首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放队列接口 | 回调函数 | 开始播放 | 激活回调 )

    : 创建输出混音器对象 , 实现输出混音器 ; // 创建输出混音器对象 , 可以指定一个混响效果参数 ( 该混淆参数可选 ) const SLInterfaceID ids_engine[1] = loc_outmix 输出 , 实际上是通过 outputMixObject 混音器对象输出的 SLDataSink audioSnk = {&loc_outmix, NULL}; ⑥ 创建并实现播放器 : 先使用 引擎 , 音源输入 , 音频输出 , 采样率 , 接口队列ID 等参数创建播放器 , 再实现播放器对象 ; // 操作队列接口 , 如果需要 特效接口 , 添加 SL_IID_EFFECTSEND 设置输出混音器 // 输出声音 , 添加各种音效 ( 混响 , 重低音 , 环绕音 , 均衡器 等 ) , 都要通过混音器实现 ; // 创建输出混音器对象 , 可以指定一个混响效果参数 loc_outmix 输出 , 实际上是通过 outputMixObject 混音器对象输出的 SLDataSink audioSnk = {&loc_outmix, NULL};

    2K20编辑于 2023-03-27
  • 来自专栏防止网络攻击

    输出4种波形的函数信号发生器

    一、设计要求 1、以MCS-51系列单片机为控制器件,用C语言进行程序开发,结合外围电子电路,设计一款函数信号发生器系统; 2、 能够产生正弦波、方波、三角波和锯齿波4种波形; 3、扩展键盘输入电路,用于切换波形类型 工作原理为:单片机产生的数字信号,经DAC0832转换为模拟信号,再通过LM358运算电路放大后,输出4种频率可调的波形。 波形的类型和频率值由LCD液晶显示,波形的切换和频率的调节由按键控制。 Proteus仿真电路 Altium原理图 仿真结果分析 打开函数信号发生器仿真文件,双击单片机加载Signal.hex文件(位于C程序文件夹内),运行仿真,结果如下。 本系统中,信号输出端接示波器的A通道。 仿真运行时,如果不小心关闭示波器窗口或者未弹出示波器窗口,鼠标右击示波器,在下拉菜单中点击Digtal Oscilloscope即可恢复。 下面,我们设置系统输出频率为50Hz的三角波和80Hz的方波,结果如下。 综上所述,函数信号发生器仿真电路运行效果满足设计要求,验证成功。

    50310编辑于 2024-05-14
  • 来自专栏AIoT技术交流、分享

    为什么SPI信号输出端加22Ω或33Ω电阻?

    1 反射与源端匹配的原理 在高速数字信号传输中,当信号的驱动端(如单片机或FPGA)输出到负载端(如传感器)时,会经过PCB上的传输线。 如果传输线的特性阻抗 Z0与驱动源的输出阻抗 Zd不匹配,会引发信号的反射。 反射会导致信号波形的失真,造成振铃、过冲等问题,特别是在信号上升沿和下降沿处显著。 源端匹配就是通过在驱动端串联一个电阻 R,使得信号源的输出阻抗加上串联电阻达到与传输线阻抗 Z0 匹配,以减少反射。 因此,通过在源端串接电阻 R=Z0−Zd,可以优化阻抗匹配,从而有效抑制反射。 电阻匹配的方法不仅简化了设计,也在信号完整性与实际操作成本之间提供了合理的平衡。 3 为什么选择22Ω或33Ω? 实际操作中,数字器件的输出阻抗 Zd往往并不理想,且存在较大的差异性。 例如,甚至同一型号的芯片,其输出阻抗在不同的工作条件下也会有所不同。

    1.1K10编辑于 2024-12-31
  • 来自专栏AIoT技术交流、分享

    为什么SPI信号输出端加22Ω或33Ω电阻?

    1、反射与源端匹配的原理 在高速数字信号传输中,当信号的驱动端(如单片机或FPGA)输出到负载端(如传感器)时,会经过PCB上的传输线。 如果传输线的特性阻抗 Z0与驱动源的输出阻抗 Zd不匹配,会引发信号的反射。 反射会导致信号波形的失真,造成振铃、过冲等问题,特别是在信号上升沿和下降沿处显著。 源端匹配就是通过在驱动端串联一个电阻 R,使得信号源的输出阻抗加上串联电阻达到与传输线阻抗 Z0 匹配,以减少反射。 因此,通过在源端串接电阻 R=Z0−Zd,可以优化阻抗匹配,从而有效抑制反射。 电阻匹配的方法不仅简化了设计,也在信号完整性与实际操作成本之间提供了合理的平衡。 3、为什么选择22Ω或33Ω? 实际操作中,数字器件的输出阻抗 Zd往往并不理想,且存在较大的差异性。 例如,甚至同一型号的芯片,其输出阻抗在不同的工作条件下也会有所不同。

    2.5K10编辑于 2024-12-05
  • 来自专栏云深之无迹

    FlySky - i6X 遥控器输出PPM信号

    全家福 输出IBUS的接收机,穿越机和空心杯刚刚好 引脚图 之前梁老哥给了个多协议的模型,需要输入ppm信号,我自己做了一个遥控器,但是太简陋了。然后正好i6-X可以直接输出这个信号。 但是注意,它不是单独的输出,是连接收机后的设置 我们需要的直接从遥控器本身引出来的信号 i6-X的背后有个教练孔,可以直接输出ppm的信号,下面的这个链接就是把多协议模块和遥控器做了绑定。 2993238-FlySky-FS-i6-Internal-Multiprotocol-Module 模块的样子 接线图,不要怕,就是引了一个PPM输出而已 再这里(我机器拆了) 链接图 将 我不建议这种设置,因为你会有更多的延迟(信号需要编码/解码两次......),但我建议啊~ 上面的模块是另一个遥控器的多协议模块,要是想真正的契合i6-x,那你看下面这个,本质上面都一样。 支持的玩具协议 样子 使用的NRF芯片 品牌名称:iRangeX 产品编号:iRX6 产品名称:多协议 TX 模块 信号频率:2400-2483.5Mhz 可控范围:≈100m 输入电压:3.7

    3.2K41发布于 2021-11-04
  • 来自专栏TSINGSEE青犀视频

    EasyNVR中HLS流无流输出且无法播放问题

    在我们最近对EasyNVR中HLS流播放的测试中,发现了不少关于HLS流无法播放的问题。造成问题的原因各式各样,目前我们也是在排查和修复当中,逐渐将新版EasyNVR完善优化。 有使用新版EasyNVR的用户反馈,在运行使用EasyNVR的时候会发现HLS的流无法播放问题,查看HLS播放流,发现无流输出。 image.png image.png 强制关掉nginx之后,再次启动服务发现HLS可以正常播放了。 使用前台exe进行启动,但是进行停止的时候直接点击关闭而不是crtl + c,所以导致老版本的EasyNVR路径和新版本的EasyNVR路径不一致,存放位置发生变化,HLS流无法进行生成ts文件,因此无法播放

    61920发布于 2021-10-15
  • 来自专栏EasyNVR

    EasyNVR中HLS流无流输出且无法播放问题

    在我们最近对EasyNVR中HLS流播放的测试中,发现了不少关于HLS流无法播放的问题。造成问题的原因各式各样,目前我们也是在排查和修复当中,逐渐将新版EasyNVR完善优化。 有使用新版EasyNVR的用户反馈,在运行使用EasyNVR的时候会发现HLS的流无法播放问题,查看HLS播放流,发现无流输出。 强制关掉nginx之后,再次启动服务发现HLS可以正常播放了。 使用前台exe进行启动,但是进行停止的时候直接点击关闭而不是crtl + c,所以导致老版本的EasyNVR路径和新版本的EasyNVR路径不一致,存放位置发生变化,HLS流无法进行生成ts文件,因此无法播放

    69930发布于 2021-10-21
  • 来自专栏狂码一生

    php输出字节流(本节以音频播放为例)

    /**      * 以文件流输出音频文件      * @author Sindsun      * @date 2018年10月27日22:32:17      * @param $filePath

    1.9K10发布于 2019-12-06
  • 来自专栏DotNet程序园

    张高兴的 .NET Core IoT 入门指南:(五)PWM 信号输出

    什么是 PWM 在解释 PWM 之前首先来了解一下电路中信号的概念,其中包括模拟信号和数字信号。模拟信号是一种连续的信号,与连续函数类似,在图形上表现为一条不间断的连续曲线。 数字信号为只能取有限个数值的信号,比如计算机中的高电平(1)和低电平(0)。 如图 1 所示,蓝色波形为调制的一系列脉冲,红色波形为模拟的正弦样信号。在模拟电路中,模拟信号的值可以连续进行变化,而数字电路是在高电平和低电平中取值,所以电压或电流会以脉冲的形式出现。 频率是 PWM 信号在 1 秒内完成一个周期的次数,单位是 Hz。如果输出的频率够高并保持一定的占空比,就可以模拟出恒定电压。 PwmChannel.Create(chip: 0, channel: 0, frequency: 400, dutyCycle: 0); 打开 PWM 通道 pwm.Start(); 设置占空比/频率改变输出

    1.2K10发布于 2019-10-28
  • 来自专栏HONEYWELL

    TRICONEX MP3009X 电路形式与输出的交流信号

    TRICONEX MP3009X 电路形式与输出的交流信号图片池型式上可分作衬底式与薄膜式,衬底式在材料上又可分单晶式、或相溶后冷却而成的多晶式衬底;薄膜式则可和建筑物有较佳的结合性,它具有曲度,有可挠

    43730编辑于 2023-04-27
  • 来自专栏张高兴的博客

    张高兴的 .NET Core IoT 入门指南:(五)PWM 信号输出

    什么是 PWM 在解释 PWM 之前首先来了解一下电路中信号的概念,其中包括模拟信号和数字信号。模拟信号是一种连续的信号,与连续函数类似,在图形上表现为一条不间断的连续曲线。 数字信号为只能取有限个数值的信号,比如计算机中的高电平(1)和低电平(0)。 如图 1 所示,蓝色波形为调制的一系列脉冲,红色波形为模拟的正弦样信号。在模拟电路中,模拟信号的值可以连续进行变化,而数字电路是在高电平和低电平中取值,所以电压或电流会以脉冲的形式出现。 频率是 PWM 信号在 1 秒内完成一个周期的次数,单位是 Hz。如果输出的频率够高并保持一定的占空比,就可以模拟出恒定电压。 PwmChannel.Create(chip: 0, channel: 0, frequency: 400, dutyCycle: 0); 打开 PWM 通道 pwm.Start(); 设置占空比/频率改变输出

    1.7K40发布于 2019-10-28
  • 来自专栏抠抠空间

    信号(Django信号、Flask信号、Scrapy信号

    通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者,这是特别有用的设计因为有些代码对某些事件是特别感兴趣的,比如删除动作。 下面,分别介绍一下三种信号的使用示例。 这个时候,就体现出信号的作用了。 一般可以监听这个信号,来记录网站异常信息。 7. appcontext_tearing_down:app上下文被销毁的信号。 Scrapy信号 Scrapy使用信号来通知事情发生。您可以在您的Scrapy项目中捕捉一些信号(使用 extension)来完成额外的工作或添加额外的功能,扩展Scrapy。 : engine_started scrapy.signals.engine_started() 当scrapy引擎启动爬取时发送该信号信号支持返回deferreds 当信号可能会在信号spider_opened

    1.8K40发布于 2018-07-04
  • 来自专栏Hello工控

    HTL: 如何选择合适的编码器输出信号

    我们在增量编码器选型的时候,关于HTL和TTL输出这两类信号如何进行判断呢? 当然,首先我们要先了解TTL和HTL的具体含义,然后对其进行对比,最后根据实际应用的经验做出合适的选择。 TTL 提供 RS422 输出信号电平,在激活(开启)时为+5VDC,与供电电压无关。换句话说,对于任何输入电压,输出将为 0 伏(低状态)或 5 伏(高状态)。 RS422 差分输出提供出色的抗噪声性能,可以使用长电缆长度,并且信号响应速度快。大多数编码器模型的供电电压为 4.5 – 5.5VDC,或 10 – 30VDC。 这个电路使用 Totem 配置中的两个晶体管来生成输出通道,确保信号为高电平或低电平。当电路激活(开启)时,输出电压等级等于供电电压。当电路不激活(关闭)时,信号被拉低至供电公共端。 这种输出类型用于当运动控制器、PLC 或其他接收设备需要 12V 或 24V 级别信号时。

    1K00编辑于 2025-12-20
  • 来自专栏c/c++&&linux

    【Linux】信号信号产生&&信号处理&&信号保存&&信号详解

    : 忽略此信号 执行该信号的默认处理动作 提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(Catch)一个信号 2.产生信号 2.1 通过终端按键产生信号 3.阻塞信号 3.1 信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending) 进程可以选择阻塞 (Block )某个信号 信号产生时,内核在进程控制块中设置该信号的未决标志,直到信号递达才清除该标志。 ,使其中所有信号的对应bit清零,表示该信号集不包含任何有效信号 函数sigfillset初始化set所指向的信号集,使其中所有信号的对应bit置位,表示该信号集的有效信号包括系统支持的所有信号 注意, 信号没有阻塞 4.捕捉信号 4.1 内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号 由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下

    1.3K10编辑于 2024-06-04
  • 来自专栏学习之路

    【Linux】:进程信号信号概念 & 信号处理 & 信号产生)

    温馨提示:信号信号量 二者之间没有任何关系 1, 信号概念 信号是 Linux 系统提供的一种向指定进程发送特定事件的方式,进程会对信号进行识别和处理。 信号的产生是异步的 即一个进程不知道自己何时会收到信号,在收到信号之前进程只能一直在处理自己的任务 使用 kill -l 指令查看信号() 每个信号都有⼀个编号和⼀个宏定义名称,这些宏定义可以在 signal.h 中找到 其中:1-30号信号为普通信号,31-64号信号为实时信号 具体的信号采取的动作和详细信息可查看:man 7 signal 分析: Action列即为信号的默认处理方式 Core、Term即为进程终止 收到什么信号,就把对应比特位上的数字变为1 发送信号:修改指定进程 pcb 中的信号的指定位图的比特位 3, 信号产生 键盘可以产生信号。 然后输出 gcount 的值,并重新设置一个定时器(alarm(1)),使得下一个 SIGALRM 信号在 1 秒后再次发送 // 如果我们把下面操作,信号 更换成 硬件中断,那么就是 OS 的操作原理

    1.2K10编辑于 2024-11-19
  • 来自专栏Lauren的FPGA

    如何理解HLS Block-level输入输出信号之间的时序关系

    在这个接口中,我们会看到ap_start、ap_idle、ap_ready和ap_done等信号(这些信号被称为Block-level输入/输出信号)。 其中ap_start是输入信号,而其余三个信号输出信号。那么我们如何根据这些信号管理输入数据呢?这就要理解这些信号之间的时序关系。为便于说明,我们以一个简单的算法为例。 如下图所示代码片段。 为了观察这些Block-level信号之间的时序关系,我们在仿真时将多次调用函数array_mult。 当第一帧计算完毕,输出对应的8个数据后,ap_done由低电平变为高电平并持续一个时钟周期,如图中标记C。当ap_done由高变低时,ap_idle则由低变高,表明可以再次启动该模块。 ap_idle影响,只有当ap_idle为高时,才可以启动ap_start,将其由低电平变为高电平; ap_ready为高电平时,表明已完成一帧的输入数据读取任务; ap_done为高电平时,表明已完成一帧的输出数据写入任务

    1.3K10编辑于 2022-12-21
  • 来自专栏学习之路

    【Linux】:进程信号信号保存 & 信号处理)

    信号其他相关的基本概念 实际执行信号的处理动作称为 信号递达(Delivery) 信号从产生到递达之间的状态,称为 信号未决(Pending) 进程可以选择 阻塞 (Block) 某个信号。 这个位图由32个比特位组成,分别代表32个不同的信号,如果对应的比特位为1,表示该信号已经产生但尚未处理) 信号阻塞:如果目标进程阻塞了某些信号,那么这些信号会保持在未决状态,直到进程解除对这些信号的阻塞 ,使其中所有信号的对应 bit 清零,表示该信号集不包含任何有效信号 函数 sigfillset 初始化 set 所指向的信号集,使其中所有信号的对应 bit 置位,表示 该信号集的有效信号包括系统支持的所有信号 它可以取以下几个值之一: SIG_BLOCK:将信号集 set 中的信号添加到当前信号屏蔽字中,阻止这些信号的传 SIG_UNBLOCK: 从当前信号屏蔽字中删除信号集 set 中的信号,允许这些信号的传递 ,修改如下: 运行如下: 我们发现:后续输出没有了,原因:由于 2 号信号的默认动作是终止进程,一旦解除屏蔽,处理 2 号信号执行默认动作,就把自己干掉了,因此还需要做修改 void non_handler

    2.3K10编辑于 2024-11-19
  • 来自专栏学习之路

    【Linux进程#4】:进程信号信号概念 & 信号处理 & 信号产生)

    1, 信号概念 信号是 Linux 系统提供的一种向指定进程发送特定事件的方式,进程会对信号进行识别和处理。 信号的产生是异步的 即一个进程不知道自己何时会收到信号,在收到信号之前进程只能一直在处理自己的任务 使用 kill -l 指令查看信号() 每个信号都有⼀个编号和⼀个宏定义名称,这些宏定义可以在 signal.h 中找到 其中:1-30号信号为普通信号,31-64号信号为实时信号 具体的信号采取的动作和详细信息可查看:man 7 signal 分析: Action列即为信号的默认处理方式 Core、Term即为进程终止 收到什么信号,就把对应比特位上的数字变为1 发送信号:修改指定进程 pcb 中的信号的指定位图的比特位 3, 信号产生 键盘可以产生信号。 然后输出 gcount 的值,并重新设置一个定时器(alarm(1)),使得下一个 SIGALRM 信号在 1 秒后再次发送 // 如果我们把下面操作,信号 更换成 硬件中断,那么就是 OS 的操作原理

    56410编辑于 2025-06-02
  • 来自专栏学习

    【Linux】进程信号——信号保存和信号捕捉

    信号保存 信号相关的概念 信号递达:指 操作系统 将一个信号(Signal)从内核传递到目标进程 的过程。它是 信号处理机制 中的关键步骤。 信号未决:信号从产生到递达之间的状态 信号阻塞 进程或线程可以暂时屏蔽某些信号,使它们在阻塞期间不会递达和处理。一旦解除阻塞,信号会被递达并处理。 被阻塞的信号将保持未决状态,直到进程解除对此信号的阻塞,才能执行递达的动作。 注意:阻塞信号和忽略信号不同,阻塞信号表示信号没有递达,但是忽略信号表示信号已经抵达了,但是我们的处理方式是忽略处理。 信号的增删查改 上面五个函数是增删查改,第一个函数是将一个信号集置为零,第二个函数是将信号集全部设置为1,第三个函数是添加新的信号信号集当中,第四个函数表示在信号集中删除指定信号,第五个函数是在指定信号集中查找指定信号 查看pending表 这个函数很简单,参数是输出参数,可以将当前进程的pending表输出出来,但是为什么没有设置pending表的呢?

    1.6K10编辑于 2025-03-05
  • 来自专栏C++系列

    【Linux】使用<信号量>实现<线程互斥>——(解析:用信号量实现两个线程互斥输出1-10数字)

    记录型信号量: 除了包含一个整数值(表示可用资源的数量)外,还包含一个进程等待队列,用于存储阻塞在该信号量的各个进程的标识。 二进制信号量: 只允许信号量取0或1值。 如果信号量的值大于0,表示有资源可用,进程或线程可以获取信号量并访问资源,同时信号量的值会减1。 如果信号量的值大于0,则获取成功,信号量的值减1; 如果信号量的值为0,则进程或线程进入阻塞状态 ,等待其他进程或线程释放信号量。 3.信号量的基本函数【创建&销毁&等待(P操作)& 释放(V操作)】 semm_init(信号量.0,设置的信号量的初值);//创建信号量 sem_destroy(信号量);//销毁毁信号量 sem_wait (信号量);//等待P 操作 sem_pos(信号量)://释放V 操作 二.信号量实现线程互斥(用信号量实现两个线程互斥输出1-10数字) 要求:用信号量实现两个线程互斥输出1-10数字 解析

    52510编辑于 2024-10-26
领券