Пример #1
0
        public void MsgCallback(int lCommand, ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            switch (lCommand)
            {
            case CHCNetSDK.COMM_ALARM:
                ProcessCommAlarm(ref pAlarmer, pAlarmInfo, dwBufLen, pUser);
                break;

            case CHCNetSDK.COMM_ALARM_V30:
                ProcessCommAlarm_V30(ref pAlarmer, pAlarmInfo, dwBufLen, pUser);
                break;

            case CHCNetSDK.COMM_ALARM_RULE:
                this.BeginInvoke(AlarmInfo, "COMM_ALARM_RULE");
                break;

            case CHCNetSDK.COMM_TRADEINFO:
                this.BeginInvoke(AlarmInfo, "COMM_TRADEINFO");
                break;

            case CHCNetSDK.COMM_IPCCFG:
                this.BeginInvoke(AlarmInfo, "COMM_IPCCFG");
                break;

            case CHCNetSDK.COMM_IPCCFG_V31:
                this.BeginInvoke(AlarmInfo, "COMM_IPCCFG_V31");
                break;

            default:
                break;
            }
        }
Пример #2
0
        public void RemoteDisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReserved)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            if (!m_bJpegCapture)
            {
                return;
            }
            else
            {
                uint nLastErr = 100;
                // save picture as you want
                if (!PlayCtrl.PlayM4_ConvertToJpegFile(pBuf, nSize, nWidth, nHeight, nType, "C:/Capture.jpg"))
                {
                    //Debug.WriteLine("PlayM4_ConvertToJpegFile fail");
                    nLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                    this.BeginInvoke(AlarmInfo, "Jpeg Capture fail");
                }
                else
                {
                    this.BeginInvoke(AlarmInfo, "Jpeg Capture Succ");
                    //Debug.WriteLine("PlayM4_ConvertToJpegFile Succ");
                }
            }

            m_bJpegCapture = false;
        }
Пример #3
0
        public void ProcessCommAlarm(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            CHCNetSDK.NET_DVR_ALARMINFO struAlarmInfo = new CHCNetSDK.NET_DVR_ALARMINFO();

            struAlarmInfo = (CHCNetSDK.NET_DVR_ALARMINFO)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO));

            string str;

            switch (struAlarmInfo.dwAlarmType)
            {
            case 0:
                this.BeginInvoke(AlarmInfo, "sensor alarm");
                break;

            case 1:
                this.BeginInvoke(AlarmInfo, "hard disk full");
                break;

            case 2:
                this.BeginInvoke(AlarmInfo, "video lost");
                break;

            case 3:
                str  = "";
                str += pAlarmer.sDeviceIP;
                str += " motion detection";
                this.BeginInvoke(AlarmInfo, str);
                m_bJpegCapture = true;
                break;

            case 4:
                this.BeginInvoke(AlarmInfo, "hard disk unformatted");
                break;

            case 5:
                this.BeginInvoke(AlarmInfo, "hard disk error");
                break;

            case 6:
                this.BeginInvoke(AlarmInfo, "tampering detection");
                break;

            case 7:
                this.BeginInvoke(AlarmInfo, "unmatched video output standard");
                break;

            case 8:
                this.BeginInvoke(AlarmInfo, "illegal operation");
                break;

            default:
                this.BeginInvoke(AlarmInfo, "Unknow alarm");
                break;
            }
        }
Пример #4
0
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            switch (dwDataType)
            {
            case CHCNetSDK.NET_DVR_SYSHEAD:         // sys head
                if (dwBufSize > 0)
                {
                    //获取播放句柄 Get the port to play
                    if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "PlayM4_GetPort failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                        break;
                    }

                    //设置流播放模式 Set the stream mode: real-time stream mode
                    if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "Set STREAME_REALTIME mode failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                    }

                    //打开码流,送入头数据 Open stream
                    if (!PlayCtrl.PlayM4_OpenStream(m_lPort, pBuffer, dwBufSize, 2 * 1024 * 1024))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "PlayM4_OpenStream failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                        break;
                    }

                    //设置显示缓冲区个数 Set the display buffer number
                    if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "PlayM4_SetDisplayBuf failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                    }

                    //设置显示模式 Set the display mode
                    if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0 /* COLORREF(0)*/))    //play off screen
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "PlayM4_SetOverlayMode failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                    }

                    //设置解码回调函数,获取解码后音视频原始数据 Set callback function of decoded data
                    m_fDisplayFun = new PlayCtrl.DECCBFUN(DecCallbackFUN);
                    if (!PlayCtrl.PlayM4_SetDecCallBackEx(m_lPort, m_fDisplayFun, IntPtr.Zero, 0))
                    {
                        this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
                    }

                    //开始解码 Start to play
                    if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str      = "PlayM4_Play failed, error code= " + iLastErr;
                        this.BeginInvoke(AlarmInfo, str);
                        break;
                    }
                }
                break;

            case CHCNetSDK.NET_DVR_STREAMDATA:         // video stream data
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    for (int i = 0; i < 999; i++)
                    {
                        //送入码流数据进行解码 Input the stream data to decode
                        if (!PlayCtrl.PlayM4_InputData(m_lPort, pBuffer, dwBufSize))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str      = "PlayM4_InputData failed, error code= " + iLastErr;
                            Thread.Sleep(2);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                break;

            default:
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    //送入其他数据 Input the other data
                    for (int i = 0; i < 999; i++)
                    {
                        if (!PlayCtrl.PlayM4_InputData(m_lPort, pBuffer, dwBufSize))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str      = "PlayM4_InputData failed, error code= " + iLastErr;
                            Thread.Sleep(2);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                break;
            }
        }
