libcvd
|
Play a server push stream as a video stream. More...
#include <serverpushjpegbuffer.h>
Public Member Functions | |
ServerPushJpegBuffer (std::istream &i, bool warnings_=0, int eat_frames=0) | |
Construct a ServerPushJpegBuffer from an istream. More... | |
virtual ImageRef | size () |
The size of the VideoFrames returned by this buffer. | |
LocalVideoFrame< C > * | get_frame () |
Returns the next frame from the buffer. This function blocks until a frame is ready. | |
void | put_frame (VideoFrame< C > *f) |
Tell the buffer that you are finished with this frame. More... | |
bool | frame_pending () |
Is there a frame waiting in the buffer? This function does not block. More... | |
void | seek_to (double) |
Go to a particular point in the video buffer (only implemented in buffers of recorded video) More... | |
double | frame_rate () |
This value is not currently correct. | |
![]() | |
LocalVideoBuffer (typename VideoBufferType::Type t) | |
![]() | |
VideoBuffer (VideoBufferType::Type _type) | |
Construct the buffer with the known semantics. | |
virtual void | flush () |
Flush all old frames out of the video buffer, on a flushable buffer, causing the next get_frame() to sleep until a frame arrives. More... | |
VideoBufferType::Type | type () |
Returns the type of the video stream. More... | |
![]() | |
virtual RawVideoBuffer * | source_buffer () |
Which video grabber provides the source images for this video grabber. More... | |
RawVideoBuffer * | root_buffer () |
Follow the chain of video grabbers back as far as at will go. More... | |
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:
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.
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). |
|
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. |
|
inlinevirtual |
Is there a frame waiting in the buffer? This function does not block.
See is_live and is_flushable.
Implements CVD::LocalVideoBuffer< C >.
|
inlinevirtual |
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 >.
|
inlinevirtual |
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 >.