Esempio n. 1
0
        //void factory_Opened(object sender, EventArgs e)
        //{

        //imageSeqeuenceNumber = 0;
        //phoneService.BeginStartSession(0, (int)resolution.Width, (int)resolution.Height,
        //    a =>
        //    {
        //        phoneService.EndStartSession(a);
        //        cam.PreviewFrameAvailable += cam_PreviewFrameAvailable;
        //    }, null);
        //}

        void cam_PreviewFrameAvailable(ICameraCaptureDevice sender, object args)
        {
            if (Environment.TickCount - lastSendImageTick < sendImageInterval)
            {
                return;
            }

            int[] pixels = new int[(int)Math.Ceiling(resolution.Width * resolution.Height)];
            sender.GetPreviewBufferArgb(pixels);

            List <byte> buffer = new List <byte>(pixels.Length * 4);

            foreach (int v in pixels)
            {
                buffer.AddRange(BitConverter.GetBytes(v));
            }

            if (phoneService != null)
            {
                phoneService.BeginSendImage(DateTime.UtcNow.GetUnixTimestamp() - App.TimeDifference, buffer.ToArray(), SendImageCompleted, null);
            }
            sendImageInterval += 100;
            //Dispatcher.BeginInvoke(() => { txtDebug.Text = "sendImageInterval=" + sendImageInterval; });
        }