public override void WindowControllerDidLoadNib (NSWindowController windowController)
		{
			base.WindowControllerDidLoadNib (windowController);

			// A reference to the window controller must be kept on the managed side
			// to keep the object from being GC'd so that the delegates below resolve.
			// Don't remove unless the framework is updated to track the reference.
			this.windowController = windowController;

			NSError err;
			
			windowController.Window.WillClose += delegate {
				if (captureSession != null)
					captureSession.StopRunning ();
				var dev = captureInput.Device;
				if (dev.IsOpen)
					dev.Close ();
			};
			
			// Create a movie, and store the information in memory on an NSMutableData
			movie = new QTMovie (new NSMutableData (1), out err);
			if (movie == null){
				NSAlert.WithError (err).RunModal ();
				return;
			}
			movieView.Movie = movie;
			
			// Find video device
			captureSession = new QTCaptureSession ();
			var device = QTCaptureDevice.GetDefaultInputDevice (QTMediaType.Video);
			if (!device.Open (out err)){
				NSAlert.WithError (err).RunModal ();
				return;
			}
			
			// Add device input
			captureInput = new QTCaptureDeviceInput (device);
			if (!captureSession.AddInput (captureInput, out err)){
				NSAlert.WithError (err).RunModal ();
				return;
			}
			
			// Create decompressor for video output, to get raw frames
			decompressedVideo = new QTCaptureDecompressedVideoOutput ();
			decompressedVideo.DidOutputVideoFrame += delegate(object sender, QTCaptureVideoFrameEventArgs e) {
				lock (this){
					currentImage = e.VideoFrame;
				}
			};
			if (!captureSession.AddOutput (decompressedVideo, out err)){
				NSAlert.WithError (err).RunModal ();
				return;
			}
			
			// Activate preview
			captureView.CaptureSession = captureSession;
			
			// Start running.
			captureSession.StartRunning ();
		}
Example #2
0
        private void PlatformDispose(bool disposing)
        {
            if (MovieView != null)
            {
                MovieView.Dispose();
                MovieView = null;
            }

            if (_mMovie != null)
            {
                _mMovie.Dispose();
                _mMovie = null;
            }
        }
Example #3
0
        private void PlatformInitialize()
        {
            var err = new NSError();

            _mMovie = new QTMovie(FileName, out err);
            if (_mMovie != null)
            {
                MovieView = new QTMovieView();
                MovieView.Movie = _mMovie;

                MovieView.IsControllerVisible = false;
            }
            else
                Console.WriteLine(err);
        }
Example #4
0
		public override bool ReadFromUrl (NSUrl absoluteUrl, string typeName, out NSError outError)
		{
			var loaded = QTMovie.FromUrl (absoluteUrl, out outError);
			if (loaded != null){
				loaded.SetAttribute (NSNumber.FromBoolean (true), QTMovie.EditableAttribute);
				
				if (movie != null)
					movie.Dispose ();
				movie = loaded;
			}
			return loaded != null;
		}
Example #5
0
		public void Dispose()
		{
			if (mMovieView != null)
			{
				mMovieView.Dispose();
				mMovieView = null;
			} 
			
			if (mMovie != null)
			{
				mMovie.Dispose();
				mMovie = null;
			} 
		}
Example #6
0
		internal void Prepare()
		{
			NSError err = new NSError();
			
			mMovie = new QTMovie(_fileName, out err);
			if (mMovie != null)				
			{
				mMovieView = new QTMovieView();
				mMovieView.Movie = mMovie;
				
				mMovieView.IsControllerVisible = false;				
			}
			else
			{
				Console.WriteLine(err);
			}
		}