예제 #1
0
        public static bool CleanupCard()
        {
            lock (mInitObj)
            {
                if (mRefCount > 0)
                {
                    mRefCount--;
                }

                if (mSDKInit && mRefCount <= 0)
                {
                    if (HikClientSDKWrap.MP4_ClientCleanup())
                    {
                        mSDKInit  = false;
                        mRefCount = 0;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
        }
예제 #2
0
        public static bool InitCard(short serverPort, short clientPort)
        {
            lock (mInitObj)
            {
                mRefCount++;
                if (!mSDKInit)
                {
                    if (HikClientSDKWrap.MP4_ClientSetNetPort(serverPort, clientPort))
                    {
                        mSDKInit = HikClientSDKWrap.MP4_ClientStartup(WM_MYCOMMAND, IntPtr.Zero);
                        //if (mSDKInit)
                        {
                            mServerPort = serverPort;
                            mClientPort = clientPort;

                            HikClientSDKWrap.MP4_ClientSetWait(500, 3);
                            bool f = HikClientSDKWrap.MP4_ClientSetTTL(64);

                            mSDKInit = true;
                        }
                    }
                }
                return(mSDKInit);
            }
        }
예제 #3
0
 protected override bool PrepStop()
 {
     if (mPlayHandle > -1)
     {
         //if (HikClientSDKWrap.MP4_ClientStopCapture(mPlayHandle))
         if (HikClientSDKWrap.MP4_ClientSetCapPicCallBack(mPlayHandle, null))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #4
0
 protected override bool PrepClose()
 {
     if (mPlayHandle > -1)
     {
         //HikClientSDKWrap.MP4_ClientSetCapPicCallBack(mPlayHandle, null);
         if (HikClientSDKWrap.MP4_ClientStop(mPlayHandle))
         {
             mPlayHandle = -1;
             return(true);
         }
     }
     return(false);
 }
예제 #5
0
        protected override bool PrepOpen(object target)
        {
            if (mPlayHandle < 0)
            {
                mClientVideoInfo.m_hShowVideo = HWnd;

                mPlayHandle = HikClientSDKWrap.MP4_ClientStart(ref mClientVideoInfo, null);
                if (mPlayHandle > -1)
                {
                    int state = -1;

                    while ((state = HikClientSDKWrap.MP4_ClientGetState(mPlayHandle)) < 2)
                    {
                        Thread.Sleep(5);
                    }

                    if (state == 2)
                    {
                        //HikClientSDKWrap.MP4_ClientSetCapPicCallBack(mPlayHandle, mCapPicFun);

                        HikClientSDKWrap.MP4_ClientSetQuality(mPlayHandle, HikClientSDKWrap.PicQuality.LOWQUALITY);
                        HikClientSDKWrap.MP4_ClientSetPlayDelay(mPlayHandle, 0);
                        HikClientSDKWrap.MP4_ClientSetBufferNum(mPlayHandle, 0);

                        return(true);
                    }
                    else
                    {
                        switch (state)
                        {
                        case 3:
                            throw new Exception("异常退出!");

                        case 4:
                            throw new Exception("接收完毕,退出!");

                        case 5:
                            throw new Exception("无法联系服务端!");

                        case 6:
                            throw new Exception("服务端拒绝访问!");

                        default:
                            throw new Exception("发生未知错误!");
                        }
                    }
                }
            }
            return(false);
        }