示例#1
0
        public NvrPlayback(NvrUserSession userSession, bool isDebugEnabled)
        {
            NvrUserSession  = userSession;
            isDebugEnabled_ = isDebugEnabled;

            // Init timer, that will emit and take number of played frames from NVR SDK
            playedFramesTimer_ = new Timer(
                state => {
                uint unused      = 0;
                IntPtr outBuffer = IntPtr.Zero;
                try {
                    // Get playback frame count
                    outBuffer  = Marshal.AllocHGlobal(4);
                    bool isOk  = CHCNetSDK.NET_DVR_PlayBackControl_V40(playHandle_, CHCNetSDK.NET_DVR_PLAYGETFRAME, IntPtr.Zero, 0, outBuffer, ref unused);
                    int frames = (int)Marshal.PtrToStructure(outBuffer, typeof(int));
                    if (isOk && frames > 0)
                    {
                        LastPlayedFrame = frames;
                        OnFramePlayed?.BeginInvoke(this, frames, null, null);
                    }
                } finally {
                    Marshal.FreeHGlobal(outBuffer);
                }
            });
        }
        /// <summary>
        ///		Start Preview in realtime.
        ///		<para><paramref name="playWndHandle"/> - window handle, on fitch will be drawing.</para>
        ///		<para><paramref name="previewSettings"/> - preview settings.</para>
        /// </summary>
        public void StartPreview(IntPtr playWndHandle, NvrPreviewSettings previewSettings)
        {
            if (livePlayer_.RealPlayHandle != -1)
            {
                throw new NvrBadLogicException("Call StopPreview before calling StartPreview");
            }

            if (!NvrUserSession.IsSessionValid())
            {
                throw new NvrBadLogicException("Call StartPreview when NvrUserSession is invalid");
            }

            livePlayer_ = new LivePlayer(playWndHandle, previewSettings);

            CHCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO()
            {
                lChannel        = NvrUserSession.UserSessionState.SelectedChannelNum,
                dwStreamType    = livePlayer_.PreviewSettings.StreamType,
                dwLinkMode      = (uint)livePlayer_.PreviewSettings.LinkMode,
                bBlocked        = livePlayer_.PreviewSettings.IsBlocked,
                dwDisplayBufNum = livePlayer_.PreviewSettings.DisplayBufNum,
                byPreviewMode   = (byte)livePlayer_.PreviewSettings.PreviewMode
            };

            switch (previewSettings.PreviewHandleMode)
            {
            case PreviewHandleType.Direct:
                livePlayer_.RealDataCallBackFunc = null;
                previewInfo.hPlayWnd             = livePlayer_.PlayWndHandlePtr;
                break;

            case PreviewHandleType.CallBack:
                livePlayer_.RealDataCallBackFunc = new CHCNetSDK.REALDATACALLBACK(realDataCallBack);                        // Real-time stream callback function
                previewInfo.hPlayWnd             = IntPtr.Zero;
                break;
            }

            livePlayer_.RealPlayHandle = CHCNetSDK.NET_DVR_RealPlay_V40(NvrUserSession.UserSessionState.UserId, ref previewInfo, livePlayer_.RealDataCallBackFunc, IntPtr.Zero);

            if (livePlayer_.RealPlayHandle == -1)
            {
                throw new NvrSdkException(CHCNetSDK.NET_DVR_GetLastError(), "NET_DVR_RealPlay_V40 failed: " + livePlayer_.RealPlayHandle);
            }

            if (previewSettings.PreviewHandleMode == PreviewHandleType.Direct)
            {
                livePlayer_.DrawCallBackFunc = new CHCNetSDK.DRAWFUN(drawCallBack);
                if (!CHCNetSDK.NET_DVR_RigisterDrawFun(livePlayer_.RealPlayHandle, livePlayer_.DrawCallBackFunc, 0))
                {
                    invokeOnPreviewErrorEvent(PlayCtrl.PlayM4_GetLastError(livePlayer_.RealPlayPort), "NET_DVR_RigisterDrawFun failed");
                }
            }

            debugInfo("NET_DVR_RealPlay_V40 succ!");
        }
		public NvrRecordLabels(NvrUserSession userSession, bool isDebugEnabled)
		{
			NvrUserSession = userSession;
			isDebugEnabled_ = isDebugEnabled;
		}
 public NvrLivePlayer(NvrUserSession userSession, bool isDebugEnabled)
 {
     NvrUserSession  = userSession;
     isDebugEnabled_ = isDebugEnabled;
     livePlayer_     = LivePlayer.Default();
 }
示例#5
0
 public NvrSettings(NvrUserSession userSession, bool isDebugEnabled)
 {
     NvrUserSession  = userSession;
     isDebugEnabled_ = isDebugEnabled;
 }