CVD::ServerPushJpegBuffer< C > Class Template Reference
[Video buffers]

#include <serverpushjpegbuffer.h>

Inheritance diagram for CVD::ServerPushJpegBuffer< C >:

CVD::LocalVideoBuffer< C > CVD::VideoBuffer< C >

List of all members.


Detailed Description

template<class C>
class CVD::ServerPushJpegBuffer< C >

Play a server push stream as a video stream.

This is a standard used by a number of HTTP based security cameras. The format is as follows:

 --ImageSeparator\n
 Content-Type: image/jpeg\r\n
 Content-Length: 123456789\r\n
 \r\n
 <123456789 bytes of JPEG go here>\r\n
This exact format is from the InVision IQEye series of cameras. Other cameras have a different image separator, and do not miss the carriage return.

The buffer reads a number of frames from the stream on initiation (by default 10), in order to flush the camera's inbuilt buffer. With some cameras, changing the video size does not flush the buffer, so the first few frames will be of the incorrect size. After flushing the buffer, the size of the first frame is taken to be the size of the video stream. If spurious frames arrive of a different size later, these will be ignored.

WARNING: error checking is currently very minimal. The result of failure will probably result in an exception being thrown from the JPEG loader.

Parameters:
T The pixel type of the frames to provide (usually CVD::Rgb<CVD::byte> or CVD::byte. If the image files are of a different type, they will be automatically converted (see Image loading and saving, and format conversion).

Definition at line 36 of file serverpushjpegbuffer.h.


Public Member Functions

 S (std::istream &i, bool warnings_=0, int eat_frames=0)
virtual ImageRef size ()
LocalVideoFrame< C > * get_frame ()
void put_frame (VideoFrame< C > *f)
bool frame_pending ()
void seek_to (double)
double frame_rate ()

Member Function Documentation

template<class C>
CVD::ServerPushJpegBuffer< C >::S ( std::istream &  i,
bool  warnings_ = 0,
int  eat_frames = 0 
) [inline]

Construct a ServerPushJpegBuffer from an istream.

The istream

Parameters:
i The stream to use for video.
warnings Whether to print warnings if mis-sized frames arrive.
eat_frames Number of frames to discard on initialization.

template<class C>
virtual ImageRef CVD::ServerPushJpegBuffer< C >::size (  )  [inline, virtual]

The size of the VideoFrames returned by this buffer.

Implements CVD::LocalVideoBuffer< C >.

Definition at line 61 of file serverpushjpegbuffer.h.

template<class C>
LocalVideoFrame<C>* CVD::ServerPushJpegBuffer< C >::get_frame (  )  [inline, virtual]

Returns the next frame from the buffer. This function blocks until a frame is ready.

Implements CVD::LocalVideoBuffer< C >.

Definition at line 66 of file serverpushjpegbuffer.h.

References CVD::get_time_of_day(), and CVD::SubImage< T >::size().

template<class C>
void CVD::ServerPushJpegBuffer< C >::put_frame ( VideoFrame< C > *  f  )  [inline, virtual]

Tell the buffer that you are finished with this frame.

Typically the VideoBuffer then destroys the frame.

Parameters:
f The frame that you are finished with.

Implements CVD::LocalVideoBuffer< C >.

Definition at line 84 of file serverpushjpegbuffer.h.

template<class C>
bool CVD::ServerPushJpegBuffer< C >::frame_pending (  )  [inline, virtual]

Is there a frame waiting in the buffer? This function does not block.

See is_live and is_flushable.

Implements CVD::LocalVideoBuffer< C >.

Definition at line 94 of file serverpushjpegbuffer.h.

template<class C>
void CVD::ServerPushJpegBuffer< C >::seek_to ( double   )  [inline, virtual]

Go to a particular point in the video buffer (only implemented in buffers of recorded video).

Parameters:
t The frame time in seconds

Reimplemented from CVD::LocalVideoBuffer< C >.

Definition at line 99 of file serverpushjpegbuffer.h.

template<class C>
double CVD::ServerPushJpegBuffer< C >::frame_rate (  )  [inline, virtual]

This value is not currently correct.

Implements CVD::VideoBuffer< C >.

Definition at line 102 of file serverpushjpegbuffer.h.


The documentation for this class was generated from the following file:
Generated on Wed Feb 18 10:23:08 2009 for CVD by  doxygen 1.5.3