Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Это опять я :-))) 30.12.02 17:11 Число просмотров: 2089
Автор: rom30 Статус: Незарегистрированный пользователь
|
Все есть!
отдельный пример как позвонить ( конечно с использованием ТАПИ)
и
отдельный пример использования waveOutWrite и т.д (низкоуровневые функции работы со звуком)
Только никак не соображу как его в линию проиграть?
Немного бы продолжил! А?
> Во первых открывать линию (после инициализации и всего > остального) нужно c LINEMEDIAMODE_AUTOMATEDVOICE: > > // ...
> lineOpen(hLineApp, dwDeviceID, &hLine, dwAPIVersion, 0, 0,
> LINECALLPRIVILEGE_NONE, LINEMEDIAMODE_AUTOMATEDVOICE,
> NULL);
>
> Во-вторых при дозвоне в параметрах указать ту же константу: > > // ...
> lineCallParams.dwMediaMode = LINEMEDIAMODE_AUTOMATEDVOICE;
> dwCompletionID = lineMakeCall(hLine, &hCall, numba, 0,
> &lineCallParams);
>
> > В-третьих, получить ID wave устройств для ввода/вывода > звука: > > DWORD DeviceInID, DeviceOutID;
> // ...
> lpDeviceID = calloc(sizeof(VARSTRING), 1);
> lpDeviceID->dwTotalSize = sizeof(VARSTRING);
> lineGetID(0, 0, hCall, LINECALLSELECT_CALL, lpDeviceID,
> "wave/in");
> if (lpDeviceID->dwNeededSize >
> lpDeviceID->dwTotalSize) {
> lpDeviceID = realloc(lpDeviceID,
> lpDeviceID->dwNeededSize);
> lpDeviceID->dwTotalSize =
> lpDeviceID->dwNeededSize;
> lineGetID(0, 0, hCall, LINECALLSELECT_CALL,
> lpDeviceID, "wave/in");
> }
> DeviceInID = *((ULONG *)((char *)lpDeviceID +
> sizeof(VARSTRING)));
>
> lineGetID(0, 0, hCall, LINECALLSELECT_CALL, lpDeviceID,
> "wave/out");
> if (lpDeviceID->dwNeededSize >
> lpDeviceID->dwTotalSize) {
> lpDeviceID = realloc(lpDeviceID,
> lpDeviceID->dwNeededSize);
> lpDeviceID->dwTotalSize =
> lpDeviceID->dwNeededSize;
> lineGetID(0, 0, hCall, LINECALLSELECT_CALL,
> lpDeviceID, "wave/out");
> }
> DeviceOutID = *((ULONG *)((char *)lpDeviceID +
> sizeof(VARSTRING)));
>
> free(lpDeviceID);
>
> Вообще-то есть "wave/in/out", но у меня он не работал > Кроме того умнее сделать функцию: GetWaveID(LPCSTR). И > вызывать > > DeviceInID = GetWaveID("wave/in");
> DeviceOutID = GetWaveID("wave/out");
>
> Ну а работа с MM это отдельный разговор. Можешь поискать в > MSDN-е (точнее в KB) файлик ddrec (Direct-to-Disk Recorder) > - там все очень хорошо проиллюстрировано. Или просто в > MSDN-е посмотреть функции waveInXxx, waveOutXxx (начинать с > waveInOpen() и waveOutOpen(), которым нужны как раз те > IS-шники которые ты получишь у TAPI)
|
|
|