Пример #5
0
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            IntPtr      pObject   = new IntPtr();
            GCHandle    hObject   = new GCHandle();

            hObject = GCHandle.Alloc(pBuffer, GCHandleType.Pinned);

            pObject = hObject.AddrOfPinnedObject();
            switch (dwDataType)
            {
            case CHCNetSDK.NET_DVR_SYSHEAD:         // sys head
                if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
                {
                    MessageBox.Show("Get Port Fail");
                }

                if (dwBufSize > 0)
                {
                    //set as stream mode, real-time stream under preview
                    if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
                    {
                        //this.Dispatcher.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
                    }
                    //start player
                    if (!PlayCtrl.PlayM4_OpenStream(m_lPort, pObject, dwBufSize, 320 * 280))
                    {
                        m_lPort = -1;
                        //this.Dispatcher.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
                        break;
                    }

                    m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
                    if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
                    {
                        //this.Dispatcher.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
                    }


                    if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
                    {
                        m_lPort = -1;
                        //this.Dispatcher.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
                        break;
                    }
                }

                break;

            case CHCNetSDK.NET_DVR_STREAMDATA:         // video stream data
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    try
                    {
                        //送入码流数据进行解码 Input the stream data to decode
                        PlayCtrl.PlayM4_InputData(m_lPort, pBuffer, dwBufSize);
                    }
                    catch (Exception e)
                    {
                        throw;
                    }
                }
                break;

            case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA:         //  Audio Stream Data
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, pObject, dwBufSize))
                    {
                        //this.Dispatcher.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
                    }
                }

                break;

            default:
                break;
            }
            if (hObject.IsAllocated)
            {
                hObject.Free();
            }
        }
Пример #6
0
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            switch (dwDataType)
            {
            case CHCNetSDK.NET_DVR_SYSHEAD:         // sys head
                if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
                {
                    MessageBox.Show("Get Port Fail");
                }

                if (dwBufSize > 0)
                {
                    //set as stream mode, real-time stream under preview
                    if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
                    {
                        this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
                    }
                    //start player
                    if (!PlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024))
                    {
                        m_lPort = -1;
                        this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
                        break;
                    }
                    //set soft decode display callback function to capture
                    m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
                    if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
                    {
                        this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
                    }

                    //start play, set play window
                    this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");

                    if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
                    {
                        m_lPort = -1;
                        this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
                        break;
                    }

                    //set frame buffer number

                    if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
                    {
                        this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
                    }

                    //set display mode
                    if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0 /* COLORREF(0)*/))   //play off screen // todo!!!
                    {
                        this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
                    }
                }

                break;

            case CHCNetSDK.NET_DVR_STREAMDATA:         // video stream data
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    if (!PlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize))
                    {
                        this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
                    }
                }
                break;

            case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA:         //  Audio Stream Data
                if (dwBufSize > 0 && m_lPort != -1)
                {
                    if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize))
                    {
                        this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
                    }
                }

                break;

            default:
                break;
            }
        }
