实用功能
平台启动
首先调用它来初始化平台上的 DPS 音频处理模块。
许可证
DPS 始终初始化为演示模式。 在演示模式下,音频会定期静音。 许可证功能用于输入许可证文件和应用程序 ID 字符串(由Bongiovi 提供),以禁用演示模式。 每个使用 DPS 库的新进程都需要这样做一次。 当 license 函数返回 true 时,(当前进程中的)所有 DPS 实例都将退出演示模式。
许可证认证的返回值 | |
#define AUTH_SUCCESS 0 | |
#define AUTH_ERR_INVALID_FILE_FORMAT 1 | |
#define AUTH_ERR_LICENSE_HASH_INVALID 2 | |
#define AUTH_ERR_JAVA_PACKAGE_INVALID 3 | |
#define AUTH_ERR_RSA_DATA_INVALID 4 | |
#define AUTH_ERR_AES_DATA_INVALID 5 | |
#define AUTH_ERR_FILE_NOT_FOUND 6 | |
#define AUTH_ERR_INVALID_ARGS 7 | |
#define AUTH_ERR_INVALID_MODEL 8 | |
#define AUTH_ERR_INVALID_MANUFACTURER 9 | |
#define AUTH_ERR_BUNDLE_ID_INVALID 10 | |
#define AUTH_ERR_APP_ID_INVALID 11 | |
#define AUTH_ERR_LICENSE_EXPIRED 12 |
setLicenseKey
这种方法适用于某些嵌入式系统。 更多信息,请联系Bongiovi 代表。
获取许可证状态
返回许可证状态。 用于验证平台是否获得许可,音频是否会周期性静音(演示模式)。
setInstanceId
这就为当前的实例分配了一个虚拟的ID号,这样它就可以在以后被引用。 由于代码的C语言基础,有固定数量的实例 "槽 "可用。 创建一个新的实例将使用其中的一个槽。 销毁一个实例会释放这个槽。 虚拟实例ID在创建和销毁具有已知目的的流/实例时非常有用。
例如,一个智能音箱(使用GStreamer框架)可能需要单独的实例来处理蓝牙音频、FFmpeg音频和语音合成。 语音合成和音乐播放的音频处理必须是不同的。 当一个新的语音合成流被创建时,它应该被分配到实例ID 0。 当一个蓝牙流被创建时,它被分配ID 1,以此类推。 这允许音频控制和其他进程访问正确的DPS实例,以改变音量,改变音频配置文件,或使流静音。
DpsProcess
在给定的采样缓冲区上执行音频处理。
- DPS处理的所有实例只能是单声道或立体声。 当选择通道的数量时,只有1或2是有效的。 如果你必须处理更多的通道,请创建更多的实例。
- 可以选择从单声道或立体声源中生成一个重低音通道。 这个功能的参数是在 Profile Creator工具中设置的。
- 点击这里了解更多关于软件音频处理概念的信息。
start/stopListener
在给定的端口上启动一个套接字服务器。 这允许通过DPS通信API对音频处理进行远程控制。 对套接字的完全控制在Profile Creator中被支持。
mute/unmute
将指定实例静音或取消静音。 静音时音频会淡出,取消静音时音频会淡入。
getVersion
获取当前DPs核心代码的版本号。
ParseByte
为DPS通信API解析一个字节。 这个函数处理所有来自外部进程的与SDK的通信。 更多细节见预设管理。
setCommCallback
设置DPS通信回调的指针。
get/setEnabled
为给定的实例启用或停用音频处理。 为了防止音频中出现爆音,当前流被淡出,音频被静音,同时处理状态被改变,然后音频被淡入。 整个过程大约需要200毫秒。
get/setSampleRate
设置音频流的采样率。 采样率参数用于计算算法中的滤波器和非线性时间相关系数。 改变采样率将触发对所有系数的重新计算。 注意:这个功能不会将音频重新取样到所需的采样率。
get/setAutomuteEnabled
"自动静音 "可防止在更改配置文件/预置时出现音频爆音。 启用 "自动静音 "后,当收到更改预置的命令时,音频流将淡出,参数将更改,然后音频将淡入。 这一过程将耗时约 200 毫秒,具体时间取决于平台。 禁用自动静音后,参数更改将在下一音频处理帧开始时进行。
预置/配置文件加载
loadEmbeddedProfile
所有的动态DPS库或使用静态DPS库的应用程序必须包括ProDef.c。这个文件包含了20个配置文件(DPS算法参数集),可以在任何时候加载到任何实例。 当一个新的实例被创建时,配置文件0被默认加载。 在无法访问BGPS文件的情况下,使用loadEmbeddedProfile函数来访问ProDef.c中的配置文件。
loadProfileFromFile
加载包含在BGPS文件中的20个配置文件之一。 BGPS文件中的配置文件是在配置文件创建者的预设管理器功能中设置的。
loadProfileFromBuffer
如果一个BGPS文件不能通过文件系统访问,BGPS二进制数据可以被加载到内存中,并通过该功能进行访问。
用户控制
所有的DPS增益函数都采取标量值。
在此了解更多关于将分贝转换为标量值的信息
get/setUserGain
控制每个实例的面向用户的音量控制。 这个重要的功能可以被配置为用于保护扬声器的前AGC(INPUT)操作或用于耳机的后AGC(OUTPUT)操作。 这个音量控制是平滑的,以防止在实时操作中出现噪音。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | -60dB | 0.001 |
最大 | 0dB | 1.0 |
设置MasterVolume
设置所有实例的UserGain。 这对于必须同时调整所有实例的多通道应用很有用。 这将覆盖为单个实例设置的UserGain值。
get/setToneBassGain
这是一个特殊的音频音调控制功能,通过调整多频段AGC的频段1(最低频率)的输出来工作。 通常情况下,这具有低架滤波器的效果,设置为最低的多频段AGC分频器频率。
范围 | 分贝 | 扇形浮点 |
闵行区 | -10dB | 0.31622776601683794 |
中性 | 0dB | 1.0 |
最大 | +10dB | 3.1622776601683795 |
get/setToneTrebleGain
这是一个特殊的音频音调控制功能,通过调整多频段AGC的最高启用频段的输出来工作。 通常情况下,这具有高架滤波器的效果,设置为最高的多频段AGC分频器频率。
范围 | 分贝 | 扇形浮点 |
闵行区 | -10dB | 0.31622776601683794 |
中性 | 0dB | 1.0 |
最大 | +10dB | 3.1622776601683795 |
关于低音和高音音调控制的说明
多频段AGC允许为每个频段选择不同的非线性算法。 为了说明这一点,音调控制将为最高和最低频段选择的每个算法选项设置相对输出增益值(以分贝为单位)。 这假定创建配置文件时有一个 "平坦 "的频率响应。 例如,如果最高频段被设置为压缩器模式,输出增益被设置为-3dB,那么高音控制的有效范围将如下。
范围 | 音调API | 带状输出增益(-3dB |
闵行区 | -10dB | -13dB |
中性 | 0dB | -3dB |
最大 | +10dB | 7分贝 |
这种方法使音调控制能够适用于任何2+频段的多频段AGC配置。
get/setUserBass/Treble/Gain/Q/Freq
调整2个面向用户的EQ喇叭口滤波器。 标准参数。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | -10dB | 0.31622776601683794 |
无影响 | 0dB | 1.0 |
最大 | +10dB | 3.1622776601683795 |
低音频率范围 | 赫兹 | 注意事项 |
闵行区 | 50 | 最低的可用频率 |
正常 | 150 | 良好的默认 |
最大 | 500 | 最高的可使用频率 |
高音频率范围 | 赫兹 | 注意事项 |
闵行区 | 500 | 最低的可用频率 |
正常 | 5000 | 良好的默认 |
最大 | 10000 | 最高的可使用频率 |
Q值范围 | Q 值 | 注意事项 |
闵行区 | 0.4 | 宽大的钟声 |
正常 | 1.0 | 标准铃声 |
最大 | 3.0 | 狭长的钟声 |
在大多数情况下,高音和低音控制是以静态预设的Q值和频率值呈现的。 用户只能对增益值进行控制。 一定要使用setUserBass/TrebleEnabled来听效果。
get/setSensitivity
灵敏度是一个面向用户的功能,用于调整应用于信号的整体动态范围控制量。 这个控制通过调整DPS算法的输入和输出增益来实现。 它假定Bongiovi AGC和Multiband AGC组件被设置为2:1的压缩比。 增加敏感度可以增加算法的输入增益,同时减少输出增益的1/2(以分贝为单位)输入增益的增加量。 其结果是安静的声音变得更响,而响亮的声音保持相同的音量。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | 0dB | 1.0 |
最大 | +10dB | 3.1622776601683795 |
注意:这是一个元控件,可同时调整输入和输出增益。 设置灵敏度后,可使用 getInputGain 和 getOutputGain 查看新值。 对输入和输出增益参数进行平滑处理,以实现实时调整。
get/setInputGain
设置算法的输入增益水平。 这在某些情况下可以作为音量控制使用。 然而,它通常是用于校准目的。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | -60dB | 0.001 |
正常 | 0dB | 1.0 |
最大 | +12dB | 3.9810717055349722 |
get/setOutputGain
设置最终限制器之前的算法的输出增益电平。 在某些情况下,这可以作为音量控制使用。 然而,它通常是用于校准目的。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | -60dB | 0.001 |
正常 | 0dB | 1.0 |
最大 | +12dB | 3.9810717055349722 |
get/setVSubEnabled
或
MultiBandVirtualBassSet/GetBypass
启用或禁用Virtual Subwoofer™ 算法。 这提供了面向用户的 "低音增强 "功能。
get/setNoiseGateEnabled
启用或停用噪声门。
get/setNoiseGateThreshold
设置噪声门阈值。 作为一个面向用户的功能,在减少麦克风信号的噪音时,这可以用来设置语音的水平。
增益范围 | 分贝 | 扇形浮点 | 注意事项 |
闵行区 | -99dB | 0.00001122018454301963 | 闸门将为所有信号打开 |
默认情况下 | -60dB | 0.001 | 闸门将为安静信号打开 |
最大 | 0dB | 1.0 | 闸门只对最大声的信号开放 |
10段参数均衡器
get/setEqEnabled
启用或停用给定的EQ频段。
获取/设置EqFreq
为给定的EQ波段设置中心频率。 作为一个参数式均衡器,所有的频段都可以设置为任何有效的频率。
频率范围 | 赫兹 | 注意事项 |
闵行区 | 20 | 最低的可用频率 |
最大 | 20000 | 最高的可使用频率 |
get/setEqQval
设置给定EQ频段的 "质量"(钟形滤波器的宽度)。 作为一个参数式均衡器,所有频段都可以设置为任何有效的Q值。
Q值范围 | Q | 注意事项 |
闵行区 | 0.1 | 尽可能广泛的钟声 |
最大 | 20 | 尽可能窄的钟声 |
注意:由于DPS EQ的特殊晶格滤波器设计,较高频率的Q值可能会导致比预期的喇叭口宽度宽。 虽然通常不需要,但本表描述了相对于标准双曲滤波器的差异。
获取/设置EqGain
设置给定EQ波段的增益值。 作为一个参数式均衡器,所有的频段都可以设置为任何有效的增益值。
增益范围 | 分贝 | 扇形浮点 |
闵行区 | -15dB | 0.17782794100389226 |
正常 | 0dB | 1.0 |
最大 | +15dB | 5.623413251903491 |
卡拉OK效果
get/setKaraokeEnabled
启用或停用混响和回声效果。
注意:当使用全局setEnabled函数时,混响和回声也会受到影响。
get/setKaraokeDryGain
设置原始信号的电平。
范围 | 分贝 | 扇形浮点 |
静音 | 丰富的经验 | 0.0 |
闵行区 | -40dB | 0.01 |
最大 | 0dB | 1.0 |
get/setKaraokeReverbGain
设置与原始信号混合的混响的电平。
范围 | 分贝 | 扇形浮点 |
静音 | 丰富的经验 | 0.0 |
闵行区 | -40dB | 0.01 |
最大 | 0dB | 1.0 |
get/setKaraokeEchoGain
设置重复回声效果的电平。
注意:回声使用反馈来产生重复的效果。 增加回声的增益将增加回声的重复次数。 在最大增益时,回声将无限期地重复。
范围 | 分贝 | 扇形浮点 |
静音 | 丰富的经验 | 0.0 |
闵行区 | -40dB | 0.01 |
最大 | 0dB | 1.0 |
loadKaraokePreset
选择一个预先配置好的效果预置(以0为基准索引)。
- 0 - 平滑的民谣
- 1 - 弹簧
- 2 - 小房间
- 3 - 回音板
- 4 - 机器人妈妈
- 5 - 史诗般的山洞
- 6 - 婴儿机器人
- 7 - 机器人爸爸
- 8 - 环境巴掌
- 9-黑暗的走廊
- 10 - 小庙
- 11 - 长回声
- 12 - 短暂的回声
- 13 - 中型回声
块状命令
每个算法都将其参数存储在C结构(块)中,定义在CommDefs.h中。
get/setAll (主块)
用来获取和设置给定实例的所有算法参数。 这对于在创建/销毁实例时保存/加载状态很有用。主块包括。
- 输入块(InputBlock)
- 输出块
- 用户块
- MetaBlock
- 袋子里的东西
- EQBlock
- 噪声关卡块
- 立体声威登堡(StereoWidenBlock
- 多频段模块(MultiBandBlock
- 输出压缩器Block
- 卡拉okBlock
- 屏蔽FbxBlock
- 移位块
- V3dBlock
获取/设置单个算法块
各个区块主要由Profile Creator工具和通信API使用,在产品开发过程中提供实时调整功能。
getMeters
获得一个显示在Profile Creator工具中的实时仪表数据的数组(以线性浮动音频电平表示)。 该数组定义如下。
- FpData输入[2]。
- L/R输入电平
- FpData输出[2]。
- L/R输出电平
- FpData virtualBassGr;
- 动态低音增强的程度
- FpData bagcOut[2]。
- Bongiovi AGC算法的L/R输出电平
- FpData bagcGr[2]。
- Bongiovi AGC的L/R增益降低水平。
- FpData userOut[2]。
- 用户控制算法块的L/R输出
- FpData specialOut[2]。
- 特殊效果块的L/R输出(EQ前)。
- FpData eqOut[2]。
- EQ的L/R输出电平
- FpData multiBandOut[2]。
- 多频AGC的L/R输出
- FpData multiBandBandGr[5]。
- 5个多频段AGC中每个频段的增益降低水平。
- FpData multiBandBandOut[5]。
- 5个多频段AGC的每个单声道(L/R相加)输出电平。
- FpData stereoWideGr;
- 动态立体声增强仪。
- FpData outputLimiterGr;
- 前瞻性输出限制器的增益减少。