gpt4 book ai didi

c++ - 音量控制 channel 数 XP 与 Vista 不同

转载 作者:行者123 更新时间:2023-11-28 08:34:20 25 4
gpt4 key购买 nike

当我运行这段代码时:

MIXERLINE MixerLine;
memset( &MixerLine, 0, sizeof(MIXERLINE) );
MixerLine.cbStruct = sizeof(MIXERLINE);
MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
mmResult = mixerGetLineInfo( (HMIXEROBJ)m_dwMixerHandle, &MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE );

在 XP 下,MixerLine.cChannels 返回为声卡支持的 channel 数。通常 2 个,现在经常更多。

在 Vista 下,MixerLine.cChannels 作为一个回归。

然后我一直在获取 MIXERC​​ONTROL_CONTROLTYPE_VOLUME 控件并为支持的每个 channel 设置音量,并将音量控制设置为不同 channel 上的不同级别,以便在扬声器之间来回移动音乐(从左到右)。

显然,在 Vista 下,这种方法不起作用,因为只有一个 channel 。我可以设置音量,同时适用于两个 channel 。

我试图为这个设备获取一个 MIXERC​​ONTROL_CONTROLTYPE_PAN,但那不是一个有效的控件。

所以,所有 MMSystem 专家的问题是:我需要什么类型的控件来调整左/右平衡?或者,有更好的方法吗?我想要一个适用于 XP 和 Vista 的解决方案。

计算机详细信息:运行 Vista Ultimta 32 位 SP1 和所有最新补丁。音频由带有 4 个扬声器的 Creative Audigy 2 ZS 卡提供,这些扬声器都可以通过 Vista 的声音面板正确寻址(控制)。 Creative 网站上的驱动程序是最新的 (SBAX_PCDRV_LB_2_18_0001)。 Vista 声音未设置为单声道,并且所有 channel 都可以从声音面板上看到和控制。

在“XP 兼容模式”下运行程序不会改变此问题的行为。

最佳答案

如果您在“XP 兼容”模式下运行您的应用程序,则混音器 API 的工作方式应该更接近于它们在 XP 中的工作方式。

如果您没有在 XP 模式下运行,那么混音器 API 会反射(reflect)混音格式 - 如果您的 PC 的音频解决方案配置为单声道,那么您只会看到一个 channel ,但如果您的机器配置为多 channel 输出混音器 API 应该反射(reflect)这一点。

您可以运行扬声器调谐向导来确定为您的音频解决方案配置的声道数。

关于c++ - 音量控制 channel 数 XP 与 Vista 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222248/

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