Пример #7
0
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            switch (dwDataType) {
                case CHCNetSDK.NET_DVR_SYSHEAD:     // sys head
                    if (!PlayCtrl.PlayM4_GetPort(ref m_lPort)) {
                        MessageBox.Show("Get Port Fail");
                    }

                    if (dwBufSize > 0) {
                        //set as stream mode, real-time stream under preview
                        if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME)) {
                            this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
                        }
                        //start player
                        if (!PlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024)) {
                            m_lPort = -1;
                            this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
                            break;
                        }
                        //set soft decode display callback function to capture
                        m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
                        if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun)) {
                            this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
                        }

                        //set frame buffer number
                        if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15)) {
                            this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
                        }

                        //start play, set play window
                        this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");

                        if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle)) {
                            m_lPort = -1;
                            this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
                            break;
                        }

                        //set display mode
                        if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/))//play off screen // todo!!!
                        {
                            this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
                        }
                    }

                    break;
                case CHCNetSDK.NET_DVR_STREAMDATA:     // video stream data
                    if (dwBufSize > 0 && m_lPort != -1) {
                        if (!PlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize)) {
                            this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
                        }
                    }
                    break;

                case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA:     //  Audio Stream Data
                    if (dwBufSize > 0 && m_lPort != -1) {
                        if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize)) {
                            this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
                        }
                    }

                    break;
                default:
                    break;
            }
        }
Пример #8
0
        private void ProcessCommAlarm_V30(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            MyDebugInfo alarmInfo = new MyDebugInfo(DebugInfo);
            CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfoV30 = new CHCNetSDK.NET_DVR_ALARMINFO_V30();

            struAlarmInfoV30 = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));

            string str;
            switch (struAlarmInfoV30.dwAlarmType) {
                case 0:
                    this.BeginInvoke(alarmInfo, "sensor alarm");
                    break;
                case 1:
                    this.BeginInvoke(alarmInfo, "hard disk full");
                    break;
                case 2:
                    str = "video lost on ";
                    str += getAlarmInfo(pAlarmer, struAlarmInfoV30);
                    this.BeginInvoke(alarmInfo, str);
                    playSound(alarmInfo, @"intel_alarm.wav");
                    break;
                case 3:
                    str = "motion detection on ";
                    str += getAlarmInfo(pAlarmer, struAlarmInfoV30);
                    this.BeginInvoke(alarmInfo, str);
                    playSound(alarmInfo, @"motion.wav");
                    break;
                case 4:
                    this.BeginInvoke(alarmInfo, "hard disk unformatted");
                    break;
                case 5:
                    this.BeginInvoke(alarmInfo, "hard disk error");
                    break;
                case 6:
                    str = "tampering detection on ";
                    str += getAlarmInfo(pAlarmer, struAlarmInfoV30);
                    this.BeginInvoke(alarmInfo, str);
                    playSound(alarmInfo, @"intel_alarm.wav");
                    break;
                case 7:
                    this.BeginInvoke(alarmInfo, "unmatched video output standard");
                    break;
                case 8:
                    this.BeginInvoke(alarmInfo, "illegal operation");
                    break;
                case 9:
                    this.BeginInvoke(alarmInfo, "video signal abnormal");
                    break;
                case 10:
                    this.BeginInvoke(alarmInfo, "record abnormal");
                    break;
                default:
                    this.BeginInvoke(alarmInfo, "Unknow alarm");
                    break;
            }
        }
Пример #9
0
 // Alarm callback
 public void MsgCallback(int lCommand, ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
 {
     MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
     switch (lCommand) {
         case CHCNetSDK.COMM_ALARM:
             ProcessCommAlarm(ref pAlarmer, pAlarmInfo, dwBufLen, pUser);
             break;
         case CHCNetSDK.COMM_ALARM_V30:
             ProcessCommAlarm_V30(ref pAlarmer, pAlarmInfo, dwBufLen, pUser);
             break;
         case CHCNetSDK.COMM_ALARM_RULE:
             this.BeginInvoke(AlarmInfo, "COMM_ALARM_RULE");
             break;
         case CHCNetSDK.COMM_TRADEINFO:
             this.BeginInvoke(AlarmInfo, "COMM_TRADEINFO");
             break;
         case CHCNetSDK.COMM_IPCCFG:
             this.BeginInvoke(AlarmInfo, "COMM_IPCCFG");
             break;
         case CHCNetSDK.COMM_IPCCFG_V31:
             this.BeginInvoke(AlarmInfo, "COMM_IPCCFG_V31");
             break;
         default:
             break;
     }
 }
Пример #10
0
        public void ProcessCommAlarm(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            CHCNetSDK.NET_DVR_ALARMINFO struAlarmInfo = new CHCNetSDK.NET_DVR_ALARMINFO();

            struAlarmInfo = (CHCNetSDK.NET_DVR_ALARMINFO)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO));

            string str;
            switch (struAlarmInfo.dwAlarmType) {
                case 0:
                    this.BeginInvoke(AlarmInfo, "sensor alarm");
                    break;
                case 1:
                    this.BeginInvoke(AlarmInfo, "hard disk full");
                    break;
                case 2:
                    this.BeginInvoke(AlarmInfo, "video lost");
                    break;
                case 3:
                    str = "";
                    str += pAlarmer.sDeviceIP;
                    str += " motion detection";
                    this.BeginInvoke(AlarmInfo, str);
                    m_bJpegCapture = true;
                    break;
                case 4:
                    this.BeginInvoke(AlarmInfo, "hard disk unformatted");
                    break;
                case 5:
                    this.BeginInvoke(AlarmInfo, "hard disk error");
                    break;
                case 6:
                    this.BeginInvoke(AlarmInfo, "tampering detection");
                    break;
                case 7:
                    this.BeginInvoke(AlarmInfo, "unmatched video output standard");
                    break;
                case 8:
                    this.BeginInvoke(AlarmInfo, "illegal operation");
                    break;
                default:
                    this.BeginInvoke(AlarmInfo, "Unknow alarm");
                    break;
            }
        }
