这个问题是关于Windows音频 session API的。阅读Microsoft的示例代码后,我发现在获取IAudioClient之后,将在其上调用“GetService”方法以获得IAudioRenderClient。然后调用IAudioRenderClient的GetBuffer和ReleaseBuffer方法以添加要播放的缓冲区。
我的问题:
================================================== ===========================
经过更多阅读后,我认为IAudioClient可以是IAudioRenderClient或IAudioCaptureClient。但是又出现了另一个问题,为什么我们调用GetService来获取IAudioRenderClient而不是QueryInterface?
最佳答案
IAudioCaptureClient
也具有GetBuffer
和ReleaseBuffer
。如果将GetBuffer
和ReleaseBuffer
放在IAudioClient
上,那么您如何知道是要处理捕获缓冲区还是渲染缓冲区?这种方法还可以防止IAudioClient
过多地使用所有可能的服务的方法。 (这被称为“interface segregation principle”,被认为是好的设计)。 CoCreateInstance
,因为您的系统可能安装了许多声卡。如果您传递了IAudioRenderClient
的IID,它将如何知道您想要的IAudioRenderClient
?