📄 remotechannelconfig.cpp
字号:
// RemoteChannelConfig.cpp : implementation file
//
#include "stdafx.h"
#include "newclient.h"
#include "RemoteChannelConfig.h"
#include "RemoteRecordPlanConfig.h"
#include "RemoteDetectConfig.h"
#include "RemoteHideConfig.h"
#include "RemoteHideAlarm.h"
#include "VideoLost.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
LPNET_DVR_MOTION lpMotionDetect;
LPNET_DVR_HIDEALARM lpHideAlarm;
LPNET_DVR_VILOST lpVILost;
WORD getFrameI(DWORD selFrameRate)
{
WORD nRet = 0;
switch(selFrameRate)
{
case 0:
nRet = 25;
break;
case 6:
nRet = 2;
break;
case 7:
nRet = 4;
break;
case 8:
nRet = 6;
break;
case 9:
nRet = 8;
break;
case 10:
nRet = 10;
break;
case 11:
nRet = 12;
break;
case 12:
nRet = 16;
break;
case 13:
nRet = 20;
break;
case 14:
nRet = 15;
break;
case 15:
nRet = 18;
break;
case 16:
nRet = 22;
break;
default:
nRet = 1;
}
nRet *= 4;
return nRet;
}
/////////////////////////////////////////////////////////////////////////////
// CRemoteChannelConfig dialog
CRemoteChannelConfig::CRemoteChannelConfig(CWnd* pParent /*=NULL*/)
: CDialog(CRemoteChannelConfig::IDD, pParent)
{
//{{AFX_DATA_INIT(CRemoteChannelConfig)
m_ChannelName = _T("");
m_bOsd = FALSE;
m_bRecord = FALSE;
m_bHide = FALSE;
m_channame_x = 0;
m_channame_y = 0;
m_bChanname = FALSE;
m_bDispWeek = FALSE;
m_osd_y = 0;
m_osd_x = 0;
m_bMotion = FALSE;
m_bHideAlarm = FALSE;
m_BitRate = 0;
m_bVideoLost = FALSE;
m_FrameI = 0;
m_bEventEffect = FALSE;
//}}AFX_DATA_INIT
}
void CRemoteChannelConfig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRemoteChannelConfig)
DDX_Control(pDX, IDC_COMBOCOMPRESS, m_CompressCombo);
DDX_Control(pDX, IDC_COMBOBPINTERVAL, m_BPIntervalCtrl);
DDX_Control(pDX, IDC_PRERECORDTIME, m_PreRecordTime);
DDX_Control(pDX, IDC_DELAY, m_DelayCtrl);
DDX_Control(pDX, IDC_OSDTYPE, m_OsdType);
DDX_Control(pDX, IDC_OSDATTRIB, m_OsdAttrib);
DDX_Control(pDX, IDC_COMBOCOPYCHAN, m_CopyChannelCtrl);
DDX_Control(pDX, IDC_COMCHAN, m_ChannelCtrl);
DDX_Control(pDX, IDC_COMBOSTREAMTYPE, m_StreamTypeCtrl);
DDX_Control(pDX, IDC_COMBORESOLUTION, m_ResolutionCtrl);
DDX_Control(pDX, IDC_COMBOIMAGEQUALITY, m_ImageQualityCtrl);
DDX_Control(pDX, IDC_COMBOBITRATETYPE, m_BitRateTypeCtrl);
DDX_Control(pDX, IDC_COMBOFRAMERATE, m_FrameRateCtrl);
DDX_Control(pDX, IDC_COMBOBITRATE, m_BitRateCtrl);
DDX_Text(pDX, IDC_CHANNELNAME, m_ChannelName);
DDX_Check(pDX, IDC_CHKOSD, m_bOsd);
DDX_Check(pDX, IDC_CHKRECORD, m_bRecord);
DDX_Check(pDX, IDC_CHKHIDEAREA, m_bHide);
DDX_Text(pDX, IDC_CHANNAME_X, m_channame_x);
DDX_Text(pDX, IDC_CHANNAME_Y, m_channame_y);
DDX_Check(pDX, IDC_CHKCHANNAME, m_bChanname);
DDX_Check(pDX, IDC_CHKDISPWEEK, m_bDispWeek);
DDX_Text(pDX, IDC_OSD_Y, m_osd_y);
DDX_Text(pDX, IDC_OSD_X, m_osd_x);
DDX_Check(pDX, IDC_CHKMOTION, m_bMotion);
DDX_Check(pDX, IDC_CHKHIDEALARM, m_bHideAlarm);
DDX_Text(pDX, IDC_EDITBITRATE, m_BitRate);
DDX_Check(pDX, IDC_CHKVIDEOLOST, m_bVideoLost);
DDX_Text(pDX, IDC_EDITFRAMEI, m_FrameI);
DDX_Check(pDX, IDC_CHECKEVENT, m_bEventEffect);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRemoteChannelConfig, CDialog)
//{{AFX_MSG_MAP(CRemoteChannelConfig)
ON_BN_CLICKED(IDC_BUTCHANCOPY, OnButchancopy)
ON_BN_CLICKED(IDC_BUTMOTION, OnButmotion)
ON_BN_CLICKED(IDC_BUTRECORD, OnButrecord)
ON_BN_CLICKED(IDC_CHKRECORD, OnChkrecord)
ON_BN_CLICKED(IDC_BUTHIDE, OnButhide)
ON_BN_CLICKED(IDC_CHKHIDEAREA, OnChkhidearea)
ON_BN_CLICKED(IDC_CHKOSD, OnChkosd)
ON_BN_CLICKED(IDC_CHKCHANNAME, OnChkchanname)
ON_CBN_SELCHANGE(IDC_COMCHAN, OnSelchangeComchan)
ON_CBN_SELCHANGE(IDC_COMBOCOPYCHAN, OnSelchangeCombocopychan)
ON_BN_CLICKED(IDCHANCFGOK, OnChancfgok)
ON_BN_CLICKED(IDCHANCFGEXIT, OnChancfgexit)
ON_BN_CLICKED(IDC_CHKMOTION, OnChkmotion)
ON_BN_CLICKED(IDC_CHKHIDEALARM, OnChkhidealarm)
ON_BN_CLICKED(IDC_BUTHIDEALARM, OnButhidealarm)
ON_CBN_SELCHANGE(IDC_COMBOBITRATE, OnSelchangeCombobitrate)
ON_BN_CLICKED(IDC_CHKVIDEOLOST, OnChkvideolost)
ON_BN_CLICKED(IDC_BUTVILOST, OnButvilost)
ON_CBN_SELCHANGE(IDC_COMBOFRAMERATE, OnSelchangeComboframerate)
ON_CBN_SELCHANGE(IDC_COMBOCOMPRESS, OnSelchangeCombocompress)
ON_BN_CLICKED(IDC_SAVEPARA, OnSavepara)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRemoteChannelConfig message handlers
BOOL CRemoteChannelConfig::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CRect rc(0, 0, 0, 0);
GetParent()->GetClientRect(&rc);
((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
MoveWindow(&rc);
m_CompressCombo.ResetContent();
m_CompressCombo.AddString("Major(Record)");
m_CompressCombo.AddString("Minor(Net)");
if (serverinfo[m_iServer].m_dwDevSoftVersion >= 0x20001)
{
m_CompressCombo.AddString("Event");
}
CString sTemp;
char cTemp[100];
m_nChanSel = 0;
m_nCopyChanNum = -1;
m_CopyChannelCtrl.ResetContent();
m_ChannelCtrl.ResetContent();
sTemp.Format(_T("All Channels"));
m_CopyChannelCtrl.AddString(sTemp);
for(int i=0; i<m_iChannelnumber; i++)
{
sTemp.Format("Channel%d", (m_lStartChannel+i));
m_ChannelCtrl.AddString(sTemp);
m_CopyChannelCtrl.AddString(sTemp);
m_nChanNum = i+m_lStartChannel;
bSetChannelPara[i] = FALSE;
bGetChannelPara[i] = FALSE;
if(m_bConnectServer)
{
if(GetChanPara(i))
{
bGetChannelPara[i] = TRUE;
}
else
{
sTemp.Format("Get channel%d parameters failed!",m_lStartChannel+i);
TRACE(sTemp);
}
}
}
m_ChannelCtrl.SetCurSel(m_nChanSel);
m_CompressCombo.SetCurSel(0);
m_CopyChannelCtrl.SetCurSel(m_nChanSel);
m_nChanNum = m_nChanSel+m_lStartChannel;
if(bGetChannelPara[m_nChanSel])
{
//
if((m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate >> 31) && 0x01)
{
GetDlgItem(IDC_EDITBITRATE)->EnableWindow(TRUE);
m_BitRateCtrl.SetCurSel(22); //self-define bitrate
m_BitRate = m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate & 0x7fffffff;
}
else
{
m_BitRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoBitrate-2);
m_BitRate = 0;
GetDlgItem(IDC_EDITBITRATE)->EnableWindow(FALSE);
}
m_ResolutionCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byResolution);
m_StreamTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byStreamType);
m_ImageQualityCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byPicQuality);
m_BitRateTypeCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byBitrateType);
m_FrameRateCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.dwVideoFrameRate);
m_BPIntervalCtrl.SetCurSel(m_compressioncfg[m_nChanSel].struRecordPara.byIntervalBPFrame);
m_FrameI = m_compressioncfg[m_nChanSel].struRecordPara.wIntervalFrameI;
m_bRecord = m_record[m_nChanSel].dwRecord;
GetDlgItem(IDC_BUTRECORD)->EnableWindow(m_bRecord);
m_DelayCtrl.SetCurSel(m_record[m_nChanSel].dwRecordTime);
m_PreRecordTime.SetCurSel(m_record[m_nChanSel].dwPreRecordTime);
ZeroMemory(cTemp, 100);
memcpy(cTemp, m_piccfg[m_nChanSel].sChanName, NAME_LEN);
m_ChannelName.Format("%s",cTemp);
m_bHide = m_piccfg[m_nChanSel].dwEnableHide;
GetDlgItem(IDC_BUTHIDE)->EnableWindow(m_bHide);
m_bMotion = m_piccfg[m_nChanSel].struMotion.byEnableHandleMotion;
GetDlgItem(IDC_BUTMOTION)->EnableWindow(m_bMotion);
if(m_piccfg[m_nChanSel].struHideAlarm.dwEnableHideAlarm > 0)
{
m_bHideAlarm = TRUE;
}
else
{
m_bHideAlarm = FALSE;
}
GetDlgItem(IDC_BUTHIDEALARM)->EnableWindow(m_bHideAlarm);
m_bChanname = m_piccfg[m_nChanSel].dwShowChanName;
m_channame_x = m_piccfg[m_nChanSel].wShowNameTopLeftX;
m_channame_y = m_piccfg[m_nChanSel].wShowNameTopLeftY;
m_bOsd = m_piccfg[m_nChanSel].dwShowOsd;
m_osd_x = m_piccfg[m_nChanSel].wOSDTopLeftX;
m_osd_y = m_piccfg[m_nChanSel].wOSDTopLeftY;
m_bDispWeek = m_piccfg[m_nChanSel].byDispWeek;
m_OsdAttrib.SetCurSel(m_piccfg[m_nChanSel].byOSDAttrib-1);
m_OsdType.SetCurSel(m_piccfg[m_nChanSel].byOSDType);
EnableChanname(m_bChanname);
EnableOsd(m_bOsd);
m_bVideoLost = m_piccfg[m_nChanSel].struVILost.byEnableHandleVILost;
GetDlgItem(IDC_BUTVILOST)->EnableWindow(m_bVideoLost);
GetDlgItem(IDCHANCFGOK)->EnableWindow(TRUE);
}
else
{
GetDlgItem(IDCHANCFGOK)->EnableWindow(FALSE);
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CRemoteChannelConfig::GetChanPara(int nIndex)
{
CString sTemp;
DWORD dwReturned;
memset(&m_piccfg[nIndex], 0, sizeof(m_piccfg[nIndex]));
if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_PICCFG_EX, m_nChanNum, &m_piccfg[nIndex], sizeof(NET_DVR_PICCFG_EX), &dwReturned))
{
sTemp.Format("%d : NET_DVR_GET_PICCFG_EX = %d \n", m_nChanNum, NET_DVR_GetLastError());
TRACE(sTemp);
}
memset(&m_compressioncfg[nIndex], 0, sizeof(m_compressioncfg[nIndex]));
if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_COMPRESSCFG_EX, m_nChanNum, &m_compressioncfg[nIndex], sizeof(NET_DVR_COMPRESSIONCFG_EX), &dwReturned))
{
sTemp.Format("%d : ERROR: NET_DVR_GET_COMPRESSCFG_EX = %d \n", m_nChanNum, NET_DVR_GetLastError());
TRACE(sTemp);
}
memset(&m_compressioncfg_new[nIndex], 0, sizeof(m_compressioncfg_new[nIndex]));
if (serverinfo[m_iServer].m_dwDevSoftVersion >= 0x20001)
{
if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_EVENTCOMPCFG, m_nChanNum, &m_compressioncfg_new[nIndex], sizeof(NET_DVR_COMPRESSIONCFG), &dwReturned))
{
sTemp.Format("%d : ERROR: NET_DVR_GET_EVENTCOMPCFG = %d \n", m_nChanNum, NET_DVR_GetLastError());
TRACE(sTemp);
}
}
memset(&m_record[nIndex], 0, sizeof(m_record[nIndex]));
if(!NET_DVR_GetDVRConfig(m_lServerID, NET_DVR_GET_RECORDCFG, m_nChanNum, &m_record[nIndex], sizeof(NET_DVR_RECORD), &dwReturned))
{
sTemp.Format("%d : ERROR: NET_DVR_GET_RECORDCFG = %d \n", m_nChanNum, NET_DVR_GetLastError());
TRACE(sTemp);
}
return TRUE;
}
void CRemoteChannelConfig::OnButchancopy()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int nTemp = 0;
if(m_nCopyChanNum == m_nChanSel)
return;
if(m_nCopyChanNum == -1)
{
for(int i=0; i<m_iChannelnumber; i++)
{
if(i == m_nChanSel)
continue;
int sel = m_CompressCombo.GetCurSel();
switch(sel) {
case 0:
m_compressioncfg[i].struRecordPara.byStreamType = m_StreamTypeCtrl.GetCurSel();
m_compressioncfg[i].struRecordPara.byPicQuality = m_ImageQualityCtrl.GetCurSel();
if(m_BitRateCtrl.GetCurSel() == 22) //self-define bitrate
{
nTemp = m_BitRate;
nTemp |= 0x80000000;
m_compressioncfg[i].struRecordPara.dwVideoBitrate = nTemp;
}
else
{
m_compressioncfg[i].struRecordPara.dwVideoBitrate = m_BitRateCtrl.GetCurSel()+2;
}
m_compressioncfg[i].struRecordPara.byResolution = m_ResolutionCtrl.GetCurSel();
m_compressioncfg[i].struRecordPara.dwVideoFrameRate = m_FrameRateCtrl.GetCurSel();
m_compressioncfg[i].struRecordPara.byBitrateType = m_BitRateTypeCtrl.GetCurSel();
m_compressioncfg[i].struRecordPara.byIntervalBPFrame = m_BPIntervalCtrl.GetCurSel();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -