亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? videostream.cs

?? WIFI-Robot Basic
?? CS
字號:
// Motion Detector
//
// Copyright ?Andrew Kirillov, 2005
// andrew.kirillov@gmail.com
//
namespace VideoSource
{
	using System;
	using System.Drawing;
	using System.Drawing.Imaging;
	using System.IO;
	using System.Threading;
	using System.Runtime.InteropServices;
	using System.Net;

	using dshow;
	using dshow.Core;

	/// <summary>
	/// VideoStream - stream downloader
	/// </summary>
	public class VideoStream : IVideoSource
	{
		private string	source;
		private object	userData = null;
		private int		framesReceived;

		private Thread	thread = null;
		private ManualResetEvent stopEvent = null;

		// new frame event
		public event CameraEventHandler NewFrame;

		// VideoSource property
		public virtual string VideoSource
		{
			get { return source; }
			set { source = value; }
		}
		// Login property
		public string Login
		{
			get { return null; }
			set { }
		}
		// Password property
		public string Password
		{
			get { return null; }
			set {  }
		}
		// FramesReceived property
		public int FramesReceived
		{
			get
			{
				int frames = framesReceived;
				framesReceived = 0;
				return frames;
			}
		}
		// BytesReceived property
		public int BytesReceived
		{
			get { return 0; }
		}
		// UserData property
		public object UserData
		{
			get { return userData; }
			set { userData = value; }
		}
		// Get state of the video source thread
		public bool Running
		{
			get
			{
				if (thread != null)
				{
					if (thread.Join(0) == false)
						return true;

					// the thread is not running, so free resources
					Free();
				}
				return false;
			}
		}


		// Constructor
		public VideoStream()
		{
		}

		// Start work
		public void Start()
		{
			if (thread == null)
			{
				framesReceived = 0;

				// create events
				stopEvent	= new ManualResetEvent(false);
				
				// create and start new thread
				thread = new Thread(new ThreadStart(WorkerThread));
				thread.Name = source;
				thread.Start();
			}
		}

		// Signal thread to stop work
		public void SignalToStop()
		{
			// stop thread
			if (thread != null)
			{
				// signal to stop
				stopEvent.Set();
			}
		}

		// Wait for thread stop
		public void WaitForStop()
		{
			if (thread != null)
			{
				// wait for thread stop
				thread.Join();

				Free();
			}
		}

		// Abort thread
		public void Stop()
		{
			if (this.Running)
			{
				thread.Abort();
				// WaitForStop();
			}
		}

		// Free resources
		private void Free()
		{
			thread = null;

			// release events
			stopEvent.Close();
			stopEvent = null;
		}

		// Thread entry point
		public void WorkerThread()
		{
			bool	failed = false;

			// grabber
			Grabber	grabber = new Grabber(this);

			// objects
			object	graphObj = null;
			object	sourceObj = null;
			object	grabberObj = null;

			// interfaces
			IGraphBuilder	graph = null;
			IBaseFilter		sourceBase = null;
			IBaseFilter		grabberBase = null;
			ISampleGrabber	sg = null;
			IFileSourceFilter	fileSource = null;
			IMediaControl	mc = null;
			IMediaEventEx	mediaEvent = null;

			int	code, param1, param2;

			while ((!failed) && (!stopEvent.WaitOne(0, true)))
			{
				try
				{
					// Get type for filter graph
					Type srvType = Type.GetTypeFromCLSID(Clsid.FilterGraph);
					if (srvType == null)
						throw new ApplicationException("Failed creating filter graph");

					// create filter graph
					graphObj = Activator.CreateInstance(srvType);
					graph = (IGraphBuilder) graphObj;

					// Get type for windows media source filter
					srvType = Type.GetTypeFromCLSID(Clsid.WindowsMediaSource);
					if (srvType == null)
						throw new ApplicationException("Failed creating WM source");

					// create windows media source filter
					sourceObj = Activator.CreateInstance(srvType);
					sourceBase = (IBaseFilter) sourceObj;

					// Get type for sample grabber
					srvType = Type.GetTypeFromCLSID(Clsid.SampleGrabber);
					if (srvType == null)
						throw new ApplicationException("Failed creating sample grabber");

					// create sample grabber
					grabberObj = Activator.CreateInstance(srvType);
					sg = (ISampleGrabber) grabberObj;
					grabberBase = (IBaseFilter) grabberObj;

					// add source filter to graph
					graph.AddFilter(sourceBase, "source");
					graph.AddFilter(grabberBase, "grabber");

					// set media type
					AMMediaType mt = new AMMediaType();
					mt.majorType = MediaType.Video;
					mt.subType = MediaSubType.RGB24;
					sg.SetMediaType(mt);

					// load file
					fileSource = (IFileSourceFilter) sourceObj;
					fileSource.Load(this.source, null);

					// connect pins
					if (graph.Connect(DSTools.GetOutPin(sourceBase, 0), DSTools.GetInPin(grabberBase, 0)) < 0)
						throw new ApplicationException("Failed connecting filters");

					// get media type
					if (sg.GetConnectedMediaType(mt) == 0)
					{
						VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure(mt.formatPtr, typeof(VideoInfoHeader));

						grabber.Width = vih.BmiHeader.Width;
						grabber.Height = vih.BmiHeader.Height;
						mt.Dispose();
					}

					// render
					graph.Render(DSTools.GetOutPin(grabberBase, 0));

					//
					sg.SetBufferSamples(false);
					sg.SetOneShot(false);
					sg.SetCallback(grabber, 1);

					// window
					IVideoWindow win = (IVideoWindow) graphObj;
					win.put_AutoShow(false);
					win = null;

					// get events interface
					mediaEvent = (IMediaEventEx) graphObj;

					// get media control
					mc = (IMediaControl) graphObj;

					// run
					mc.Run();

					while (!stopEvent.WaitOne(0, true))
					{
						Thread.Sleep(100);

						// get an event
						if (mediaEvent.GetEvent(out code, out param1, out param2, 0) == 0)
						{
							// release params
							mediaEvent.FreeEventParams(code, param1, param2);

							//
							if (code == (int) EventCode.Complete)
							{
								System.Diagnostics.Debug.WriteLine("completed");
								break;
							}
						}
					}

					mc.StopWhenReady();
				}
					// catch any exceptions
				catch (Exception e)
				{
					System.Diagnostics.Debug.WriteLine("----: " + e.Message);
					failed = true;
				}
					// finalization block
				finally
				{
					// release all objects
					mediaEvent = null;
					mc = null;
					fileSource = null;
					graph = null;
					sourceBase = null;
					grabberBase = null;
					sg = null;

					if (graphObj != null)
					{
						Marshal.ReleaseComObject(graphObj);
						graphObj = null;
					}
					if (sourceObj != null)
					{
						Marshal.ReleaseComObject(sourceObj);
						sourceObj = null;
					}
					if (grabberObj != null)
					{
						Marshal.ReleaseComObject(grabberObj);
						grabberObj = null;
					}
				}
			}
		}

