static int dah_talk_close(struct service *srv, talk_info_t *talk) { int ret = -1; dah_service_t *dah_srv; NMP_ASSERT(srv && talk); if(talk->frm) { nmp_dealloc(talk->frm, sizeof(frame_t) + MAX_ENCODE_BUFFER_LEN); talk->frm = NULL; } dah_srv = (dah_service_t*)srv; if (CLIENT_StopTalkEx(talk->talk_handle)) { CLIENT_ReleaseAudioEncode(); ret = 0; } else { show_error("------------CLIENT_StopTalkEx(0x%x)\n", CLIENT_GetLastError()); } return ret; }
void CClientDlg::OnBtnStoptalk() { // TODO: Add your control notification handler code here if(0 != m_lLoginHandle) { if(m_bRecordStatus) { //Stop local record CLIENT_RecordStop(); m_bRecordStatus = FALSE; } if(0 != m_hTalkHandle) { //Stop audio talk to the device BOOL bSuccess = CLIENT_StopTalkEx(m_hTalkHandle); if(bSuccess) { m_hTalkHandle = 0; GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_STOPTALK)->EnableWindow(FALSE); } else { MessageBox(ConvertString("Stop talk failed!"), ConvertString("Prompt")); } } } else { MessageBox(ConvertString("Please login first!"), ConvertString("Prompt")); } }
void CClientDlg::OnBtnLogout() { // TODO: Add your control notification handler code here if(m_bRecordStatus) { CLIENT_RecordStop(); m_bRecordStatus = FALSE; } if(0 != m_hTalkHandle) { CLIENT_StopTalkEx(m_hTalkHandle); m_hTalkHandle = 0; } BOOL bRet = CLIENT_Logout(m_lLoginHandle); if(bRet) { m_lLoginHandle = 0; GetDlgItem(IDC_BTN_LOGIN)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_LOGOUT)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_STOPTALK)->EnableWindow(FALSE); m_ctlEncodeType.ResetContent(); m_ctlSpeakerChl.ResetContent(); } else { MessageBox(ConvertString("Logout failed!"), ConvertString("Prompt")); } }
void CDlgTalk::OnDestroy() { CDialog::OnDestroy(); CLIENT_StopListen(m_lLoginID); // TODO: Add your message handler code here if (m_hTalkingHandle) { CLIENT_RecordStopEx(m_lLoginID); CLIENT_StopTalkEx(m_hTalkingHandle); m_hTalkingHandle = NULL; } }
void CClientDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here if(m_bRecordStatus) { CLIENT_RecordStop(); } if(0 != m_hTalkHandle) { CLIENT_StopTalkEx(m_hTalkHandle); } if (m_lLoginHandle != 0) { CLIENT_Logout(m_lLoginHandle); } }
void CClientDlg::OnBtnStarttalk() { // TODO: Add your control notification handler code here if(0 != m_lLoginHandle) { // First set audio encode format in audio talk m_curTalkMode.encodeType = DH_TALK_DEFAULT; // DH_TALK_DEFAULT is default way. Usually it is pcm type without head. m_curTalkMode.dwSampleRate = 8000; m_curTalkMode.nAudioBit = 8; int nIndex = m_ctlEncodeType.GetCurSel(); if (-1 != nIndex) { DWORD dwItemData = m_ctlEncodeType.GetItemData(nIndex); m_curTalkMode = m_lstTalkEncode.type[dwItemData]; } // m_curTalkMode.dwSampleRate = 16000; // m_curTalkMode.nAudioBit = 16; BOOL bSuccess = CLIENT_SetDeviceMode(m_lLoginHandle, DH_TALK_ENCODE_TYPE, &m_curTalkMode); // 设置喊话参数 NET_SPEAK_PARAM stSpeak = {sizeof(NET_SPEAK_PARAM)}; stSpeak.nMode = 0; stSpeak.nSpeakerChannel = 0; CButton* pButton = reinterpret_cast<CButton*>(GetDlgItem(IDC_CHECK_SPEAK)); if (0 != pButton) { if (BST_CHECKED == pButton->GetCheck()) { stSpeak.nMode = 1; // 喊话 // 喊话喇嘛通道 int nIndex = m_ctlSpeakerChl.GetCurSel(); if (-1 != nIndex) { stSpeak.nSpeakerChannel = m_ctlSpeakerChl.GetItemData(nIndex); } } } bSuccess = CLIENT_SetDeviceMode(m_lLoginHandle, DH_TALK_SPEAK_PARAM, &stSpeak); if (!bSuccess) { MessageBox(ConvertString("Set speaker param failure!"), ConvertString("Prompt")); } // Then enable audio talk LONG lTalkHandle = CLIENT_StartTalkEx(m_lLoginHandle, AudioDataCallBack, (DWORD)this); if(0 != lTalkHandle) { m_hTalkHandle = lTalkHandle; GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_STOPTALK)->EnableWindow(TRUE); // Then enbale local record function.(Does not call it if it is a one-direction audio talk.) BOOL bSuccess = CLIENT_RecordStart(); if(bSuccess) { m_bRecordStatus = TRUE; } else { CLIENT_StopTalkEx(m_hTalkHandle); MessageBox(ConvertString("Start local record failed!"), ConvertString("Prompt")); } } else { MessageBox(ConvertString("Open talk failed!"), ConvertString("Prompt")); } } else { MessageBox(ConvertString("Please login first!"), ConvertString("Prompt")); } }