示例#1
0
 public void StartStream(NewFrameCallback callback, Notifyier connectionErrorCb, double fps = 60)
 {
     connectionDownCb = connectionErrorCb;
     if (stream != null && LoopActive == false)
     {
         x = new Thread(() => Loop(callback, fps));
         x.Start();
     }
     else
     {
         SwapCallbacks(callback, connectionErrorCb);
     }
 }
示例#2
0
        private void Loop(NewFrameCallback callback, double fps)
        {
            cb = callback;
            try
            {
                LoopActive = true;
                DateTime lastFrame = DateTime.Now;
                int      freq      = (int)Math.Round(1000 / fps);
                while (LoopActive)
                {
                    if ((DateTime.Now - lastFrame).Milliseconds >= freq)
                    {
                        try
                        {
                            isReceiving = true;
                            ReceiveFrame();
                            isReceiving = false;
                            cb(_frame);
                        }
                        catch (TaskCanceledException)
                        {
                            isReceiving = false;
                            Disconnect();
                            return;
                        }
                        catch (IOException)
                        {
                            isReceiving = false;
                            Disconnect();
                            return;
                        }
                        lastFrame = DateTime.Now;
                    }
                    else
                    {
                        Thread.Sleep(1);
                    }
                }
            }
            catch (ThreadAbortException)
            {
                //ConnectionStatusChanged.Invoke(false);
                Disconnect();

                return;
            }
        }
示例#3
0
 public void SwapCallbacks(NewFrameCallback callback, Notifyier connectionErrorCb)
 {
     cb = callback;
     connectionDownCb = connectionErrorCb;
 }