以下是 DPS SDK 中可用的功能。 它们在 DPS.h 头文件中被引用,并且在所有平台上都尽可能常见:
int DPSInitialize(environment, context, string license_file);
这将"唤醒"算法并初始化所有表、变量等。启动时调用一次。这将返回许可值之一。 您必须收到 AUTH_SUCCESS(整数值 0),DPS 处理才能不受限制地工作。 如果返回任何其他值,DPS 将进入演示模式。 其他值在 DPS.h 文件中定义。
int DPSGetDPSEnabled();
获取 DPS 处理的状态。 如果为 1,则启用 DPS。 如果为 0,则绕过 DPS。
void DPSSetDPSEnabled(int enabled);
启用或绕过 DPS 处理。 使用启用的 = 1打开 DPS。 使用启用的 = 0关闭 DPS 处理。 DPS HEAR 和用户音量控制(见下文)在关闭 DPS 后保持不变。
int DPSLoadPreset(char *fname);
"预设"是指DPS 配置文件。 它包含使 DPS 算法与特定播放设备一致的设置。 例如,这可能是 Bose 耳机、Klipsch 扬声器或许多设备通用的"城市"配置文件。
DPS 库现在对所有参数使用 .bgvx 格式。 .bgva 和 .bswt 格式已被取消。
此函数返回 0 = 成功,1 = 文件不存在,2 = 无效预设
int DPSLoadPresetBuf(char *c, int length);
此函数用于从内存加载配置文件。
返回 0 = 成功,1 = 文件不存在,2 = 无效预设
请注意,预设/配置文件的大小通常约为 4kB。
void DPSFlattenAll(void);
这将将所有 DPS 参数设置为平面状态。 DPS 算法仍在运行,但对音频没有影响。 这将保持音频延迟(由算法引起的总延迟)。
void DPSProcessBuffer(short *buffer, int numOfFrames, numberOfChannels);
这就是我们将音频传递到 DPS 算法进行处理的方式。 此函数返回应用了 DPS 处理的缓冲区。
numOfFrame = 立体声样本的数量。 允许的最大值为 2048。
目前,DPS 算法仅支持立体声音频。 多渠道支持即将推出。
DPS 均衡器是 DPS 处理后发生的控制质量参数均衡器。 此 EQ 可以简化为基本高音/低音音控制,或为用户提供高级控件。
i = 0 表示低频带,i = 1 表示高频段。
最新版本的核心 API 现在可以获取用户 EQ 的参数:
int DPSGetUserEqEnabled(int band); // 1 enabled, 0 bypass void DPSSetUserEqEnabled(int band, int enabled); // enabled = 1 enable user eq, enabled = 0 bypass user eq int DPSGetUserEqFreq(int band); float DPSGetUserEqQfactor(int band); float DPSGetUserEqGain(int band); float DPSGetUserEqGain_dB(int band); void DPSSetUserEqFreq(int band, int frequency); void DPSSetUserEqQfactor(int band, float Q); void DPSSetUserEqGain(int band, float magnitude); void DPSSetUserEqGain_dB(int band, float dB);
对于低音音控制,我们建议频率值为 160Hz,Q 值为 0.7。
对于高音控制,我们建议频率值为 5000Hz,Q 值为 0.7。
旧格式使用索引来设置/获取 EQ 值:
void FcKnobMoved(int i, int Fc); //i = 0 for low band, 1 for high band void QKnobMoved(int i, int Q); //i = 0 for low band, 1 for high band void GKnobMoved(int i, int gain); //i = 0 for low band, 1 for high band int GetFcKnob(int i); //i = 0 for low band, 1 for high band int GetQKnob(int i); //i = 0 for low band, 1 for high band int GetGKnob(int i); //i = 0 for low band, 1 for high band
下面的整数值表示均衡器滑块的建议范围:
低频段:
增益从 4 到 32。 24 = 0dB = 增益没有变化。
频率中心 (FC) 从 0 到 29
Q(宽度值):从 0 到 15
对于低音音控制,我们建议频率值为 15 (160Hz),Q 值为 3 (0.7)。
高频段:
增益:从4到32。 24 = 0dB = 增益没有变化。
FC: 从 30 到 57
问:从 0 到 15
对于高音控制,我们建议频率值为 45 (5000Hz),Q 值为 3 (0.7)。
上面的整数值表示以下数组中的索引:
//public final static double[] GainArray = {0.251189, 0.266073, 0.281838, 0.298538, 0.316228, 0.334965, 0.354813, 0.375837, 0.398107, 0.421697, 0.446684, 0.473151, 0.501187, 0.530884, 0.562341, 0.595662, 0.630957, 0.668344, 0.707946, 0.749894, 0.794328, 0.841395, 0.891251, 0.944061, 1.000000, 1.059254, 1.122018, 1.188502, 1.258925, 1.333521, 1.412538, 1.496236, 1.584893, 1.678804, 1.778279, 1.883649, 1.995262, 2.113489, 2.238721, 2.371374, 2.511886, 2.660725, 2.818383, 2.985383, 3.162278, 3.349654, 3.548134, 3.758374, 3.981072, 4.216965, 4.466836, 4.731513, 5.011872, 5.308845, 5.623413, 5.956622, 6.309574, 6.683439, 7.079458, 7.498942, 7.943282};
使用(10_Math.log10(Math.pow(值,2))计算分贝值。
//public final static double[] FcArray = {28.0, 31.0, 35.0, 40.0, 45.0, 50.0, 56.0, 63.0, 70.0, 80.0, 90.0, 100.0, 112.0, 125.0, 141.0, 160.0, 180.0, 200.0, 225.0, 250.0, 280.0, 315.0, 350.0, 400.0, 450.0, 500.0, 560.0, 630.0, 700.0, 800.0, 900.0, 1000.0, 1120.0, 1250.0, 1400.0, 1600.0, 1800.0, 2000.0, 2250.0, 2500.0, 2800.0, 3150.0, 3500.0, 4000.0, 4500.0, 5000.0, 5600.0, 6300.0, 7000.0, 8000.0, 9000.0, 10000.0, 11200.0, 12500.0, 14100.0, 16000.0, 18000.0, 20000.0}; //value in HZ
//public final static double[] QArray = {0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 2.0, 2.5, 3.0, 4.0, 5.0, 6.5, 8.0}; //Q value
(立体声宽德纳) - 这种独特的算法提供更宽,更身临其境的立体声场,而不牺牲录音的原始声音。 这仅适用于扬声器系统(不是耳机)。
int DPSGetStereoWidenEnabled()
• 获取立体声宽幅处理器处理 0 = 关闭的状态。 1 = 打开。
void DPSSetStereoWidenEnabled(int enabled)
• 打开或关闭立体声宽幅器。 0 = 关闭。 1 = 打开。
int DPSLoadStereoWidenProfile(char *fname)
• 加载bswt立体声宽幅轮廓。 0 = 成功,1 = 文件不存在,2 = 无效预设
int DPSLoadStereoWidenProfileBuf(char *c, int length)
• 从内存加载 bswt 配置文件。0 = 成功,1 = 文件不存在,2 = 无效预设,//注意配置文件的大小通常约为 0.5kB
int DPSGetStereoWidenGain()
|获取立体声加宽控制的位置。 使用与设置/获取 GKnob 相同的增益数组
void DPSSetStereoWidenGain(int gain)
|这是用户对立体声加宽效果的控制。 使用索引范围为 24 到 48 的用户EQ的 GainArray。
此功能为耳机提供虚拟环绕声体验。 立体声内容映射到各种常用用例的预选 HRTF 参数。 自 DPS 核心版本 2.2.0 起,这些预设通过 bgvx 配置文件加载(推荐)。
void DPSGet/SetHeadphonesEnabled()
• 打开或关闭耳机效果。
int DPSGet/SetHeadphonesMode(int mode)
• 从七个预设中选择一个:
int int DPSGet/SetHeadphonesDelaySamples(int delay)
• 这会影响耳机算法的立体声效果。 默认值为 4 个示例最适合大多数应用程序。 允许的范围是 3 到 13 个样本。 自 DPS 核心 2.2.0 起,此功能已弃用。
注: 此算法的效果在主 DPS 函数之前应用。
void DPS_PitchShifter_SetBypass(int bypass); int DPS_PitchShifter_GetBypass();
• 启用或绕过螺距换档器
void DPS_PitchShifter_SetShift(float percent); //allowable range [.25,2.0]
• 这设置百分比格式间距
void DPS_PitchShifter_SetShift_Semitones(float semitones); //allowable range [-24,+12]
-这设置半色调格式间距
float DPS_PitchShifter_GetShift(); float DPS_PitchShifter_GetShift_Semitones();
-这得到当前间距百分比或半色调格式
void DPS_PitchShifter_SetQuality(int quality); //0, 1, or 2 allowed int DPS_PitchShifter_GetQuality();
-设置或获取螺距换档器的质量。 0 = 质量低,虽然它相当不错。 1 和 2 是不同类型的源音频的更高质量。
void DPSSetUserGain(float gain)
此函数通过单个精度浮点参数缩放音频的输出音量。 使用 (10_Math.log10(Math.pow(值,2))计算分贝值。 通过传递浮点以缩放音频,您可以创建自己的音量曲线,以适应您的应用程序。
例如,用户低音/Treble 函数中使用的GainArray以 0.5dB 的增量创建一系列分贝值。 但是,适当的用户音量控制应替换设备的主音量控制。 这意味着音量控制的范围应为 -无穷大(静音)到 0dB。 虽然您可以将卷缩放到 0dB 以上,但不建议这样做,因为大多数配置文件都会产生失真。
float DPSGetUserGain()
返回当前用户卷设置。
DPS HEAR(以前称为儿童安全)对 Bongiovi DPS 处理,为耳机提供清晰、清晰的音频,同时保持健康的收听音量。 单击此处了解详细信息。
int DPSGetKidSafe();
获取 DPS HEAR 的状态。1 = 开,0 = 关闭。
void DPSSetKidSafe(int enabled);
使用启用的 = 1 打开 DPS HEAR。 使用启用的 = 0 关闭 DPS HEAR。