Macos OSX CoreAudio播放通过,无图形API,无可发布性

Macos OSX CoreAudio播放通过,无图形API,无可发布性,macos,core-audio,audiounit,Macos,Core Audio,Audiounit,这个问题不是关于AU插件,而是关于将音频单元集成为独立应用程序的构建块。经过多次尝试,我想不出两个音频单元之间最简单的“无图”连接是什么,它将起到“播放通过”的作用 我了解子类型kAudioUnitSubType_HALOutput的单个音频单元在捕获、渲染、实时处理和转发任何音频输入数据方面的功能和充分性。然而,只要使用全双工音频硬件或从用户级内置设备创建聚合i/o设备,通过播放就可以正常工作。 然而,内置设备不是全双工的,“聚合”它们也有一定的缺点。因此,我决定研究硬编码的两个单元连接的可能

这个问题不是关于AU插件,而是关于将音频单元集成为独立应用程序的构建块。经过多次尝试,我想不出两个音频单元之间最简单的“无图”连接是什么,它将起到“播放通过”的作用

我了解子类型kAudioUnitSubType_HALOutput的单个音频单元在捕获、渲染、实时处理和转发任何音频输入数据方面的功能和充分性。然而,只要使用全双工音频硬件或从用户级内置设备创建聚合i/o设备,通过播放就可以正常工作。 然而,内置设备不是全双工的,“聚合”它们也有一定的缺点。因此,我决定研究硬编码的两个单元连接的可能性(,而不使用图形API),并使用非全双工硬件测试其行为

不幸的是,我既没有找到全面的文档,也没有找到只使用简单的连接模式创建最简单的两单元游戏的示例代码,正如Apple Technical NoteTN2091中所建议的那样:

AudioUnitElement halUnitOutputBus=1//TN2091建议的1(其他0)
AudioUnitElement-outUnitInputElement=1//TN2091建议的1(其他0)
听觉单位连接哈洛托乌图素;
Halouttooutunin.sourceAudioUnit=halAudioUnit;
halOutToOutUnitIn.sourceOutputNumber=halUnitOutputBus;
halOutToOutUnitIn.destInputNumber=outUnitInputElement;
AudioUnitSetProperty(outAudioUnit,//连接目标
kAudioUnitProperty\u MakeConnection,//属性键
kAudioUnitScope_输入,//目标范围
outUnitInputElement,//目标元素
&halOutToOutUnitIn,//连接定义
粒径(哈洛托菌素)
);
我的任务是尽可能避免涉及图形,甚至更糟的是,避免使用所谓的PublicUtility的缓冲区。PublicUtility多年来一直受到bug和延迟问题的困扰,并涉及一些雄心勃勃的假设,例如:

\if TARGET\u OS\u WIN32
#包括
#包括
#pragma内在(_InterlockedOr)
#pragma内在(_interloctedand)
#否则
#包括
#包括
#恩迪夫

提前感谢您提供的任何可能为我指明正确方向的提示。

您找到答案了吗?您能回答这个问题吗?还没有,很遗憾,感谢您的关注……我正在学习更好地理解在TN2091中所做的事情,并随后在TN2223中撤销。似乎还依赖于一些设备相关的属性,我仍然不完全理解。仍在处理一些问题。感谢您的回复。祝你好运!我希望我已经清楚地意识到,要尽量远离卡林缓冲区。IMHO,这个C++代码对于我的要求来说太复杂了,尽管其他一些作者已经称赞过它。在苹果论坛上,有人建议我不要依赖它。在我的工作中,我使用了m.Tyson的TPCircularBuffer,尽管我发现异步I/o不是一件小事。我不认为讨论CA书会是真正的主题。谢谢你的理解。你找到答案了吗?你能回答这个问题吗?还没有,不幸的是,谢谢你的兴趣…我正在学习更好地理解在TN2091中做了什么,然后在TN2223中撤销了什么。似乎还依赖于一些设备相关的属性,我仍然不完全理解。仍在处理一些问题。感谢您的回复。祝你好运!我希望我已经清楚地意识到,要尽量远离卡林缓冲区。IMHO,这个C++代码对于我的要求来说太复杂了,尽管其他一些作者已经称赞过它。在苹果论坛上,有人建议我不要依赖它。在我的工作中,我使用了m.Tyson的TPCircularBuffer,尽管我发现异步I/o不是一件小事。我不认为讨论CA书会是真正的主题。谢谢你的理解。