1191 lines
51 KiB
XML
1191 lines
51 KiB
XML
<?xml version="1.0"?>
|
||
<doc>
|
||
<assembly>
|
||
<name>AForge.Video</name>
|
||
</assembly>
|
||
<members>
|
||
<member name="T:AForge.Video.AsyncVideoSource">
|
||
<summary>
|
||
Proxy video source for asynchronous processing of another nested video source.
|
||
</summary>
|
||
|
||
<remarks><para>The class represents a simple proxy, which wraps the specified <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>
|
||
with the aim of asynchronous processing of received video frames. The class intercepts <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/>
|
||
event from the nested video source and fires it to clients from its own thread, which is different from the thread
|
||
used by nested video source for video acquisition. This allows clients to perform processing of video frames
|
||
without blocking video acquisition thread, which continue to run and acquire next video frame while current is still
|
||
processed.</para>
|
||
|
||
<para>For example, let’s suppose that it takes 100 ms for the nested video source to acquire single frame, so the original
|
||
frame rate is 10 frames per second. Also let’s assume that we have an image processing routine, which also takes
|
||
100 ms to process a single frame. If the acquisition and processing are done sequentially, then resulting
|
||
frame rate will drop to 5 frames per second. However, if doing both in parallel, then there is a good chance to
|
||
keep resulting frame rate equal (or close) to the original frame rate.</para>
|
||
|
||
<para>The class provides a bonus side effect - easer debugging of image processing routines, which are put into
|
||
<see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event handler. In many cases video source classes fire their <see cref="E:AForge.Video.IVideoSource.NewFrame"/>
|
||
event from a try/catch block, which makes it very hard to spot error made in user's code - the catch block simply
|
||
hides exception raised in user’s code. The <see cref="T:AForge.Video.AsyncVideoSource"/> does not have any try/catch blocks around
|
||
firing of <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, so always user gets exception in the case it comes from his code. At the same time
|
||
nested video source is not affected by the user's exception, since it runs in different thread.</para>
|
||
|
||
<para>Sample usage:</para>
|
||
<code>
|
||
// usage of AsyncVideoSource is the same as usage of any
|
||
// other video source class, so code change is very little
|
||
|
||
// create nested video source, for example JPEGStream
|
||
JPEGStream stream = new JPEGStream( "some url" );
|
||
// create async video source
|
||
AsyncVideoSource asyncSource = new AsyncVideoSource( stream );
|
||
// set NewFrame event handler
|
||
asyncSource.NewFrame += new NewFrameEventHandler( video_NewFrame );
|
||
// start the video source
|
||
asyncSource.Start( );
|
||
// ...
|
||
|
||
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
|
||
{
|
||
// get new frame
|
||
Bitmap bitmap = eventArgs.Frame;
|
||
// process the frame
|
||
}
|
||
</code>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.IVideoSource">
|
||
<summary>
|
||
Video source interface.
|
||
</summary>
|
||
|
||
<remarks>The interface describes common methods for different type of video sources.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.IVideoSource.Start">
|
||
<summary>
|
||
Start video source.
|
||
</summary>
|
||
|
||
<remarks>Starts video source and return execution to caller. Video source
|
||
object creates background thread and notifies about new frames with the
|
||
help of <see cref="E:AForge.Video.IVideoSource.NewFrame"/> event.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.IVideoSource.SignalToStop">
|
||
<summary>
|
||
Signal video source to stop its work.
|
||
</summary>
|
||
|
||
<remarks>Signals video source to stop its background thread, stop to
|
||
provide new frames and free resources.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.IVideoSource.WaitForStop">
|
||
<summary>
|
||
Wait for video source has stopped.
|
||
</summary>
|
||
|
||
<remarks>Waits for video source stopping after it was signalled to stop using
|
||
<see cref="M:AForge.Video.IVideoSource.SignalToStop"/> method.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.IVideoSource.Stop">
|
||
<summary>
|
||
Stop video source.
|
||
</summary>
|
||
|
||
<remarks>Stops video source aborting its thread.</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.IVideoSource.NewFrame">
|
||
<summary>
|
||
New frame event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients about new available video frame.</para>
|
||
|
||
<para><note>Since video source may have multiple clients, each client is responsible for
|
||
making a copy (cloning) of the passed video frame, but video source is responsible for
|
||
disposing its own original copy after notifying of clients.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.IVideoSource.VideoSourceError">
|
||
<summary>
|
||
Video source error event.
|
||
</summary>
|
||
|
||
<remarks>This event is used to notify clients about any type of errors occurred in
|
||
video source object, for example internal exceptions.</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.IVideoSource.PlayingFinished">
|
||
<summary>
|
||
Video playing finished event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.IVideoSource.Source">
|
||
<summary>
|
||
Video source.
|
||
</summary>
|
||
|
||
<remarks>The meaning of the property depends on particular video source.
|
||
Depending on video source it may be a file name, URL or any other string
|
||
describing the video source.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.IVideoSource.FramesReceived">
|
||
<summary>
|
||
Received frames count.
|
||
</summary>
|
||
|
||
<remarks>Number of frames the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.IVideoSource.BytesReceived">
|
||
<summary>
|
||
Received bytes count.
|
||
</summary>
|
||
|
||
<remarks>Number of bytes the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.IVideoSource.IsRunning">
|
||
<summary>
|
||
State of the video source.
|
||
</summary>
|
||
|
||
<remarks>Current state of video source object - running or not.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.#ctor(AForge.Video.IVideoSource)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.AsyncVideoSource"/> class.
|
||
</summary>
|
||
|
||
<param name="nestedVideoSource">Nested video source which is the target for asynchronous processing.</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.#ctor(AForge.Video.IVideoSource,System.Boolean)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.AsyncVideoSource"/> class.
|
||
</summary>
|
||
|
||
<param name="nestedVideoSource">Nested video source which is the target for asynchronous processing.</param>
|
||
<param name="skipFramesIfBusy">Specifies if the object should skip frames from the nested video source
|
||
in the case if it is still busy processing the previous video frame.</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.Start">
|
||
<summary>
|
||
Start video source.
|
||
</summary>
|
||
|
||
<remarks><para>Starts the nested video source and returns execution to caller. This object creates
|
||
an extra thread which is used to fire <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> events, so the image processing could be
|
||
done on another thread without blocking video acquisition thread.</para></remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.SignalToStop">
|
||
<summary>
|
||
Signal video source to stop its work.
|
||
</summary>
|
||
|
||
<remarks><para>Signals video source to stop its background thread, stop to
|
||
provide new frames and free resources.</para></remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.WaitForStop">
|
||
<summary>
|
||
Wait for video source has stopped.
|
||
</summary>
|
||
|
||
<remarks><para>Waits for video source stopping after it was signalled to stop using
|
||
<see cref="M:AForge.Video.AsyncVideoSource.SignalToStop"/> method.</para></remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.AsyncVideoSource.Stop">
|
||
<summary>
|
||
Stop video source.
|
||
</summary>
|
||
|
||
<remarks><para>Stops nested video source by calling its <see cref="M:AForge.Video.IVideoSource.Stop"/> method.
|
||
See documentation of the particular video source for additional details.</para></remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.AsyncVideoSource.NewFrame">
|
||
<summary>
|
||
New frame event.
|
||
</summary>
|
||
|
||
<remarks><para>Notifies clients about new available frame from video source.</para>
|
||
|
||
<para><note>This event is fired from a different thread other than the video acquisition thread created
|
||
by <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>. This allows nested video frame to continue acquisition of the next
|
||
video frame while clients perform processing of the current video frame.</note></para>
|
||
|
||
<para><note>Since video source may have multiple clients, each client is responsible for
|
||
making a copy (cloning) of the passed video frame, because the video source disposes its
|
||
own original copy after notifying of clients.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.AsyncVideoSource.VideoSourceError">
|
||
<summary>
|
||
Video source error event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients about any type of errors occurred in
|
||
video source object, for example internal exceptions.</para>
|
||
|
||
<para><note>Unlike <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, this event is simply redirected to the corresponding
|
||
event of the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>, so it is fired from the thread of the nested video source.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.AsyncVideoSource.PlayingFinished">
|
||
<summary>
|
||
Video playing finished event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||
|
||
<para><note>Unlike <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, this event is simply redirected to the corresponding
|
||
event of the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>, so it is fired from the thread of the nested video source.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.NestedVideoSource">
|
||
<summary>
|
||
Nested video source which is the target for asynchronous processing.
|
||
</summary>
|
||
|
||
<remarks><para>The property is set through the class constructor.</para>
|
||
|
||
<para>All calls to this object are actually redirected to the nested video source. The only
|
||
exception is the <see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, which is handled differently. This object gets
|
||
<see cref="E:AForge.Video.IVideoSource.NewFrame"/> event from the nested class and then fires another
|
||
<see cref="E:AForge.Video.AsyncVideoSource.NewFrame"/> event, but from a different thread.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy">
|
||
<summary>
|
||
Specifies if the object should skip frames from the nested video source when it is busy.
|
||
</summary>
|
||
|
||
<remarks><para>Specifies if the object should skip frames from the nested video source
|
||
in the case if it is still busy processing the previous video frame in its own thread.</para>
|
||
|
||
<para>Default value is set to <see langword="false"/>.</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.Source">
|
||
<summary>
|
||
Video source string.
|
||
</summary>
|
||
|
||
<remarks><para>The property is redirected to the corresponding property of <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource"/>,
|
||
so check its documentation to find what it means.</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.FramesReceived">
|
||
<summary>
|
||
Received frames count.
|
||
</summary>
|
||
|
||
<remarks><para>Number of frames the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource">nested video source</see> received from
|
||
the moment of the last access to the property.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.BytesReceived">
|
||
<summary>
|
||
Received bytes count.
|
||
</summary>
|
||
|
||
<remarks><para>Number of bytes the <see cref="P:AForge.Video.AsyncVideoSource.NestedVideoSource">nested video source</see> received from
|
||
the moment of the last access to the property.</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.FramesProcessed">
|
||
<summary>
|
||
Processed frames count.
|
||
</summary>
|
||
|
||
<remarks><para>The property keeps the number of processed video frames since the last access to this property.
|
||
</para>
|
||
|
||
<para>The value of this property equals to <see cref="P:AForge.Video.AsyncVideoSource.FramesReceived"/> in most cases if the
|
||
<see cref="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy"/> property is set to <see langword="false"/> - every received frame gets processed
|
||
sooner or later. However, if the <see cref="P:AForge.Video.AsyncVideoSource.SkipFramesIfBusy"/> property is set to <see langword="true"/>,
|
||
then value of this property may be lower than the value of the <see cref="P:AForge.Video.AsyncVideoSource.FramesReceived"/> property, which
|
||
means that nested video source performs acquisition faster than client perform processing of the received frame
|
||
and some frame are skipped from processing.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.AsyncVideoSource.IsRunning">
|
||
<summary>
|
||
State of the video source.
|
||
</summary>
|
||
|
||
<remarks><para>Current state of the video source object - running or not.</para></remarks>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.ScreenCaptureStream">
|
||
<summary>
|
||
Screen capture video source.
|
||
</summary>
|
||
|
||
<remarks><para>The video source constantly captures the desktop screen.</para>
|
||
|
||
<para>Sample usage:</para>
|
||
<code>
|
||
// get entire desktop area size
|
||
Rectangle screenArea = Rectangle.Empty;
|
||
foreach ( System.Windows.Forms.Screen screen in
|
||
System.Windows.Forms.Screen.AllScreens )
|
||
{
|
||
screenArea = Rectangle.Union( screenArea, screen.Bounds );
|
||
}
|
||
|
||
// create screen capture video source
|
||
ScreenCaptureStream stream = new ScreenCaptureStream( screenArea );
|
||
|
||
// set NewFrame event handler
|
||
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
|
||
|
||
// start the video source
|
||
stream.Start( );
|
||
|
||
// ...
|
||
// signal to stop
|
||
stream.SignalToStop( );
|
||
// ...
|
||
|
||
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
|
||
{
|
||
// get new frame
|
||
Bitmap bitmap = eventArgs.Frame;
|
||
// process the frame
|
||
}
|
||
</code>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.#ctor(System.Drawing.Rectangle)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.ScreenCaptureStream"/> class.
|
||
</summary>
|
||
|
||
<param name="region">Screen's rectangle to capture (the rectangle may cover multiple displays).</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.#ctor(System.Drawing.Rectangle,System.Int32)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.ScreenCaptureStream"/> class.
|
||
</summary>
|
||
|
||
<param name="region">Screen's rectangle to capture (the rectangle may cover multiple displays).</param>
|
||
<param name="frameInterval">Time interval between making screen shots, ms.</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.Start">
|
||
<summary>
|
||
Start video source.
|
||
</summary>
|
||
|
||
<remarks>Starts video source and return execution to caller. Video source
|
||
object creates background thread and notifies about new frames with the
|
||
help of <see cref="E:AForge.Video.ScreenCaptureStream.NewFrame"/> event.</remarks>
|
||
|
||
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.SignalToStop">
|
||
<summary>
|
||
Signal video source to stop its work.
|
||
</summary>
|
||
|
||
<remarks>Signals video source to stop its background thread, stop to
|
||
provide new frames and free resources.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.WaitForStop">
|
||
<summary>
|
||
Wait for video source has stopped.
|
||
</summary>
|
||
|
||
<remarks>Waits for source stopping after it was signalled to stop using
|
||
<see cref="M:AForge.Video.ScreenCaptureStream.SignalToStop"/> method.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.Stop">
|
||
<summary>
|
||
Stop video source.
|
||
</summary>
|
||
|
||
<remarks><para>Stops video source aborting its thread.</para>
|
||
|
||
<para><note>Since the method aborts background thread, its usage is highly not preferred
|
||
and should be done only if there are no other options. The correct way of stopping camera
|
||
is <see cref="M:AForge.Video.ScreenCaptureStream.SignalToStop">signaling it stop</see> and then
|
||
<see cref="M:AForge.Video.ScreenCaptureStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ScreenCaptureStream.Free">
|
||
<summary>
|
||
Free resource.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.ScreenCaptureStream.NewFrame">
|
||
<summary>
|
||
New frame event.
|
||
</summary>
|
||
|
||
<remarks><para>Notifies clients about new available frame from video source.</para>
|
||
|
||
<para><note>Since video source may have multiple clients, each client is responsible for
|
||
making a copy (cloning) of the passed video frame, because the video source disposes its
|
||
own original copy after notifying of clients.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.ScreenCaptureStream.VideoSourceError">
|
||
<summary>
|
||
Video source error event.
|
||
</summary>
|
||
|
||
<remarks>This event is used to notify clients about any type of errors occurred in
|
||
video source object, for example internal exceptions.</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.ScreenCaptureStream.PlayingFinished">
|
||
<summary>
|
||
Video playing finished event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.Source">
|
||
<summary>
|
||
Video source.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.Region">
|
||
<summary>
|
||
Gets or sets the screen capture region.
|
||
</summary>
|
||
|
||
<remarks><para>This property specifies which region (rectangle) of the screen to capture. It may cover multiple displays
|
||
if those are available in the system.</para>
|
||
|
||
<para><note>The property must be set before starting video source to have any effect.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.FrameInterval">
|
||
<summary>
|
||
Time interval between making screen shots, ms.
|
||
</summary>
|
||
|
||
<remarks><para>The property specifies time interval in milliseconds between consequent screen captures.
|
||
Expected frame rate of the stream should be approximately 1000/FrameInteval.</para>
|
||
|
||
<para>If the property is set to 0, then the stream will capture screen as fast as the system allows.</para>
|
||
|
||
<para>Default value is set to <b>100</b>.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.FramesReceived">
|
||
<summary>
|
||
Received frames count.
|
||
</summary>
|
||
|
||
<remarks>Number of frames the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.BytesReceived">
|
||
<summary>
|
||
Received bytes count.
|
||
</summary>
|
||
|
||
<remarks><para><note>The property is not implemented for this video source and always returns 0.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.ScreenCaptureStream.IsRunning">
|
||
<summary>
|
||
State of the video source.
|
||
</summary>
|
||
|
||
<remarks>Current state of video source object - running or not.</remarks>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.MJPEGStream">
|
||
<summary>
|
||
MJPEG video source.
|
||
</summary>
|
||
|
||
<remarks><para>The video source downloads JPEG images from the specified URL, which represents
|
||
MJPEG stream.</para>
|
||
|
||
<para>Sample usage:</para>
|
||
<code>
|
||
// create MJPEG video source
|
||
MJPEGStream stream = new MJPEGStream( "some url" );
|
||
// set event handlers
|
||
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
|
||
// start the video source
|
||
stream.Start( );
|
||
// ...
|
||
</code>
|
||
|
||
<para><note>Some cameras produce HTTP header, which does not conform strictly to
|
||
standard, what leads to .NET exception. To avoid this exception the <b>useUnsafeHeaderParsing</b>
|
||
configuration option of <b>httpWebRequest</b> should be set, what may be done using application
|
||
configuration file.</note></para>
|
||
<code>
|
||
<configuration>
|
||
<system.net>
|
||
<settings>
|
||
<httpWebRequest useUnsafeHeaderParsing="true" />
|
||
</settings>
|
||
</system.net>
|
||
</configuration>
|
||
</code>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.#ctor">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.MJPEGStream"/> class.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.#ctor(System.String)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.MJPEGStream"/> class.
|
||
</summary>
|
||
|
||
<param name="source">URL, which provides MJPEG stream.</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.Start">
|
||
<summary>
|
||
Start video source.
|
||
</summary>
|
||
|
||
<remarks>Starts video source and return execution to caller. Video source
|
||
object creates background thread and notifies about new frames with the
|
||
help of <see cref="E:AForge.Video.MJPEGStream.NewFrame"/> event.</remarks>
|
||
|
||
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.SignalToStop">
|
||
<summary>
|
||
Signal video source to stop its work.
|
||
</summary>
|
||
|
||
<remarks>Signals video source to stop its background thread, stop to
|
||
provide new frames and free resources.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.WaitForStop">
|
||
<summary>
|
||
Wait for video source has stopped.
|
||
</summary>
|
||
|
||
<remarks>Waits for source stopping after it was signalled to stop using
|
||
<see cref="M:AForge.Video.MJPEGStream.SignalToStop"/> method.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.Stop">
|
||
<summary>
|
||
Stop video source.
|
||
</summary>
|
||
|
||
<remarks><para>Stops video source aborting its thread.</para>
|
||
|
||
<para><note>Since the method aborts background thread, its usage is highly not preferred
|
||
and should be done only if there are no other options. The correct way of stopping camera
|
||
is <see cref="M:AForge.Video.MJPEGStream.SignalToStop">signaling it stop</see> and then
|
||
<see cref="M:AForge.Video.MJPEGStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.MJPEGStream.Free">
|
||
<summary>
|
||
Free resource.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.MJPEGStream.NewFrame">
|
||
<summary>
|
||
New frame event.
|
||
</summary>
|
||
|
||
<remarks><para>Notifies clients about new available frame from video source.</para>
|
||
|
||
<para><note>Since video source may have multiple clients, each client is responsible for
|
||
making a copy (cloning) of the passed video frame, because the video source disposes its
|
||
own original copy after notifying of clients.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.MJPEGStream.VideoSourceError">
|
||
<summary>
|
||
Video source error event.
|
||
</summary>
|
||
|
||
<remarks>This event is used to notify clients about any type of errors occurred in
|
||
video source object, for example internal exceptions.</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.MJPEGStream.PlayingFinished">
|
||
<summary>
|
||
Video playing finished event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.SeparateConnectionGroup">
|
||
<summary>
|
||
Use or not separate connection group.
|
||
</summary>
|
||
|
||
<remarks>The property indicates to open web request in separate connection group.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.Source">
|
||
<summary>
|
||
Video source.
|
||
</summary>
|
||
|
||
<remarks>URL, which provides MJPEG stream.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.Login">
|
||
<summary>
|
||
Login value.
|
||
</summary>
|
||
|
||
<remarks>Login required to access video source.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.Password">
|
||
<summary>
|
||
Password value.
|
||
</summary>
|
||
|
||
<remarks>Password required to access video source.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.Proxy">
|
||
<summary>
|
||
Gets or sets proxy information for the request.
|
||
</summary>
|
||
|
||
<remarks><para>The local computer or application config file may specify that a default
|
||
proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy
|
||
property overridea the local computer or application config file and the instance will use
|
||
the proxy settings specified. If no proxy is specified in a config file
|
||
and the Proxy property is unspecified, the request uses the proxy settings
|
||
inherited from Internet Explorer on the local computer. If there are no proxy settings
|
||
in Internet Explorer, the request is sent directly to the server.
|
||
</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.HttpUserAgent">
|
||
<summary>
|
||
User agent to specify in HTTP request header.
|
||
</summary>
|
||
|
||
<remarks><para>Some IP cameras check what is the requesting user agent and depending
|
||
on it they provide video in different formats or do not provide it at all. The property
|
||
sets the value of user agent string, which is sent to camera in request header.
|
||
</para>
|
||
|
||
<para>Default value is set to "Mozilla/5.0". If the value is set to <see langword="null"/>,
|
||
the user agent string is not sent in request header.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.FramesReceived">
|
||
<summary>
|
||
Received frames count.
|
||
</summary>
|
||
|
||
<remarks>Number of frames the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.BytesReceived">
|
||
<summary>
|
||
Received bytes count.
|
||
</summary>
|
||
|
||
<remarks>Number of bytes the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.RequestTimeout">
|
||
<summary>
|
||
Request timeout value.
|
||
</summary>
|
||
|
||
<remarks>The property sets timeout value in milliseconds for web requests.
|
||
Default value is 10000 milliseconds.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.IsRunning">
|
||
<summary>
|
||
State of the video source.
|
||
</summary>
|
||
|
||
<remarks>Current state of video source object - running or not.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.MJPEGStream.ForceBasicAuthentication">
|
||
<summary>
|
||
Force using of basic authentication when connecting to the video source.
|
||
</summary>
|
||
|
||
<remarks><para>For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials
|
||
does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be
|
||
present on connection request). So this property allows to force basic authentication by adding required HTTP headers when
|
||
request is sent.</para>
|
||
|
||
<para>Default value is set to <see langword="false"/>.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.VideoException">
|
||
<summary>
|
||
Video related exception.
|
||
</summary>
|
||
|
||
<remarks><para>The exception is thrown in the case of some video related issues, like
|
||
failure of initializing codec, compression, etc.</para></remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.VideoException.#ctor(System.String)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.VideoException"/> class.
|
||
</summary>
|
||
|
||
<param name="message">Exception's message.</param>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.NewFrameEventHandler">
|
||
<summary>
|
||
Delegate for new frame event handler.
|
||
</summary>
|
||
|
||
<param name="sender">Sender object.</param>
|
||
<param name="eventArgs">Event arguments.</param>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.VideoSourceErrorEventHandler">
|
||
<summary>
|
||
Delegate for video source error event handler.
|
||
</summary>
|
||
|
||
<param name="sender">Sender object.</param>
|
||
<param name="eventArgs">Event arguments.</param>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.PlayingFinishedEventHandler">
|
||
<summary>
|
||
Delegate for playing finished event handler.
|
||
</summary>
|
||
|
||
<param name="sender">Sender object.</param>
|
||
<param name="reason">Reason of finishing video playing.</param>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.ReasonToFinishPlaying">
|
||
<summary>
|
||
Reason of finishing video playing.
|
||
</summary>
|
||
|
||
<remarks><para>When video source class fire the <see cref="E:AForge.Video.IVideoSource.PlayingFinished"/> event, they
|
||
need to specify reason of finishing video playing. For example, it may be end of stream reached.</para></remarks>
|
||
|
||
</member>
|
||
<member name="F:AForge.Video.ReasonToFinishPlaying.EndOfStreamReached">
|
||
<summary>
|
||
Video playing has finished because it end was reached.
|
||
</summary>
|
||
</member>
|
||
<member name="F:AForge.Video.ReasonToFinishPlaying.StoppedByUser">
|
||
<summary>
|
||
Video playing has finished because it was stopped by user.
|
||
</summary>
|
||
</member>
|
||
<member name="F:AForge.Video.ReasonToFinishPlaying.DeviceLost">
|
||
<summary>
|
||
Video playing has finished because the device was lost (unplugged).
|
||
</summary>
|
||
</member>
|
||
<member name="F:AForge.Video.ReasonToFinishPlaying.VideoSourceError">
|
||
<summary>
|
||
Video playing has finished because of some error happened the video source (camera, stream, file, etc.).
|
||
A error reporting event usually is fired to provide error information.
|
||
</summary>
|
||
</member>
|
||
<member name="T:AForge.Video.NewFrameEventArgs">
|
||
<summary>
|
||
Arguments for new frame event from video source.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.NewFrameEventArgs.#ctor(System.Drawing.Bitmap)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.NewFrameEventArgs"/> class.
|
||
</summary>
|
||
|
||
<param name="frame">New frame.</param>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.NewFrameEventArgs.Frame">
|
||
<summary>
|
||
New frame from video source.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.VideoSourceErrorEventArgs">
|
||
<summary>
|
||
Arguments for video source error event from video source.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.VideoSourceErrorEventArgs.#ctor(System.String)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.VideoSourceErrorEventArgs"/> class.
|
||
</summary>
|
||
|
||
<param name="description">Error description.</param>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.VideoSourceErrorEventArgs.Description">
|
||
<summary>
|
||
Video source error description.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.JPEGStream">
|
||
<summary>
|
||
JPEG video source.
|
||
</summary>
|
||
|
||
<remarks><para>The video source constantly downloads JPEG files from the specified URL.</para>
|
||
|
||
<para>Sample usage:</para>
|
||
<code>
|
||
// create JPEG video source
|
||
JPEGStream stream = new JPEGStream( "some url" );
|
||
// set NewFrame event handler
|
||
stream.NewFrame += new NewFrameEventHandler( video_NewFrame );
|
||
// start the video source
|
||
stream.Start( );
|
||
// ...
|
||
// signal to stop
|
||
stream.SignalToStop( );
|
||
// ...
|
||
|
||
private void video_NewFrame( object sender, NewFrameEventArgs eventArgs )
|
||
{
|
||
// get new frame
|
||
Bitmap bitmap = eventArgs.Frame;
|
||
// process the frame
|
||
}
|
||
</code>
|
||
|
||
<para><note>Some cameras produce HTTP header, which does not conform strictly to
|
||
standard, what leads to .NET exception. To avoid this exception the <b>useUnsafeHeaderParsing</b>
|
||
configuration option of <b>httpWebRequest</b> should be set, what may be done using application
|
||
configuration file.</note></para>
|
||
<code>
|
||
<configuration>
|
||
<system.net>
|
||
<settings>
|
||
<httpWebRequest useUnsafeHeaderParsing="true" />
|
||
</settings>
|
||
</system.net>
|
||
</configuration>
|
||
</code>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.#ctor">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.JPEGStream"/> class.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.#ctor(System.String)">
|
||
<summary>
|
||
Initializes a new instance of the <see cref="T:AForge.Video.JPEGStream"/> class.
|
||
</summary>
|
||
|
||
<param name="source">URL, which provides JPEG files.</param>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.Start">
|
||
<summary>
|
||
Start video source.
|
||
</summary>
|
||
|
||
<remarks>Starts video source and return execution to caller. Video source
|
||
object creates background thread and notifies about new frames with the
|
||
help of <see cref="E:AForge.Video.JPEGStream.NewFrame"/> event.</remarks>
|
||
|
||
<exception cref="T:System.ArgumentException">Video source is not specified.</exception>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.SignalToStop">
|
||
<summary>
|
||
Signal video source to stop its work.
|
||
</summary>
|
||
|
||
<remarks>Signals video source to stop its background thread, stop to
|
||
provide new frames and free resources.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.WaitForStop">
|
||
<summary>
|
||
Wait for video source has stopped.
|
||
</summary>
|
||
|
||
<remarks>Waits for source stopping after it was signalled to stop using
|
||
<see cref="M:AForge.Video.JPEGStream.SignalToStop"/> method.</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.Stop">
|
||
<summary>
|
||
Stop video source.
|
||
</summary>
|
||
|
||
<remarks><para>Stops video source aborting its thread.</para>
|
||
|
||
<para><note>Since the method aborts background thread, its usage is highly not preferred
|
||
and should be done only if there are no other options. The correct way of stopping camera
|
||
is <see cref="M:AForge.Video.JPEGStream.SignalToStop">signaling it stop</see> and then
|
||
<see cref="M:AForge.Video.JPEGStream.WaitForStop">waiting</see> for background thread's completion.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.JPEGStream.Free">
|
||
<summary>
|
||
Free resource.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.JPEGStream.NewFrame">
|
||
<summary>
|
||
New frame event.
|
||
</summary>
|
||
|
||
<remarks><para>Notifies clients about new available frame from video source.</para>
|
||
|
||
<para><note>Since video source may have multiple clients, each client is responsible for
|
||
making a copy (cloning) of the passed video frame, because the video source disposes its
|
||
own original copy after notifying of clients.</note></para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.JPEGStream.VideoSourceError">
|
||
<summary>
|
||
Video source error event.
|
||
</summary>
|
||
|
||
<remarks>This event is used to notify clients about any type of errors occurred in
|
||
video source object, for example internal exceptions.</remarks>
|
||
|
||
</member>
|
||
<member name="E:AForge.Video.JPEGStream.PlayingFinished">
|
||
<summary>
|
||
Video playing finished event.
|
||
</summary>
|
||
|
||
<remarks><para>This event is used to notify clients that the video playing has finished.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.SeparateConnectionGroup">
|
||
<summary>
|
||
Use or not separate connection group.
|
||
</summary>
|
||
|
||
<remarks>The property indicates to open web request in separate connection group.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.PreventCaching">
|
||
<summary>
|
||
Use or not caching.
|
||
</summary>
|
||
|
||
<remarks>If the property is set to <b>true</b>, then a fake random parameter will be added
|
||
to URL to prevent caching. It's required for clients, who are behind proxy server.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.FrameInterval">
|
||
<summary>
|
||
Frame interval.
|
||
</summary>
|
||
|
||
<remarks>The property sets the interval in milliseconds betwen frames. If the property is
|
||
set to 100, then the desired frame rate will be 10 frames per second. Default value is 0 -
|
||
get new frames as fast as possible.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.Source">
|
||
<summary>
|
||
Video source.
|
||
</summary>
|
||
|
||
<remarks>URL, which provides JPEG files.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.Login">
|
||
<summary>
|
||
Login value.
|
||
</summary>
|
||
|
||
<remarks>Login required to access video source.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.Password">
|
||
<summary>
|
||
Password value.
|
||
</summary>
|
||
|
||
<remarks>Password required to access video source.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.Proxy">
|
||
<summary>
|
||
Gets or sets proxy information for the request.
|
||
</summary>
|
||
|
||
<remarks><para>The local computer or application config file may specify that a default
|
||
proxy to be used. If the Proxy property is specified, then the proxy settings from the Proxy
|
||
property overridea the local computer or application config file and the instance will use
|
||
the proxy settings specified. If no proxy is specified in a config file
|
||
and the Proxy property is unspecified, the request uses the proxy settings
|
||
inherited from Internet Explorer on the local computer. If there are no proxy settings
|
||
in Internet Explorer, the request is sent directly to the server.
|
||
</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.FramesReceived">
|
||
<summary>
|
||
Received frames count.
|
||
</summary>
|
||
|
||
<remarks>Number of frames the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.BytesReceived">
|
||
<summary>
|
||
Received bytes count.
|
||
</summary>
|
||
|
||
<remarks>Number of bytes the video source provided from the moment of the last
|
||
access to the property.
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.RequestTimeout">
|
||
<summary>
|
||
Request timeout value.
|
||
</summary>
|
||
|
||
<remarks><para>The property sets timeout value in milliseconds for web requests.</para>
|
||
|
||
<para>Default value is set <b>10000</b> milliseconds.</para></remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.IsRunning">
|
||
<summary>
|
||
State of the video source.
|
||
</summary>
|
||
|
||
<remarks>Current state of video source object - running or not.</remarks>
|
||
|
||
</member>
|
||
<member name="P:AForge.Video.JPEGStream.ForceBasicAuthentication">
|
||
<summary>
|
||
Force using of basic authentication when connecting to the video source.
|
||
</summary>
|
||
|
||
<remarks><para>For some IP cameras (TrendNET IP cameras, for example) using standard .NET's authentication via credentials
|
||
does not seem to be working (seems like camera does not request for authentication, but expects corresponding headers to be
|
||
present on connection request). So this property allows to force basic authentication by adding required HTTP headers when
|
||
request is sent.</para>
|
||
|
||
<para>Default value is set to <see langword="false"/>.</para>
|
||
</remarks>
|
||
|
||
</member>
|
||
<member name="T:AForge.Video.ByteArrayUtils">
|
||
<summary>
|
||
Some internal utilities for handling arrays.
|
||
</summary>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ByteArrayUtils.Compare(System.Byte[],System.Byte[],System.Int32)">
|
||
<summary>
|
||
Check if the array contains needle at specified position.
|
||
</summary>
|
||
|
||
<param name="array">Source array to check for needle.</param>
|
||
<param name="needle">Needle we are searching for.</param>
|
||
<param name="startIndex">Start index in source array.</param>
|
||
|
||
<returns>Returns <b>true</b> if the source array contains the needle at
|
||
the specified index. Otherwise it returns <b>false</b>.</returns>
|
||
|
||
</member>
|
||
<member name="M:AForge.Video.ByteArrayUtils.Find(System.Byte[],System.Byte[],System.Int32,System.Int32)">
|
||
<summary>
|
||
Find subarray in the source array.
|
||
</summary>
|
||
|
||
<param name="array">Source array to search for needle.</param>
|
||
<param name="needle">Needle we are searching for.</param>
|
||
<param name="startIndex">Start index in source array.</param>
|
||
<param name="sourceLength">Number of bytes in source array, where the needle is searched for.</param>
|
||
|
||
<returns>Returns starting position of the needle if it was found or <b>-1</b> otherwise.</returns>
|
||
|
||
</member>
|
||
</members>
|
||
</doc>
|