Пример #11
0
 private void websocket_Opened(object sender, EventArgs e)
 {
     MyDebugInfo alarmInfo = new MyDebugInfo(DebugInfo);
     this.BeginInvoke(alarmInfo, "Websocket connection opened");
 }
Пример #12
0
 private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
 {
     MyDebugInfo alarmInfo = new MyDebugInfo(DebugInfo);
     this.BeginInvoke(alarmInfo, "New message: " + e.Message);
 }
Пример #13
0
 private void websocket_Error(object sender, SuperSocket.ClientEngine.ErrorEventArgs e)
 {
     MyDebugInfo alarmInfo = new MyDebugInfo(DebugInfo);
     this.BeginInvoke(alarmInfo, "Websocket connection error: " + e.Exception.Message);
 }
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            string str;
            //下面数据处理建议使用委托的方式
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            switch (dwDataType)
            {
                case CHCNetSDK.NET_DVR_SYSHEAD:     // sys head
                    if (dwBufSize > 0)
                    {
                        //获取播放句柄 Get the port to play
                        if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "PlayM4_GetPort failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                            break;
                        }

                        //设置流播放模式 Set the stream mode: real-time stream mode
                        if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "Set STREAME_REALTIME mode failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                        }

                        //打开码流,送入头数据 Open stream
                        if (!PlayCtrl.PlayM4_OpenStream(m_lPort, pBuffer, dwBufSize, 2 * 1024 * 1024))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "PlayM4_OpenStream failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                            break;
                        }

                        //设置显示缓冲区个数 Set the display buffer number
                        if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "PlayM4_SetDisplayBuf failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                        }

                        //设置显示模式 Set the display mode
                        if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/)) //play off screen
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "PlayM4_SetOverlayMode failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                        }

                        //设置解码回调函数,获取解码后音视频原始数据 Set callback function of decoded data
                        m_fDisplayFun = new PlayCtrl.DECCBFUN(DecCallbackFUN);
                        if (!PlayCtrl.PlayM4_SetDecCallBackEx(m_lPort, m_fDisplayFun, IntPtr.Zero, 0))
                        {
                            this.form.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
                        }

                        //开始解码 Start to play
                        if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
                        {
                            iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                            str = "PlayM4_Play failed, error code= " + iLastErr;
                            this.form.BeginInvoke(AlarmInfo, str);
                            break;
                        }
                    }
                    break;
                case CHCNetSDK.NET_DVR_STREAMDATA:     // video stream data
                    if (dwBufSize > 0 && m_lPort != -1)
                    {
                        for (int i = 0; i < 999; i++)
                        {
                            //送入码流数据进行解码 Input the stream data to decode
                            if (!PlayCtrl.PlayM4_InputData(m_lPort, pBuffer, dwBufSize))
                            {
                                iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                                str = "PlayM4_InputData failed, error code= " + iLastErr;
                                Thread.Sleep(2);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    break;
                default:
                    if (dwBufSize > 0 && m_lPort != -1)
                    {
                        //送入其他数据 Input the other data
                        for (int i = 0; i < 999; i++)
                        {
                            if (!PlayCtrl.PlayM4_InputData(m_lPort, pBuffer, dwBufSize))
                            {
                                iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                                str = "PlayM4_InputData failed, error code= " + iLastErr;
                                Thread.Sleep(2);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    break;
            }
        }
Пример #15
0
        public void RemoteDisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReserved)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            if (!m_bJpegCapture) {
                return;
            } else {
                uint nLastErr = 100;
                // save picture as you want
                if (!PlayCtrl.PlayM4_ConvertToJpegFile(pBuf, nSize, nWidth, nHeight, nType, "C:/Capture.jpg")) {
                    //Debug.WriteLine("PlayM4_ConvertToJpegFile fail");
                    nLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                    this.BeginInvoke(AlarmInfo, "Jpeg Capture fail");
                } else {
                    this.BeginInvoke(AlarmInfo, "Jpeg Capture success");
                    //Debug.WriteLine("PlayM4_ConvertToJpegFile Succ");
                }

            }

            m_bJpegCapture = false;
        }
Пример #16
0
        public void RealDataCallBack(int lRealHandle, uint dwDataType, IntPtr pBuffer, uint dwBufSize, IntPtr pUser)
        {
            var alarmInfo = new MyDebugInfo(DebugInfo);

            switch (dwDataType)
            {
            case ChcNetSdk.NetDvrSyshead:         // sys head
                if (dwBufSize > 0)
                {
                    //获取播放句柄 Get the port to play
                    if (!PlayCtrl.PlayM4_GetPort(ref _mLPort))
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "PlayM4_GetPort failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                        break;
                    }

                    //设置流播放模式 Set the stream mode: real-time stream mode
                    if (!PlayCtrl.PlayM4_SetStreamOpenMode(_mLPort, PlayCtrl.StreameRealtime))
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "Set STREAME_REALTIME mode failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                    }

                    //打开码流,送入头数据 Open stream
                    if (!PlayCtrl.PlayM4_OpenStream(_mLPort, pBuffer, dwBufSize, 2 * 1024 * 1024))
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "PlayM4_OpenStream failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                        break;
                    }


                    //设置显示缓冲区个数 Set the display buffer number
                    if (!PlayCtrl.PlayM4_SetDisplayBuf(_mLPort, 15))
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "PlayM4_SetDisplayBuf failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                    }

                    //设置显示模式 Set the display mode
                    if (!PlayCtrl.PlayM4_SetOverlayMode(_mLPort, 0, 0 /* COLORREF(0)*/))    //play off screen
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "PlayM4_SetOverlayMode failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                    }

                    //设置解码回调函数,获取解码后音视频原始数据 Set callback function of decoded data
                    _mFDisplayFun = DecCallbackFun;
                    if (!PlayCtrl.PlayM4_SetDecCallBackEx(_mLPort, _mFDisplayFun, IntPtr.Zero, 0))
                    {
                        BeginInvoke(alarmInfo, "PlayM4_SetDisplayCallBack fail");
                    }

                    //开始解码 Start to play
                    if (!PlayCtrl.PlayM4_Play(_mLPort, _mPtrRealHandle))
                    {
                        _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                        _str      = "PlayM4_Play failed, error code= " + _iLastErr;
                        BeginInvoke(alarmInfo, _str);
                    }
                }
                break;

            case ChcNetSdk.NetDvrStreamdata:         // video stream data
                if (dwBufSize > 0 && _mLPort != -1)
                {
                    for (var i = 0; i < 999; i++)
                    {
                        //送入码流数据进行解码 Input the stream data to decode
                        if (!PlayCtrl.PlayM4_InputData(_mLPort, pBuffer, dwBufSize))
                        {
                            _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                            _str      = "PlayM4_InputData failed, error code= " + _iLastErr;
                            Thread.Sleep(2);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                break;

            default:
                if (dwBufSize > 0 && _mLPort != -1)
                {
                    //送入其他数据 Input the other data
                    for (var i = 0; i < 999; i++)
                    {
                        if (!PlayCtrl.PlayM4_InputData(_mLPort, pBuffer, dwBufSize))
                        {
                            _iLastErr = PlayCtrl.PlayM4_GetLastError(_mLPort);
                            _str      = "PlayM4_InputData failed, error code= " + _iLastErr;
                            Thread.Sleep(2);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                break;
            }
        }
Пример #17
0
 private void playSound(MyDebugInfo alarmInfo, String fileName)
 {
     try {
         System.Media.SoundPlayer player;
         if (soundCache.Contains(fileName)) {
             player = (System.Media.SoundPlayer)soundCache[fileName];
         } else {
             player = new System.Media.SoundPlayer(fileName);
             soundCache.Add(fileName, player);
         }
         if (player != null) {
             player.Play();
         }
     } catch (Exception e) {
         String currentPath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
         this.BeginInvoke(alarmInfo, "Error playing file " + currentPath + @"\" + fileName + ". " + e.Message);
     }
 }