gpt4 book ai didi

c++ - ASIOCallbacks::bufferSwitchTimeInfo 在 Sony PHA-3 上以 2.8MHz 采样率和 DSD 格式出现非常慢

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:30 28 4
gpt4 key购买 nike

我买了一台 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com