// PageAudioSettings.cpp : implementation file // #include "stdafx.h" #include "mgrnve.h" #include "ConnectionManager.h" #include "PageAudioSettings.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPageAudioSettings dialog CPageAudioSettings::CPageAudioSettings(CWnd* pParent, CMgrNVE* pMgrCM, CConnectionManager *pConnMgr) : CParamDlg(CPageAudioSettings::IDD, pParent, pMgrCM, pConnMgr) { //{{AFX_DATA_INIT(CPageAudioSettings) m_uAudioGain = 0; //}}AFX_DATA_INIT m_pCod5Api = NULL; m_pMediaSettings = NULL; m_pMsgMgr = NULL; } void CPageAudioSettings::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPageAudioSettings) DDX_Control(pDX, IDC_SLD_AUDIO_GAIN, m_sldAudioGain); DDX_Control(pDX, IDC_BTN_RESET, m_btnReset); DDX_Control(pDX, IDC_BTN_AIN_APPLY, m_btnApply); DDX_Control(pDX, IDC_CHK_AUD_ENABLE, m_btnAudEnable); DDX_Control(pDX, IDC_CB_AUDIO_CODEC, m_cbAudioCodec); DDX_Slider(pDX, IDC_SLD_AUDIO_GAIN, m_uAudioGain); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPageAudioSettings, CDialog) //{{AFX_MSG_MAP(CPageAudioSettings) ON_BN_CLICKED(IDC_BTN_RESET, OnBtnReset) ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLD_AUDIO_GAIN, OnReleasedcaptureSldAudioGain) ON_BN_CLICKED(IDC_BTN_AIN_APPLY, OnBtnAinApply) ON_BN_CLICKED(IDC_CHK_AUD_ENABLE, OnChkAudEnable) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPageAudioSettings message handlers BOOL CPageAudioSettings::SaveSetting() { CMN5_MULTI_COMMAND Cmds[3]; ULONG uIndex = 0; UpdateData(TRUE); ULONG uAudioCodec; ULONG uSampleRate; ULONG uBlockAlign; switch(m_cbAudioCodec.GetCurSel()) { case 0: uAudioCodec = COD5_ACT_PCM; uSampleRate = 16000; uBlockAlign = 2; break; case 1: uAudioCodec = COD5_ACT_PCM; uSampleRate = 16000; uBlockAlign = 1; break; case 2: uAudioCodec = COD5_ACT_PCM; uSampleRate = 8000; uBlockAlign = 2; break; case 3: uAudioCodec = COD5_ACT_PCM; uSampleRate = 8000; uBlockAlign = 1; break; case 4: uAudioCodec = COD5_ACT_ULAW; uSampleRate = 16000; uBlockAlign = 2; break; case 5: uAudioCodec = COD5_ACT_ULAW; uSampleRate = 8000; uBlockAlign = 2; break; case 6: uAudioCodec = COD5_ACT_ALAW; uSampleRate = 16000; uBlockAlign = 2; break; case 7: uAudioCodec = COD5_ACT_ALAW; uSampleRate = 8000; uBlockAlign = 2; break; } Cmds[uIndex].uBoard = 0; Cmds[uIndex].uChannel = 0; Cmds[uIndex].uCommand = COD5_CPC_CODEC_TYPE; Cmds[uIndex].uParam[0] = m_pMediaSettings->CodecSettings.uVideoCodec; Cmds[uIndex].uParam[1] = uAudioCodec; uIndex++; m_pMediaSettings->AudioSettings.Wfx.nBlockAlign = (WORD)uBlockAlign; m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample = (WORD)(uBlockAlign*8); m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec = uSampleRate; Cmds[uIndex].uBoard = 0; Cmds[uIndex].uChannel = 0; Cmds[uIndex].uCommand = COD5_CPC_AUDIO_ATTR; Cmds[uIndex].uParam[0] = uSampleRate; Cmds[uIndex].uParam[1] = uSampleRate * uBlockAlign; uIndex++; m_pCod5Api->Cod5SetMultiCodecProperties(uIndex, Cmds); for (ULONG i=0; iPushErrorCodeF("Cod5SetMultiCodecProperties failed. cmd[0x%08x]", Cmds[i].uCommand); m_pMsgMgr->Show(TRUE); } } uIndex = 0; Cmds[uIndex].uBoard = 0; Cmds[uIndex].uChannel = 0; Cmds[uIndex].uCommand = COD5_CAC_STREAM_ENABLE; m_pMediaSettings->AudioSettings.bEnable = m_btnAudEnable.GetCheck(); if (m_pMediaSettings->VideoSettings.bEnable) { Cmds[uIndex].uParam[0] |= COD5_CST_VIDEO; } if (m_pMediaSettings->AudioSettings.bEnable) { Cmds[uIndex].uParam[0] |= COD5_CST_AUDIO; } uIndex++; m_pCod5Api->Cod5SetMultiCodecAdjusts(uIndex, Cmds); m_pMgrNVE->UpdateMediaInfo(m_pConnection->GetServerIndex(), m_pMediaSettings, m_pConnection->GetServerAddr()); return TRUE; } BOOL CPageAudioSettings::ResetSetting() { m_btnAudEnable.SetCheck(1); m_pMediaSettings->AudioSettings.bEnable = 1; m_cbAudioCodec.SetCurSel(0); m_pMediaSettings->AudioSettings.uAudioCodec = COD5_ACT_PCM; m_pMediaSettings->AudioSettings.Wfx.wFormatTag = WAVE_FORMAT_PCM; m_pMediaSettings->AudioSettings.Wfx.nChannels = 1; m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec = 16000; m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample = 16; m_pMediaSettings->AudioSettings.Wfx.nBlockAlign = (WORD)(m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample*m_pMediaSettings->AudioSettings.Wfx.nChannels/8); m_pMediaSettings->AudioSettings.Wfx.nAvgBytesPerSec = m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec*m_pMediaSettings->AudioSettings.Wfx.nBlockAlign; m_pMediaSettings->AudioSettings.Wfx.cbSize = 0; UpdateData(FALSE); SetControlProperty(IDC_SLD_AUDIO_GAIN, 128); SetAudioGain(128); return TRUE; } BOOL CPageAudioSettings::UpdateSetting() { m_btnAudEnable.SetCheck(m_pMediaSettings->AudioSettings.bEnable); if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_PCM && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 16000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(0); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_PCM && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 16000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 8) { m_cbAudioCodec.SetCurSel(1); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_PCM && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 8000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(2); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_PCM && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 8000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 8) { m_cbAudioCodec.SetCurSel(3); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_ULAW && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 16000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(4); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_ULAW && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 8000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(5); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_ALAW && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 16000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(6); } else if (m_pMediaSettings->AudioSettings.uAudioCodec == COD5_ACT_ALAW && m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec == 8000 && m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample == 16) { m_cbAudioCodec.SetCurSel(7); } SetControlProperty(IDC_SLD_AUDIO_GAIN, m_pMediaSettings->AudioSettings.uGain); return TRUE; } BOOL CPageAudioSettings::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here ULONG uCh = m_local_param.channel; char text[64]; if(uCh==0xFF){ sprintf(text,"All Channels"); uCh=0; }else{ sprintf(text,"Channel:%d", uCh); } SetDlgItemText(IDC_STATIC_AUDIO_CH,text); m_pMediaSettings = m_pConnection->GetMediaSettings(uCh); m_pCod5Api = m_pConnection->GetCod5Api(); m_pMsgMgr = m_pMgrNVE->GetMsgManager(); CMN5_MULTI_COMMAND Cmds[NVE_MAX_MULTI_CMD_COUNT]; ULONG m_uCmdIndex = 0; ULONG i, j; Cmds[m_uCmdIndex++].uCommand = COD5_CPC_AUDIO_ATTR; Cmds[m_uCmdIndex++].uCommand = COD5_CPC_CODEC_TYPE; for (i=0; iCod5GetMultiCodecProperties(m_uCmdIndex, Cmds)) { m_pMsgMgr->PushErrorCodeF("Cod5GetMultiCodecProperties failed"); m_pMsgMgr->Show(TRUE); } for (i=0; iPushErrorCodeF("Cod5GetMultiCodecProperties failed. cmd[0x%08x]", Cmds[i].uCommand); m_pMsgMgr->Show(TRUE); } } for (j=0; jAudioSettings.Wfx.nSamplesPerSec = Cmds[j].uParam[0]; m_pMediaSettings->AudioSettings.Wfx.nAvgBytesPerSec = Cmds[j].uParam[1]; m_pMediaSettings->AudioSettings.Wfx.wBitsPerSample = (USHORT)((m_pMediaSettings->AudioSettings.Wfx.nAvgBytesPerSec/m_pMediaSettings->AudioSettings.Wfx.nSamplesPerSec)*8); break; case COD5_CPC_CODEC_TYPE: m_pMediaSettings->CodecSettings.uVideoCodec = Cmds[j].uParam[0]; m_pMediaSettings->AudioSettings.uAudioCodec = Cmds[j].uParam[1]; break; } } m_uCmdIndex = 0; Cmds[m_uCmdIndex++].uCommand = COD5_CAC_AUDIO_GAIN; for (i=0; iCod5GetMultiCodecAdjusts(m_uCmdIndex, Cmds)) { m_pMsgMgr->PushErrorCodeF("Cod5GetMultiCodecAdjusts failed"); m_pMsgMgr->Show(TRUE); } for (i=0; iPushErrorCodeF("Cod5GetMultiCodecAdjusts failed. cmd[0x%08x]", Cmds[i].uCommand); m_pMsgMgr->Show(TRUE); } } for (j=0; jAudioSettings.uGain = Cmds[j].uParam[0]; break; } } m_cbAudioCodec.AddString("PCM 16K 16bit"); m_cbAudioCodec.AddString("PCM 16K 8bit"); m_cbAudioCodec.AddString("PCM 8K 16bit"); m_cbAudioCodec.AddString("PCM 8K 8bit"); m_cbAudioCodec.AddString("uLaw 16K 8bit"); m_cbAudioCodec.AddString("uLaw 8K 8bit"); m_cbAudioCodec.AddString("aLaw 16K 8bit"); m_cbAudioCodec.AddString("aLaw 8K 8bit"); UpdateSetting(); OnChkAudEnable(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } BOOL CPageAudioSettings::SetControlProperty(UINT ctrl_slider, int value) { CSliderCtrl* ctrl=(CSliderCtrl* )GetDlgItem(ctrl_slider); ctrl->SetRangeMin(0,TRUE); ctrl->SetRangeMax(255,TRUE); ctrl->SetPos(value); ctrl->SetTicFreq(16); return TRUE; } void CPageAudioSettings::OnBtnReset() { // TODO: Add your control notification handler code here SetControlProperty(IDC_SLD_AUDIO_GAIN, 128); SetAudioGain(128); } void CPageAudioSettings::OnReleasedcaptureSldAudioGain(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here UpdateData(TRUE); SetAudioGain(m_uAudioGain); *pResult = 0; } BOOL CPageAudioSettings::SetAudioGain(ULONG uValue) { CMN5_MULTI_COMMAND cmd; cmd.uBoard = 0; cmd.uChannel = 0; cmd.uCommand = COD5_CAC_AUDIO_GAIN; cmd.uParam[0] = uValue; m_pCod5Api->Cod5SetMultiCodecAdjusts(1, &cmd); if (!cmd.bRet) { m_pMsgMgr->PushErrorCodeF("Cod5SetMultiCodecAdjusts. cmd[0x%08x]\n", cmd.uCommand); m_pMsgMgr->Show(TRUE); return FALSE; } m_pMediaSettings->AudioSettings.uGain = uValue; return TRUE; } void CPageAudioSettings::OnBtnAinApply() { // TODO: Add your control notification handler code here m_pConnection->ApplyProc(this); } void CPageAudioSettings::OnChkAudEnable() { // TODO: Add your control notification handler code here if (m_btnAudEnable.GetCheck()) { m_cbAudioCodec.EnableWindow(TRUE); m_sldAudioGain.EnableWindow(TRUE); m_btnReset.EnableWindow(TRUE); } else { m_cbAudioCodec.EnableWindow(FALSE); m_sldAudioGain.EnableWindow(FALSE); m_btnReset.EnableWindow(FALSE); } }