выбор средства записи
От: drummer  
Дата: 28.10.03 17:40
Оценка:
Подскажите пожалуйста, как выбрать элемент, откуда будет считываться звук (аналог — регулятора записи — там у каждого элемента есть галка — "выбрать") — то есть микрофонный вход или линейный...
Полагаю надо копать в сторону микшеров, но не знаю тип контрола — собственно в этом основная проблема...
вот пример моего кода — я пытаюсь выбрать в качестве средства записи линейный вход
//обявления некоторых переменных не попали в кусок...

    HMIXER hLineIn;
    if(::mixerOpen(&hLineIn,0,0,0,MIXER_OBJECTF_HMIXER)!= MMSYSERR_NOERROR)
    {
        return;
    }

    ml.cbStruct = sizeof(ml);
    ml.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
    if(::mixerGetLineInfo(
        (HMIXEROBJ)hLineIn,
        &ml,
        MIXER_GETLINEINFOF_COMPONENTTYPE
    ) != MMSYSERR_NOERROR)
    {
        return;
    }

    MIXERCONTROL mc1;
    mcs.cbStruct = sizeof(mcs);
    mcs.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX;
//MIXERCONTROL_CONTROLTYPE_VOLUME;
    mcs.dwLineID = ml.dwLineID;
    mcs.cControls = 1;
    mcs.cbmxctrl = sizeof(mc1);
    mcs.pamxctrl = &mc1;
    MMRESULT res = ::mixerGetLineControls(
        (HMIXEROBJ)hLineIn,
        &mcs,
        MIXER_GETLINECONTROLSF_ONEBYTYPE);
    if(res != MMSYSERR_NOERROR)
    {
        return;
    }
    
    m_dwVolumeCtrlID = mc1.dwControlID;// вот здесь мне все время приходит 0
    MIXERCONTROLDETAILS_BOOLEAN mcd_b;
    mcd_b.fValue = 1;

    mcd.cbStruct = sizeof(mcd);
    mcd.dwControlID = m_dwVolumeCtrlID;
    mcd.cChannels = ml.cChannels;
    mcd.cMultipleItems = mc1.cMultipleItems;
    mcd.cbDetails = sizeof(mcd_b);
    mcd.paDetails = &mcd_b;

    res = ::mixerSetControlDetails((HMIXEROBJ)hLineIn, &mcd,   MIXER_SETCONTROLDETAILSF_VALUE);
//здесь возвращается код ошибки  MM...INVALPARAM

Подскажите пожалуйста, что я делаю не так...

ЗЫ. И еще вопрос немного не по теме — можно ли как нибудь определить, работает ли линейный вход — я проверял так — соединял выход со входом — включал песню и записываал ее при помощи стандартной звукозаписи. В записанном файле были только шумы...

Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.