		// new frame
		protected void OnNewFrame(Bitmap image)
		{
			framesReceived++;
			if ((!stopEvent.WaitOne(0, true)) && (NewFrame != null))
				NewFrame(this, new CameraEventArgs(image));
		}

		// Grabber
		private class Grabber : ISampleGrabberCB
		{
			private VideoStream parent;
			private int width, height;

			// Width property
			public int Width
			{
				get { return width; }
				set { width = value; }
			}
			// Height property
			public int Height
			{
				get { return height; }
				set { height = value; }
			}

			// Constructor
			public Grabber(VideoStream parent)
			{
				this.parent = parent;
			}

			//
			public int SampleCB(double SampleTime, IntPtr pSample)
			{
				return 0;
			}

			// Callback method that receives a pointer to the sample buffer
			public int BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen)
			{
				// create new image
				System.Drawing.Bitmap img = new Bitmap(width, height, PixelFormat.Format24bppRgb);

				// lock bitmap data
				BitmapData	bmData = img.LockBits(
					new Rectangle(0, 0, width, height),
					ImageLockMode.ReadWrite,
					PixelFormat.Format24bppRgb);

				// copy image data
				int srcStride = bmData.Stride;
				int dstStride = bmData.Stride;

				int dst = bmData.Scan0.ToInt32() + dstStride * (height - 1);
				int src = pBuffer.ToInt32();

				for (int y = 0; y < height; y++)
				{
					Win32.memcpy(dst, src, srcStride);
					dst -= dstStride;
					src += srcStride;
				}

				// unlock bitmap data
				img.UnlockBits(bmData);

				// notify parent
				parent.OnNewFrame(img);

				// release the image
				img.Dispose();

				return 0;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费影院| 亚洲天堂av老司机| 一区二区三区在线看| 国产精品99久久久| 欧美午夜精品久久久久久超碰| 日韩欧美123| 国产福利一区在线观看| 91色porny| 亚洲精品日韩专区silk| aaa亚洲精品| 国产精品私人影院| 成人免费毛片片v| 中文字幕第一区| av网站一区二区三区| 亚洲欧美色图小说| 欧美精品一二三四| 久久精品一区八戒影视| 久久久久国产成人精品亚洲午夜| 老司机一区二区| 精品国产一区二区亚洲人成毛片 | 久久一区二区三区国产精品| av影院午夜一区| 欧美一区二区三区电影| 玖玖九九国产精品| 国产精品国产三级国产普通话99 | 亚洲精品日韩综合观看成人91| 欧美成人午夜电影| 91网站在线播放| 亚洲第一久久影院| 日韩欧美国产精品| 国产精品一级黄| 国产精品久久777777| 欧美精品在线观看一区二区| 蜜臀久久99精品久久久久宅男| 亚洲最大成人网4388xx| 91麻豆视频网站| 久久综合综合久久综合| 亚洲另类色综合网站| 欧美日韩高清一区| 99久久精品情趣| 免费欧美日韩国产三级电影| 欧美激情在线一区二区| 日韩欧美激情四射| 欧洲一区在线观看| 国产成人精品三级麻豆| 91麻豆免费看| 成人永久免费视频| 国产一区二区三区在线观看精品| √…a在线天堂一区| 久久精品视频一区| 日韩一卡二卡三卡| 欧美日韩国产区一| 精品国产一区二区三区忘忧草| 久久精品理论片| 免费看日韩a级影片| 亚洲国产乱码最新视频 | 欧美成人vr18sexvr| 色婷婷激情一区二区三区| 国产不卡视频在线播放| 国产综合一区二区| 国产福利不卡视频| 午夜精品视频一区| 欧美xingq一区二区| 欧美电影免费观看高清完整版在线观看 | 蜜臀99久久精品久久久久久软件| 亚洲尤物视频在线| 亚洲欧美日韩国产综合在线| 一区二区三区欧美亚洲| 亚洲宅男天堂在线观看无病毒| 亚洲最色的网站| 青青草一区二区三区| 日本美女一区二区三区| 日韩精品成人一区二区三区| 欧美一卡在线观看| 久久综合久久综合九色| 亚洲欧美日韩在线不卡| 久久久高清一区二区三区| 国产日韩精品一区二区三区在线| 国产精品高清亚洲| 亚洲成人动漫精品| 日韩精品一二区| 欧美日韩精品电影| 日韩欧美在线网站| 成人欧美一区二区三区视频网页 | 欧美日本韩国一区二区三区视频 | 国产日产欧美一区| 一区二区三区欧美久久| 午夜国产不卡在线观看视频| 日日摸夜夜添夜夜添精品视频| 亚洲精品水蜜桃| 日本一区二区三区电影| 欧美伊人久久久久久久久影院 | 国产精品免费免费| 亚洲一级二级在线| 国产成人在线观看| 日韩视频在线永久播放| 亚洲精品成人a在线观看| 国产老妇另类xxxxx| 337p亚洲精品色噜噜噜| 亚洲精品写真福利| 国产风韵犹存在线视精品| 欧美一级xxx| 午夜精品久久久久久久99樱桃| 中文字幕日韩一区| 国产成人激情av| 国产人成亚洲第一网站在线播放| 男人的j进女人的j一区| 91亚洲精品久久久蜜桃网站| 国产视频一区不卡| 九九精品视频在线看| 精品国产伦一区二区三区观看体验| 卡一卡二国产精品| 欧美一区二区美女| 美女视频黄a大片欧美| 亚洲精品一区二区在线观看| 久久66热re国产| 精品理论电影在线观看 | 亚洲色图在线视频| 91麻豆精品视频| 亚洲大尺度视频在线观看| 在线成人免费视频| 国产午夜亚洲精品理论片色戒| 国产在线一区二区| 国产亚洲欧美色| 一本色道久久综合狠狠躁的推荐| 亚洲制服丝袜在线| 中文字幕乱码亚洲精品一区| 热久久国产精品| 国产精品日韩精品欧美在线| 中文av一区二区| 成人精品电影在线观看| 亚洲激情在线激情| 久久久久久久久久美女| 日本高清不卡aⅴ免费网站| 久久精品免费看| 亚洲在线观看免费视频| 久久综合九色欧美综合狠狠| 日本精品裸体写真集在线观看| 人人超碰91尤物精品国产| 亚洲乱码日产精品bd| 精品理论电影在线观看 | 久久一区二区三区四区| 欧美在线观看视频一区二区三区| 国产精品亚洲成人| 偷拍一区二区三区四区| 一区二区在线观看免费视频播放 | 亚洲美女视频在线| 美国毛片一区二区三区| 久久久久久免费网| 欧美一区二区免费观在线| 欧美日韩亚州综合| 欧美日韩一卡二卡三卡| 色香蕉成人二区免费| 国产东北露脸精品视频| 国产一区二区三区观看| 国产精品综合二区| 极品少妇xxxx偷拍精品少妇| 午夜国产精品一区| 琪琪久久久久日韩精品| 久久丁香综合五月国产三级网站 | 丁香天五香天堂综合| 国产精品中文有码| 国产经典欧美精品| 国产精一区二区三区| 99久久久无码国产精品| 色av成人天堂桃色av| 欧美视频中文一区二区三区在线观看| 日本视频免费一区| 高清beeg欧美| 色综合久久99| 制服丝袜亚洲网站| 久久精品一区二区三区不卡牛牛 | 欧美在线999| 精品三级在线看| 国产精品国产a| 亚洲综合色视频| 久久草av在线| 91在线观看免费视频| 日韩欧美在线网站| 一级做a爱片久久| 国产一区二区三区四| 亚洲欧美日韩中文字幕一区二区三区| 丝袜美腿亚洲一区| 成人精品视频一区二区三区尤物| 99r精品视频| 久久综合狠狠综合| 一区2区3区在线看| 床上的激情91.| 日韩精品专区在线影院重磅| 国产精品久久久久天堂| 亚洲一区二区不卡免费| 亚洲三级电影全部在线观看高清| 亚洲自拍偷拍图区| 成人午夜在线视频| 26uuu亚洲综合色| 美女视频黄久久| 制服.丝袜.亚洲.另类.中文| 亚洲欧洲中文日韩久久av乱码| 国产精品 欧美精品| 久久午夜色播影院免费高清|