Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к некоторым линиям микшера 
:(
    Опции темы
AndreySol
Дата 1.2.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: нет
Всего: 1



Код

MIXERLINE SpeakerLine = {0};
MMRESULT Result;
HMIXER hMixer = NULL;

Result = mixerOpen(&hMixer, MIXER_OBJECTF_MIXER, DWORD(this->GetSafeHwnd()), NULL, СALLBACK_WINDOW);
if(Result == MMSYSERR_NOERROR)
{ // микшер успешно открыт - продолжаем
    SpeakerLine.cbStruct = sizeof(SpeakerLine);
    SpeakerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
    Result = mixerGetLineInfo(HMIXEROBJ(hMixer), &SpeakerLine, MIXER_GETLINEINFOF_COMPONENTTYPE);
    if(Result == MMSYSERR_NOERROR)
    {
            ///////// ВОТ сюда с нижеперечисленными типами линий не попадаем
        }
}

Почему не получается с некоторыми типами линий (а именно: MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY, 
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL, MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER) а с остальными SRC_-линиями все нормально ? Что надо исправить или добавить ?
PM MAIL   Вверх
AndreySol
Дата 11.2.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: нет
Всего: 1



Уф, вроде разобрался. Следующий код работает нормально - выдает названия сначала всех линий воспроизведения, затем всех линий записи.
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 именно канал записи ? На другом форуме мне написали
Цитата

Сначала определяем канал записи (обычно 1)

но слово "обычно" это не то что нужно, должен быть какой-то флаг или еще что ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.