kin*_*aar 3 audio macos iokit core-audio driverkit
我们正在为 USB 麦克风开发自定义音频驱动程序,以便对输入音频流进行简单处理 (EQ)(与 Windows 的 APO 相当)。经过一些帮助,我们设法将我们的驱动程序(基于 SimpleAudioDriver )分配给正确的音频设备。但现在我们显示了两个设备:一个分配给我们的驱动程序,另一个分配给默认驱动程序。我们如何用我们的设备覆盖原来的设备,只显示一台设备?
我们已经尝试添加更多 IOKitPersonalities 以获得更好的探测分数,但结果是一样的。我们还读取了日志,原始驱动程序和我们的探测分数均处于最大值(100000)。
这是 info.plist 文件的当前状态:
<plist version="1.0">
<dict>
<key>IOKitPersonalities</key>
<dict>
<key>SimpleAudioDriver</key>
<dict>
<key>idProduct</key>
<integer>49456</integer>
<key>idVendor</key>
<integer>1130</integer>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>IOClass</key>
<string>IOUserService</string>
<key>IOMatchCategory</key>
<string>SimpleAudioDriver</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
<key>IOUserAudioDriverUserClientProperties</key>
<dict>
<key>IOClass</key>
<string>IOUserUserClient</string>
<key>IOUserClass</key>
<string>IOUserAudioDriverUserClient</string>
</dict>
<key>IOUserClass</key>
<string>SimpleAudioDriver</string>
<key>IOUserServerName</key>
<string>com.example.apple-samplecode.SimpleAudio.Driver</string>
<key>SimpleAudioDriverUserClientProperties</key>
<dict>
<key>IOClass</key>
<string>IOUserUserClient</string>
<key>IOUserClass</key>
<string>SimpleAudioDriverUserClient</string>
</dict>
</dict>
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
如果您有任何提示,请回复我们。
谢谢。
示例驱动程序与任何真实硬件都不匹配,而是将自身附加到虚拟“资源”小块:
<key>IOProviderClass</key>
<string>IOUserResources</string>
Run Code Online (Sandbox Code Playgroud)
这是一个通用对象,除了存在之外什么也不做,以便虚拟驱动程序可以附加。默认情况下,对象只能被一个客户端(即驱动程序)成功匹配,因此虚拟驱动程序将争夺对该虚拟对象的访问权限。所以当只匹配这个对象时,需要使用匹配类别:
<key>IOMatchCategory</key>
<string>SimpleAudioDriver</string>
Run Code Online (Sandbox Code Playgroud)
但是,在匹配真实硬件时绝对不要使用此键,除非有充分的理由。如果你保留这个,你的驱动程序的匹配类别将与Apple的默认驱动程序不同,因此两者都会匹配设备,从而导致混乱。
为了避免多个驱动程序尝试声明同一设备,只需删除整个IOMatchCategory键/值对以使用默认类别,这也是标准 macOS USB 音频驱动程序使用的类别,因此只有一个驱动程序能够成功匹配。可以通过不同 USB 匹配模式的不同探测分数级别来控制哪一个获胜,或者在不寻常的情况下,使用显式探测分数来控制。
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |