Пример #1
0
        /////////////////////////////////////////////////////////
        // Image Acquierd event callback function.
        //
        void camStream_ImageAcquired(CameraStream sender, ImageAcquiredEventArgs e)
        {
            CameraDevice parent      = sender.Parent;
            int          cameraIndex = -1;

            for (int i = 0; i < this.camCount; i++)
            {
                if (parent == this.arrayCamDevice[i])
                {
                    cameraIndex = i;
                    break;
                }
            }
            if (cameraIndex == -1)
            {
                return;
            }

            // Disp Block ID
            DispTextBox(this.arrayTextBoxBlockId[cameraIndex], e.ImageInfo.BlockID.ToString());

            // Increment fps count
            Interlocked.Increment(ref this.arrayFpsCount[cameraIndex]);

            if (cameraIndex == 0)
            {
                if (id != e.ImageInfo.BlockID)
                {
                    this.flag = true;
                    id        = e.ImageInfo.BlockID;
                }
            }
        }
Пример #2
0
        public Main()
        {
            InitComp(); // Execute the method 'InitComp' for initialize User Interface elements
            CrossConnectivity.Current.ConnectivityChanged += Current_ConnectivityChanged;

            ms = new MailSender();

            cameraStream = DependencyService.Get <CameraStream>();
            cameraStream.SetupLiveCameraStream();
            cameraStream.SetFrontCam();
        }
 private void TestRequestCameraStream(CameraStream s, CameraProtocols protocol, int width, int height,
                                      CameraAuthorizationTypes authorizationType, VideoCodecs videoCodec, AudioCodecs audioCodec)
 {
     Assert.Equal(protocol, s.Protocol);
     Assert.NotNull(s.Resolution);
     Assert.Equal(width, s.Resolution.Width);
     Assert.Equal(height, s.Resolution.Height);
     Assert.Equal(authorizationType, s.AuthorizationType);
     Assert.Equal(videoCodec, s.VideoCodec);
     Assert.Equal(audioCodec, s.AudioCodec);
 }
 /// <summary>
 /// Inits the camera from iOS Dependancy.
 /// </summary>
 public static void InitCamera()
 {
     try
     {
         cameraStream = DependencyService.Get <CameraStream>();
         cameraStream.AuthorizeCameraUse();
         cameraStream.SetupLiveCameraStream();
         cameraStream.SetFrontCam();
     }
     catch (Exception)
     {
         //Thread.CurrentThread.Abort();
     }
 }
Пример #5
0
        public async Task NotProvideDataForUnsubscribedObservers()
        {
            videoMock.Setup(v => v.QueryFrame()).Returns(() => new Image <Rgb, byte>(100, 100).Mat);
            var camera = new CameraStream(videoMock.Object, CancellationToken.None, loggerMock.Object,
                                          TimeSpan.FromMilliseconds(10));
            var observer = new TestImageObserver <Rgb>();

            using (camera.Subscribe(observer))
            {
                await Task.Delay(TimeSpan.FromMilliseconds(1000));
            }

            var after = DateTime.Now;

            Assert.True(observer.ReceivedItems.Count > 0);
            Assert.DoesNotContain(observer.ReceivedItems, x => x.Value >= after);
        }
Пример #6
0
        public async Task NotifyObserversIndependently()
        {
            var cts     = new CancellationTokenSource();
            var invoked = false;

            videoMock.Setup(v => v.QueryFrame()).Returns(() =>
            {
                if (invoked)
                {
                    Task.Delay(TimeSpan.MaxValue, cts.Token).Wait(cts.Token);
                    return(null);
                }

                invoked = true;

                // ReSharper disable twice MethodSupportsCancellation
                Task.Delay(TimeSpan.FromMilliseconds(100)).Wait();
                Task.Run(async() =>
                {
                    await Task.Delay(TimeSpan.FromMilliseconds(100));
                    cts.Cancel();
                });

                return(new Image <Rgb, byte>(100, 100).Mat);
            });

            var observersCount = Environment.ProcessorCount - 2;
            var observers      = Enumerable.Range(0, observersCount)
                                 .Select(_ => new HeavyTestMatObserver(TimeSpan.FromMilliseconds(200)))
                                 .ToList();

            var camera = new CameraStream(videoMock.Object, cts.Token, loggerMock.Object, TimeSpan.FromMilliseconds(100));

            foreach (var observer in observers)
            {
                camera.Subscribe(observer);
            }

            await Task.Delay(TimeSpan.FromMilliseconds(300));

            for (var i = 1; i < observersCount; i++)
            {
                Assert.Single(observers[i].ReceivedItems);
                Assert.True(observers[0].ReceivedItems.First().Value - observers[i].ReceivedItems.First().Value < TimeSpan.FromMilliseconds(5));
            }
        }
Пример #7
0
        private static void Main(string[] args)
        {
            UpdateConfiguration(args);

            var infoTimer = new Timer(30000);

            infoTimer.Elapsed += Timer_Elapsed;

            infoTimer.Enabled = true;
            infoTimer.Start();

            var serverStub = new CameraStreamService();

            var server = new Grpc.Core.Server
            {
                Services =
                {
                    CameraStream.BindService(serverStub)
                },
                Ports = { new ServerPort(_serverEndpoint, _port, ServerCredentials.Insecure) }
            };

            server.Start();


            Console.WriteLine(
                $"OfCourseIStillLoveYou.Server is listening on {_serverEndpoint}:{_port}, waiting for incoming camera feed. Type exit for closing the server");

            var keyStroke = string.Empty;


            while (keyStroke != ExitCommand)
            {
                keyStroke = Console.ReadLine();

                if (!string.IsNullOrWhiteSpace(keyStroke) && keyStroke != ExitCommand)
                {
                }

                Task.Delay(100).Wait();
            }


            server.ShutdownAsync().Wait();
        }
Пример #8
0
        /////////////////////////////////////////////////////////
        // Buffer Busy event callback function.
        //
        void camStream_BufferBusyReceived(CameraStream sender, BufferBusyReceivedEventArgs e)
        {
            CameraDevice parent      = sender.Parent;
            int          cameraIndex = -1;

            for (int i = 0; i < this.camCount; i++)
            {
                if (parent == this.arrayCamDevice[i])
                {
                    cameraIndex = i;
                    break;
                }
            }
            if (cameraIndex == -1)
            {
                return;
            }

            DispLabel(this.arrayLabelErrorMessage[cameraIndex], "BusyBuffer", true);
        }
Пример #9
0
        /////////////////////////////////////////////////////////
        // Image Error event callback function.
        //
        void camStream_ImageErrorReceived(CameraStream sender, ImageErrorReceivedEventArgs e)
        {
            CameraDevice parent      = sender.Parent;
            int          cameraIndex = -1;

            for (int i = 0; i < this.camCount; i++)
            {
                if (parent == this.arrayCamDevice[i])
                {
                    cameraIndex = i;
                    break;
                }
            }
            if (cameraIndex == -1)
            {
                return;
            }

            DispLabel(this.arrayLabelErrorMessage[cameraIndex], e.ErrorStatus.ToString(), true);
        }
Пример #10
0
        public async Task CompleteTheStreamIfCancellationRequested()
        {
            videoMock.Setup(v => v.QueryFrame()).Returns(() => new Image <Rgb, byte>(100, 100).Mat);

            var cts    = new CancellationTokenSource();
            var camera = new CameraStream(videoMock.Object, cts.Token, loggerMock.Object,
                                          TimeSpan.FromMilliseconds(10));
            var observer = new TestImageObserver <Rgb>();

            camera.Subscribe(observer);

            // ReSharper disable MethodSupportsCancellation
            await Task.Delay(TimeSpan.FromMilliseconds(500));

            cts.Cancel();

            await Task.Delay(TimeSpan.FromMilliseconds(500));

            // ReSharper restore MethodSupportsCancellation

            Assert.True(observer.StreamCompleted);
        }
