gpt4 book ai didi

c++ - 在 Windows 10 中的捕获客户端上使用 IAudioClient2::SetClientProperties 的预期效果是什么?

转载 作者:行者123 更新时间:2023-12-02 22:30:31 27 4
gpt4 key购买 nike

IAudioClient2::SetClientProperties的规范仅包含一个参数,但我不清楚在给定现有文档的情况下对 API 有什么期望。参数由下式给出:

typedef struct AudioClientProperties {
UINT32 cbSize;
BOOL bIsOffload;
AUDIO_STREAM_CATEGORY eCategory;
AUDCLNT_STREAMOPTIONS Options;
} AudioClientProperties;
我有一个捕获客户端,我试图了解使用不同组合的确切后果 eCategoryOptions .
首先:如果我不打电话 SetClientProperties在我的直播中;那么默认设置是什么?假设存在对应的 GetClientProperties ,是否可以说它会返回什么?
如果我将流类别设置为 AudioCategory_SpeechAUDCLNT_STREAMOPTIONS_RAW 的流选项,手册指出
The audio stream is a 'raw' stream that bypasses
all signal processing except for endpoint specific,
always-on processing in the Audio Processing Object (APO), driver, and hardware.
这是否意味着 Signal Enhancements 所做的任何处理被绕过了还是被绕过了其他类型的内置信号处理?我想我不太明白 endpoint specific,always-on上面的部分。
另外,如果我改为使用 AudioCategory_CommunicationsAUDCLNT_STREAMOPTIONS_RAW ,这两者有什么矛盾吗?对我来说感觉好像 AudioCategory_Communications应该启用对 VoIP 有用的组件(例如 AGC、NS 等),而 AUDCLNT_STREAMOPTIONS_RAW标志的意思是“尽可能保持音频路径干净”?
也许我可以改写最后一个问题。使用 AudioCategory_Communications 之间的最终行为有什么区别? + AUDCLNT_STREAMOPTIONS_RAW并使用 AudioCategory_Speech + AUDCLNT_STREAMOPTIONS_RAW ?

最佳答案

eCategory 具有超越音频效果的行为含义。例如,如果您有一个 VOIP 应用程序并启动一个 AudioCategory_Communications 流,这将导调用影应用程序暂停或被闪避,无论您是否使用 AUDCLNT_STREAMOPTIONS_RAW。
如果您的捕获客户端用于 VOIP,您需要 AudioCategory_Communications。如果您的捕获客户端用于语音命令或听写,您需要 AudioCategory_Speech。
AUDCLNT_STREAMOPTIONS_RAW 仅适用于非常狭窄的情况。通常,您会欢迎您选择的 eCategory 的默认音频处理。
另一方面,如果音频处理的细节对您来说非常重要,以至于您在特定硬件上单独评估音频驱动程序,您可能会确定某些特定型号的计算机具有不起作用的音频处理为您的应用程序。
在这种情况下(应该很少见),您应该做两件事:

  • 联系那台电脑的制造商,告诉他们你不喜欢他们的音频处理的什么地方,这样他们就有机会让你相信他们正在做的事情真的很好,或者你有机会让他们相信他们真的有问题,在这种情况下他们应该解决它。
  • 在他们进行修复时,您的应用程序应在确定它在此类问题系统上运行后,使用 AUDCLNT_STREAMFLAGS_RAW。请注意,您的应用将需要应用它自己需要的任何处理,因为系统不再提供该处理。

  • 您的应用程序可以使用音频效果发现 API 在正常模式和原始模式下查询将应用于其所选流类别的音频效果。这里有一个示例: https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/Official%20Windows%20Platform%20Sample/Audio%20effects%20discovery%20sample
    如果您不调用 IAudioClient2::SetClientProperties,则默认值为 eCategory = AudioCategory_Other,这通常不是您想要的。

    关于c++ - 在 Windows 10 中的捕获客户端上使用 IAudioClient2::SetClientProperties 的预期效果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64035110/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com