- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我买了一台 Sony PHA-3 并尝试编写一个应用程序以 native 模式播放 DSD。 (我在 DoP 模式下成功了。)然而,当我将采样率设置为 2.8MHz 时,我发现 ASIOCallbacks::bufferSwitchTimeInfo 来得不是那么快。
请求2.8MHz采样需要将近8秒,本应在1秒内完成。
代码只是从 asiosdk 2.3 的主机示例修改而来,因此我将发布部分关键代码以帮助完成我的问题。
ASIO Start后,host sample会不断打印进度来指示时间信息,如下所示:
fprintf (stdout, "%d ms / %d ms / %d samples **%ds**", asioDriverInfo.sysRefTime,
(long)(asioDriverInfo.nanoSeconds / 1000000.0),
(long)asioDriverInfo.samples,
(long)(**asioDriverInfo.samples / asioDriverInfo.sampleRate**));
最后的表达式会告诉我已经过去了多少秒。 (asioDriverInfo.samples/asioDriverInfo.sampleRate)。
其中 asioDriverInfo.sampleRate 为 2822400 Hz。
并且 asioDriverInfo.samples 在 ASIOCallbacks::bufferSwitchTimeInfo 中分配,如下所示:
if (timeInfo->timeInfo.flags & kSamplePositionValid)
asioDriverInfo.samples = ASIO64toDouble(timeInfo->timeInfo.samplePosition);
else
asioDriverInfo.samples = 0;
这是样本的原始代码。
所以我可以很容易地发现时间流逝得非常慢。
我尝试将采样率提高到更高,比如 2.8MHz * 4,看到提前 1 秒的时间甚至更长。
我试图将采样率降低到 2.8MHz 以下,API 失败了。
我肯定已经根据sdk的指南设置了SampleFormat。
ASIOIoFormat aif; memset(&aif, 0, sizeof(aif));
aif.FormatType = kASIODSDFormat;
ASIOSampleRate finalSampleRate = 176400;
if(ASE_SUCCESS == ASIOFuture(kAsioSetIoFormat,&aif) ){
finalSampleRate = 2822400;
}
事实上,如果不将 SampleFormat 设置为 DSD,将采样率设置为 2.8MHz 将导致 API 失败。
最后,我记得所有的DAW(Cubase/Reaper,...)都有设置线程优先级的选项,所以我怀疑回调的线程不够高,也尝试提高它的线程优先级看看如果这可以帮助。但是,当我检查线程优先级时,它返回 THREAD_PRIORITY_TIME_CRITICAL。
static double processedSamples = 0;
if (processedSamples == 0)
{
HANDLE t = GetCurrentThread();
int p = GetThreadPriority(t); // I get THREAD_PRIORITY_TIME_CRITICAL here
SetThreadPriority(t, THREAD_PRIORITY_HIGHEST); // So the priority is no need to raise anymore....(SAD)
}
ThreadPriorityBoost 属性也是如此。它没有被禁用(已经增强)。
有人试过编写主机 asio 演示并帮助我解决这个问题吗?
非常感谢。
最佳答案
问题已解决。
我应该在 kAsioSetIoFormat 之后获取 BufferSize 和 createBuffers。
关于c++ - ASIOCallbacks::bufferSwitchTimeInfo 在 Sony PHA-3 上以 2.8MHz 采样率和 DSD 格式出现非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664425/
我正在尝试使用 ASIO SDK v2.3 创建 Windows 控制台 DSD 音频播放器。我在文档中使用了 hostsample 示例。到目前为止,我能够成功播放基于 PCM 的数据。不幸的是,当
当#-symbol 位于两个字符串之间时,正则表达式模式应该接受该字符串。假设 ex_date( ds23d#d4ff5 ) 应该接受字符串,但是,如果字符串是 ex_date( asa#ss32as
我有一个快速的问题。 我正在学习 SAS 并且遇到了 dsd=选项。 有谁知道这代表什么?它可能有助于内存/情境化。 谢谢。 最佳答案 而不仅仅是从互联网上复制和粘贴文本。我会试着解释得更清楚一点。像
我买了一台 Sony PHA-3 并尝试编写一个应用程序以 native 模式播放 DSD。 (我在 DoP 模式下成功了。)然而,当我将采样率设置为 2.8MHz 时,我发现 ASIOCallbac
我想将记录添加到包含图片的表中。当我尝试添加时,它向我显示此错误 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 ' masalah = 'dsd' AN
我是一名优秀的程序员,十分优秀!