Пример #11
0
        public async Task NotSendNewFramesIfCancellationRequested()
        {
            videoMock.Setup(v => v.QueryFrame()).Returns(() => new Image <Rgb, byte>(100, 100).Mat);

            var cts    = new CancellationTokenSource();
            var camera = new CameraStream(videoMock.Object, cts.Token, loggerMock.Object,
                                          TimeSpan.FromMilliseconds(10));
            var observer = new TestImageObserver <Rgb>();

            camera.Subscribe(observer);

            // ReSharper disable MethodSupportsCancellation
            await Task.Delay(TimeSpan.FromMilliseconds(500));

            cts.Cancel();
            var after = DateTime.Now;

            await Task.Delay(TimeSpan.FromMilliseconds(500));

            // ReSharper restore MethodSupportsCancellation

            Assert.DoesNotContain(observer.ReceivedItems, x => x.Value > after);
        }
Пример #12
0
        public void Handle(AttachCameraStream command)
        {
            var mediaContent = CameraStream.Create(command.AggregateId, command.MeetingId, command.UserId, command.StreamLink);

            _repository.Save(mediaContent, Guid.NewGuid());
        }
    // Use this for initialization
    void Start()
    {
        //Die Kameras im System finden und den Objekten zuweisen
        _cameraBack = GameObject.Find ("CameraBack").GetComponent<Camera> ();
        _cameraFront = GameObject.Find ("CameraFront").GetComponent<Camera> ();
        _cameraTop = GameObject.Find ("CameraTop").GetComponent<Camera> ();
        _cameraView01 = GameObject.Find ("Camera01").GetComponent<Camera> ();
        _goCamera = GameObject.Find("Camera01");
        _cameraStream = (CameraStream) _goCamera.GetComponent(typeof(CameraStream));

        //Die Strecken im System finden und den Objekten zuweisen
        _courseLabor = GameObject.Find ("CourseLabor");
        _courseCup2014 = GameObject.Find ("CourseCup2014");
        _courseCup2014Parking01 = GameObject.Find ("CourseCup2014Parking01");
        _courseCup2014Obstacles01 = GameObject.Find ("CourseCup2014Obstacles01");
        _courseStraight50Metres = GameObject.Find ("CoruseStraight50Metres");
        _currentCourse = COURSES.COURSE_LABOR;
        _courseCup2014.SetActive(false);
        _courseCup2014Parking01.SetActive(false);
        _courseCup2014Obstacles01.SetActive(false);
        _courseStraight50Metres.SetActive(false);

        _tempCar = new GameObject ();
        _car = GameObject.Find("Car");

        //Tires
        _tireFrontLeft = GameObject.Find ("TireFrontLeft");
        _tireFrontRight = GameObject.Find ("TireFrontRight");

        //Axis
        _wheelFrontLeft = GameObject.Find ("WheelFrontLeft");
        _wheelFrontRight = GameObject.Find ("WheelFrontRight");
        _wheelBackLeft = GameObject.Find ("WheelBackLeft");
        //_backAxisMiddle = GameObject.Find ("BackAxis");
        _cubeAxisFront = GameObject.Find ("CubeAxisFront");
        _cubeAxisBack = GameObject.Find ("CubeAxisBack");
        _steeringCutPoint = GameObject.Find("SteeringCutPoint");
        _carRoot = GameObject.Find ("CarRoot");
        //_golf = GameObject.Find ("Golf");
        _posStraighForeward = GameObject.Find ("PosStraighForeward");

        //Lights
        _moveCarLights = 0;
        _lightIndicatorLeft  = GameObject.Find ("LightIndicatorLeft"); _lightIndicatorLeft.SetActive (false);
        _lightIndicatorRight = GameObject.Find ("LightIndicatorRight"); _lightIndicatorRight.SetActive (false);
        _lightDrive = GameObject.Find ("LightDrive"); _lightDrive.SetActive (false);
        _lightBreak = GameObject.Find ("LightBreak");_lightBreak.SetActive (false);
        _lightBackward = GameObject.Find ("LightBackward");_lightBackward.SetActive (false);

        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.SetColors(Color.green, Color.blue);
        lineRenderer.SetWidth(0.2F, 0.2F);
        lineRenderer.transform.Rotate (new Vector3 (90, 0, 0));

        btnStartServer.GetComponentInChildren<Text>().text = "Start Server";

        btnStartServer.onClick.AddListener(() => {
            //handle click here
            if(_server!=null){
                _server.disconnect();
                _server = null;
                btnStartServer.GetComponentInChildren<Text>().text = "Start Server";
            }
            else{
                IPAddress ipaddr = IPAddress.Parse(ipAddressField.text);
                _server = new Server (ipaddr, 4545, 1, dataFromServer);
                btnStartServer.GetComponentInChildren<Text>().text = "Close Server";
            }
        });

        //Setzt das Fahrzeug zurück auf Position 0,0,0
        btnReset.onClick.AddListener(() => {
            //handle click here
            _carRoot.transform.position = new Vector3(0,_carRoot.transform.position.y,0);
            _carRoot.transform.rotation = new Quaternion(0,0,0,0);
        });

        _cameraTop.enabled = false;
        _cameraFront.enabled = false;
        _cameraBack.enabled = false;

        //Button für die Auswahl der anzuzeigenen Sicht
        btnChangeCamera.onClick.AddListener(() => {
            //handle click here
            if(_currentCamera == CAMERAS.CAMERA_BACK){
                _cameraBack.enabled = false;
                _cameraFront.enabled = true;
                _currentCamera = CAMERAS.CAMERA_FRONT;
            }
            else if(_currentCamera == CAMERAS.CAMERA_FRONT){
                _cameraFront.enabled = false;
                _cameraTop.enabled = true;
                _currentCamera = CAMERAS.CAMERA_TOP;
            }
            else if(_currentCamera == CAMERAS.CAMERA_TOP){
                _cameraTop.enabled = false;
                _cameraView01.enabled = true;
                _currentCamera = CAMERAS.CAMERA_VIEW1;
            }
            else if(_currentCamera == CAMERAS.CAMERA_VIEW1){
                _cameraView01.enabled = false;
                _cameraBack.enabled = true;
                _currentCamera = CAMERAS.CAMERA_BACK;
            }
        });

        //Button für die Auswahl der anzuzeigenen Strecke
        btnChangeCourse.onClick.AddListener(() => {
            //handle click here
            if(_currentCourse == COURSES.COURSE_LABOR){
                _courseLabor.SetActive(false);
                _courseCup2014.SetActive(true);
                _currentCourse = COURSES.COURSE_CUP2014;
            }
            else if(_currentCourse == COURSES.COURSE_CUP2014){
                _courseCup2014.SetActive(false);
                _courseCup2014Parking01.SetActive(true);
                _currentCourse = COURSES.COURSE_CUP2014_PARKING01;
            }
            else if(_currentCourse == COURSES.COURSE_CUP2014_PARKING01){
                _courseCup2014Parking01.SetActive(false);
                _courseCup2014Obstacles01.SetActive(true);
                _currentCourse = COURSES.COURSE_CUP2014_OBSTACLES01;
            }
            else if(_currentCourse == COURSES.COURSE_CUP2014_OBSTACLES01){
                _courseCup2014Obstacles01.SetActive(false);
                _courseStraight50Metres.SetActive(true);
                _currentCourse = COURSES.CORUSE_STRAIGHT_50_METRES;
            }
            else if(_currentCourse == COURSES.CORUSE_STRAIGHT_50_METRES){
                _courseStraight50Metres.SetActive(false);
                _courseLabor.SetActive(true);
                _currentCourse = COURSES.COURSE_LABOR;
            }
        });
    }
Пример #14
0
 public CameraViewModel(Camera camera, CameraStream cameraStream)
 {
     Camera       = camera;
     CameraStream = cameraStream;
 }