#include <serverpushjpegbuffer.h>
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
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.
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 () |
CVD::ServerPushJpegBuffer< C >::S | ( | std::istream & | i, | |
bool | warnings_ = 0 , |
|||
int | eat_frames = 0 | |||
) | [inline] |
Construct a ServerPushJpegBuffer from an istream.
The istream
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. |
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.
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().
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.
f | The frame that you are finished with. |
Implements CVD::LocalVideoBuffer< C >.
Definition at line 84 of file serverpushjpegbuffer.h.
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.
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).
t | The frame time in seconds |
Reimplemented from CVD::LocalVideoBuffer< C >.
Definition at line 99 of file serverpushjpegbuffer.h.
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.