| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Доступ к некоторым линиям микшера |
| Автор: AndreySol 1.2.2007, 08:28 | ||
Почему не получается с некоторыми типами линий (а именно: MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY, MIXERLINE_COMPONENTTYPE_SRC_DIGITAL, MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER) а с остальными SRC_-линиями все нормально ? Что надо исправить или добавить ? |
| Автор: AndreySol 11.2.2007, 14:11 | ||
| Уф, вроде разобрался. Следующий код работает нормально - выдает названия сначала всех линий воспроизведения, затем всех линий записи. MMRESULT Result; HMIXER hMixer; MIXERLINE Line = {0}; MIXERCAPS mxCaps = {0}; CString strNameLine = ""; Line.cbStruct = sizeof(Line); Line.dwSource = 0; Result = mixerOpen(&hMixer, MIXER_OBJECTF_MIXER, DWORD(this->GetSafeHwnd()), NULL, CALLBACK_WINDOW); if(Result == MMSYSERR_NOERROR) { Result = mixerGetDevCaps((UINT_PTR)hMixer, &mxCaps, sizeof(mxCaps)); if(Result == MMSYSERR_NOERROR) { for(int iDest = 0; iDest <= (int)mxCaps.cDestinations - 1; iDest++) { unsigned long iConnections = 0; Line.dwDestination = iDest; Line.dwSource = 0; Result = mixerGetLineInfo(HMIXEROBJ(hMixer), &Line, MIXER_GETLINEINFOF_DESTINATION); if(Result == MMSYSERR_NOERROR) iConnections = Line.cConnections - 1; for(unsigned long i = 0; i <= iConnections; i++) { Line.dwSource = i; Result = mixerGetLineInfo(HMIXEROBJ(hMixer), &Line, MIXER_GETLINEINFOF_SOURCE); if(Result == MMSYSERR_NOERROR) { strNameLine = ""; strNameLine.Format("Dest %i, %s", iDest, Line.szName); MessageBox(strNameLine,"",0); } } } } mixerClose(hMixer); } Последний вопрос по этой теме: как выяснить соответствие доступных каналов необходимому, т.е. к примеру мне надо перечислить линии канала записи - как определить что канал с номером 1 именно канал записи ? На другом форуме мне написали
но слово "обычно" это не то что нужно, должен быть какой-то флаг или еще что ? |