///////////////////////////////////////////////////////// // 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; } } }
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(); } }
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); }
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)); } }
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(); }
///////////////////////////////////////////////////////// // 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); }
///////////////////////////////////////////////////////// // 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); }
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); }
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); }
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; } }); }
public CameraViewModel(Camera camera, CameraStream cameraStream) { Camera = camera; CameraStream = cameraStream; }