Click here to Skip to main content
15,886,199 members
Articles / Desktop Programming / Windows Forms

Camera Vision - video surveillance on C#

Rate me:
Please Sign up or sign in to vote.
4.92/5 (333 votes)
9 Oct 2006GPL316 min read 4.1M   178.8K   1.1K  
A C# video surveillance application, which allows monitoring several IP cameras simultaneously.
namespace dshow.Core
{
	using System;
	using System.Runtime.InteropServices;

	// ISampleGrabber interface
	//
	// This interface provides methods for retrieving individual
	// media samples as they move through the filter graph
	//
	[ComImport,
	Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"),
	InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	public interface ISampleGrabber
	{
		// Specifies whether the filter should stop the graph
		// after receiving one sample
		[PreserveSig]
		int SetOneShot(
			[In, MarshalAs(UnmanagedType.Bool)] bool OneShot);

		// Specifies the media type for the connection on
		// the Sample Grabber's input pin
		[PreserveSig]
		int SetMediaType(
			[In, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt);

		// Retrieves the media type for the connection on
		// the Sample Grabber's input pin
		[PreserveSig]
		int GetConnectedMediaType(
			[Out, MarshalAs(UnmanagedType.LPStruct)] AMMediaType pmt);

		// Specifies whether to copy sample data into a buffer
		// as it goes through the filter
		[PreserveSig]
		int SetBufferSamples(
			[In, MarshalAs(UnmanagedType.Bool)] bool BufferThem);

		// Retrieves a copy of the sample that
		// the filter received most recently
		[PreserveSig]
		int GetCurrentBuffer(
			ref int pBufferSize,
			IntPtr pBuffer);

		//
		[PreserveSig]
		int GetCurrentSample(
			IntPtr ppSample);

		// Specifies a callback method to call on incoming samples
		[PreserveSig]
		int SetCallback(
			ISampleGrabberCB pCallback,
			int WhichMethodToCallback);
	}


	// ISampleGrabberCB interface
	//
	// This interface provides callback methods for the
	// ISampleGrabber::SetCallback method
	//
	[ComImport,
	Guid("0579154A-2B53-4994-B0D0-E773148EFF85"),
	InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	public interface ISampleGrabberCB
	{
		// Callback method that receives a pointer to the media sample
		[PreserveSig]
//		int SampleCB(
//			double SampleTime,
//			IMediaSample pSample);
		int SampleCB(
			double SampleTime,
			IntPtr pSample);

		// Callback method that receives a pointer to the sample buffer
		[PreserveSig]
		int BufferCB(
			double SampleTime,
			IntPtr pBuffer,
			int BufferLen);
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Software Developer IBM
United Kingdom United Kingdom
Started software development at about 15 years old and it seems like now it lasts most part of my life. Fortunately did not spend too much time with Z80 and BK0010 and switched to 8086 and further. Similar with programming languages – luckily managed to get away from BASIC and Pascal to things like Assembler, C, C++ and then C#. Apart from daily programming for food, do it also for hobby, where mostly enjoy areas like Computer Vision, Robotics and AI. This led to some open source stuff like AForge.NET, Computer Vision Sandbox, cam2web, ANNT, etc.

Comments and Discussions