Why I can hear only one (calling) side using TAPI and H.323?
-
Hello I am beginner in VOIP.I try to make simple calling and answering application. Here i face this problem -I can hear only one side(calling). Please check this following code. //Calling-Ip Calling Function gpAddress->CreateCall(bstr,LINEADDRESSTYPE_IPADDRESS,TAPIMEDIATYPE_AUDIO,&gpCall); hr=SelectTerminalsOnCall(gpCall); hr=gpCall->Connect(0); //Answer -I add Answer method in event. LRESULT CVOIPCallDlg::OnTAPIEvent(WPARAM wParam, LPARAM lParam) { CString csName; switch(wParam) { case TE_CALLNOTIFICATION: { AddLog("call notification event has occured"); // Get the ITCallNotification interface. IDispatch* pEvent=(IDispatch *)lParam; Answer(pEvent); } break; case TE_CALLSTATE: ITCallStateEvent *a=(ITCallStateEvent *)lParam; ITCallInfo *b; if(a->get_Call(&b) != S_OK) AddLog("get_Call()",hr); CALL_STATE pCallState; if(a->get_State(&pCallState)!= S_OK) AddLog("get_State()",hr); switch(pCallState) { case CS_INPROGRESS: AddLog("dialing"); break; case CS_CONNECTED: AddLog("Connected"); break; case CS_DISCONNECTED: AddLog("Disconnected"); break; case CS_OFFERING: AddLog("A party wants to communicate with you!"); break; case CS_IDLE: AddLog("Call is created!"); break; } break; } pEvent->Release(); return 0; } LRESULT CVOIPCallDlg::Answer(IDispatch* pEvent) { HRESULT hr; ITCallNotificationEvent * pNotify; pEvent->QueryInterface( IID_ITCallNotificationEvent,(void **)&pNotify); ITCallInfo * pCallInfo; pNotify->get_Call(&pCallInfo); ITBasicCallControl * pBasicCall; hr = pCallInfo->QueryInterface(IID_ITBasicCallControl,(void**)&pBasicCall); hr = pCallInfo->get_Address(&gpAddress); ITStreamControl * pStreamControl; pBasicCall->QueryInterface(IID_ITStreamControl,(void **) &pStreamControl); IEnumStream * pEnumStreams; ITStream * pStream; hr = pStreamControl->EnumerateStreams(&pEnumStreams); pEnumStreams->Next(1, &pStream, NULL); long lMediaType; TERMINAL_DIRECTION dir; pStream->get_MediaType(&lMediaType); hr = pStream->get_Direction( &dir ); ITTerminal * pTerminal; ITTerminalSupport * pTerminalSupport; gpAddress->QueryInterface(IID_ITTerminalSupport,(void **)&pTerminalSupport); hr = pTerminalSupport->GetDefaultStaticTerminal(lMediaType,dir,&pTerminal); hr = pStream->SelectTerminal(pTe