【问题标题】:How to control the Microphone Boost in Windows 7?如何在 Windows 7 中控制麦克风增强?
【发布时间】:2012-02-12 21:42:43
【问题描述】:

我正在尝试使用 C/C++ 应用程序中的 MIXER API 来控制 Windows 7 中的麦克风增强(电平/(取消)静音),但我没有获得相同的控件。可以使用 WASAPI 完成吗?有人可以建议任何其他 API 来控制 Windows 7 中的麦克风增强功能吗?

这是我目前为止写的……

const IID IID_IDeviceTopology = __uuidof(IDeviceTopology);
const IID IID_IPart = __uuidof(IPart);
const IID IID_IAudioAutoGainControl = __uuidof(IAudioAutoGainControl);

HRESULT hr = S_OK;
CoInitialize(NULL);

IMMDeviceEnumerator *deviceEnumerator = NULL;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);

IMMDevice *pEndptDev = NULL;

hr = deviceEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pEndptDev);
deviceEnumerator->Release();
deviceEnumerator = NULL;


IDeviceTopology *pDevTopoEndpt = NULL;
IConnector *pConnEndpt = NULL;
IConnector *pConnHWDev = NULL;
IPart *pPartConn = NULL;
IAudioAutoGainControl *pAGC = NULL;
IControlInterface *pControl = NULL;
UINT pCount = 0;
LPCGUID pIID = ;

// Get the endpoint device's IDeviceTopology interface.
hr = pEndptDev->Activate(IID_IDeviceTopology, CLSCTX_ALL, NULL, (void**)&pDevTopoEndpt);

// The device topology for an endpoint device always
// contains just one connector (connector number 0).
hr = pDevTopoEndpt->GetConnector(0, &pConnEndpt);

// Use the connector in the endpoint device to get the
// connector in the adapter device.
hr = pConnEndpt->GetConnectedTo(&pConnHWDev);

// Query the connector in the adapter device for
// its IPart interface.
hr = pConnHWDev->QueryInterface(IID_IPart, (void**)&pPartConn);

// Use the connector's IPart interface to get the
// IDeviceTopology interface for the adapter device.
hr = pPartConn->Activate(CLSCTX_ALL, IID_IAudioAutoGainControl, (void**)&pAGC);
hr = pPartConn->GetControlInterfaceCount(&pCount);
hr = pPartConn->GetControlInterface(pCount - 1, &pControl);
hr = pControl->GetIID((GUID *)pIID);

//BOOL bEnabled = false;
hr = pAGC->SetEnabled(true, pIID);

【问题讨论】:

    标签: windows mixer wasapi


    【解决方案1】:

    【讨论】:

    • 谢谢!塞尔比。如果它可以工作,硬件级别的 AGC 会很棒。如何使用 IAudioAutoGainControl::SetEnabled 函数?我不明白如何获取 GUID?我已经编辑了这个问题,并且特别关心如何获取 GUID 以便 SetEnable AGC。
    猜你喜欢
    • 2012-01-16
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2023-03-29
    • 1970-01-01
    • 2014-06-19
    • 2011-03-04
    相关资源
    最近更新 更多