【问题标题】:HAL plugin buffer size kAudioDevicePropertyBufferFrameSizeHAL 插件缓冲区大小 kAudioDevicePropertyBufferFrameSize
【发布时间】:2021-07-05 17:18:07
【问题描述】:

我正在开发 HAL 虚拟音频设备。

我在从虚拟音频设备到我的应用程序中获取正确的缓冲区大小时遇到​​问题...

如何将属性 kAudioDevicePropertyBufferFrameSize 或 kAudioDevicePropertyBufferFrameSizeRange 实现到我的虚拟 HAL 设备...

如果我想将它们实现到此处找到的苹果 nullaudio 示例,我该怎么做:https://developer.apple.com/documentation/coreaudio/creating_an_audio_server_driver_plug-in

我尝试以与将 kAudioDevicePropertyNominalSampleRate 添加到 nullAudio.c 示例相同的方式将它们添加到我的设备中。但没有成功...

【问题讨论】:

    标签: macos core-audio


    【解决方案1】:

    您必须在客户端应用程序中设置kAudioDevicePropertyBufferFrameSize(使用AudioObjectSetPropertyData)。

    您无法从 AudioServerPlugin 控制 kAudioDevicePropertyBufferFrameSize 属性。它仅由客户端进程用于设置其 IO proc 接收的 IO 缓冲区的大小。

    当多个客户端同时使用您的设备时,CoreAudio 让它们都使用不同的 IO 缓冲区大小(可能不是彼此的倍数/因子),因此您的插件必须处理各种大小的缓冲区。

    来源:https://lists.apple.com/archives/coreaudio-api/2013/Mar/msg00152.html

    我不完全确定,但据我所知,您也无法通过 AudioServerPlugin 控制 kAudioDevicePropertyBufferFrameSizeRange

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 2021-09-18
      • 2012-04-11
      • 2015-06-05
      相关资源
      最近更新 更多