Example #1
0
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;
}
Example #2
0
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"));
	}
}
Example #3
0
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"));
	}
}
Example #4
0
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;
	}
}
Example #5
0
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);
	}
}
Example #6
0
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"));
	}
}