Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Это опять я :-))) 30.12.02 14:36 Число просмотров: 2054
Автор: amirul <Serge> Статус: The Elderman
|
Во первых открывать линию (после инициализации и всего остального) нужно 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)
|
|
|