Changing sample rate for microphone/speakers in Windows 7

Viewed 960

I need to change sample rate for microphone and speakers.

Advanced Speaker Properties

I know how to change volume levels for speakers and microphone using IMMDevice, but how can I set sample rate?

bool SoundDeviceControler::setVolume(EDataFlow dataFlow,float volume )
{
    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
    if (FAILED(hr))
        return false
    IMMDeviceEnumerator *deviceEnumerator = NULL;
    hr = CoCreateInstance( __uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&deviceEnumerator) );
    if (FAILED(hr))
        return false;
    IMMDeviceCollection *deviceCollection = NULL;
    hr = deviceEnumerator->EnumAudioEndpoints( dataFlow, DEVICE_STATE_ACTIVE | DEVICE_STATE_UNPLUGGED, &deviceCollection );
    if (FAILED(hr))
        return false;
    UINT deviceCount;
    hr = deviceCollection->GetCount(&deviceCount);
    if (FAILED(hr))
        return false;    
    IMMDevice *device = NULL;
    for (UINT i = 0 ; i < deviceCount ; i += 1)
    {
        device = NULL;
        hr = deviceCollection->Item(i, &device);
        if (FAILED(hr))
            return false;
        IAudioEndpointVolume *endpointVolume = NULL;
        hr = device->Activate( __uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, reinterpret_cast<void **>(&endpointVolume) );
        if (FAILED(hr))
            retur false;
        hr=endpointVolume->SetMasterVolumeLevelScalar(volume,NULL);
        if (FAILED(hr))
            return false;   
        hr=endpointVolume->SetMute(false,NULL);
        if (FAILED(hr))
            return false;   
    }
    return true;
}   
0 Answers
Related