C++ 新M1 mac上的coreaudio崩溃

C++ 新M1 mac上的coreaudio崩溃,c++,macos,core-audio,kernel-extension,apple-m1,C++,Macos,Core Audio,Kernel Extension,Apple M1,我正在尝试在新的m1mac上编写类似于PhantomAudioDriver或(SoundFlower,基于它)的音频内核扩展 我构建了它,它可以加载,我还可以将它设置为默认设备。 在初始化过程中,我检查每个部件,所有部件都会初始化并创建,没有任何错误,但当我在将虚拟设备设置为默认值时,它会冻结。使用QuickTime player时,它什么也不做,但当我尝试使用vlc播放视频时,它会冻结几秒钟,但它确实播放视频,没有音频 在内核日志中,我看到它肯定会启动音频引擎: kernel: (IOAudi

我正在尝试在新的m1mac上编写类似于
PhantomAudioDriver
或(
SoundFlower
,基于它)的音频内核扩展

我构建了它,它可以加载,我还可以将它设置为默认设备。
在初始化过程中,我检查每个部件,所有部件都会初始化并创建,没有任何错误,但当我在将虚拟设备设置为默认值时,它会冻结。使用QuickTime player时,它什么也不做,但当我尝试使用vlc播放视频时,它会冻结几秒钟,但它确实播放视频,没有音频

在内核日志中,我看到它肯定会启动音频引擎:

kernel: (IOAudioFamily)   engine started  
因为
IOAudioFamily的
代码是开源的,所以我能够根据内核日志检查和分析我的代码,它应该如何工作,并且不会返回任何错误

但几秒钟后,在内核日志中,我看到引擎停止命令被调用。 我能够确定它在以下日志之后开始关闭:

coreaudiod: (CoreAudio)  HALS_IOContext::IOWorkLoop: could not establish a timeline after waiting 10000000 microseconds for context 214 <private>
因此,它肯定不会无法获得workloop

然后调用logs
IOAudioFamily的
stop命令,它停止引擎并关闭客户端。 我看到
CoreAudio
错误:

coreaudiod: (CoreAudio)  HALS_IOContext::StartIOThread: the IO thread failed to start, Error: 1852797029 (<private>)
我还检查了启动和关闭客户机日志之间的日志(我认为这没有什么用处,也无法理解),也许我应该检查一些特定的流程日志

此外,可能还有其他方法可以查看
HALS
源代码。
我非常感谢您的专业知识和帮助。

听起来您的驾驶员时间戳系统工作不正常。你的方法是什么,你是如何生成你的时间戳的?另外,请注意,IOAudioFamily已被弃用,支持的实现音频驱动程序的方法是音频服务器插件。您好,谢谢您的回答,是的,我看到了,IOAudioFamily已被弃用。我正在使用takeTimeStamp函数,它也标记为deprecated。我检查过了,它在新的BIg sur上工作,但在intel芯片上。你能分享代码吗?对不起,我刚刚看到你的评论。它与m1非常相似,但适用于m1,对于arm,有DriverDesiReshiresSampleInterval纯虚拟函数。我阅读了它的功能和工作原理,尝试了两种方法(正确和错误),但没有任何帮助。
coreaudiod: (CoreAudio)  HALS_IOContext::StartIOThread: the IO thread failed to start, Error: 1852797029 (<private>)
QuickTime Player: (CoreAudio)  HALC_ProxyIOContext::IOWorkLoop: the server failed to start, Error: 0x6E6F7065