#include <videobuffer.h>
A video stream is a sequence of video frames (derived from VideoFrame).
T | The pixel type of the video frames |
Definition at line 78 of file videobuffer.h.
Public Member Functions | |
VideoBuffer (VideoBufferType::Type _type) | |
virtual | ~VideoBuffer () |
virtual ImageRef | size ()=0 |
virtual VideoFrame< T > * | get_frame ()=0 |
virtual void | put_frame (VideoFrame< T > *f)=0 |
virtual bool | frame_pending ()=0 |
VideoBufferType::Type | type () |
virtual void | flush () |
virtual double | frame_rate ()=0 |
virtual void | seek_to (double) |
Public Attributes | |
std::auto_ptr < VideoBufferData > | extra_data |
CVD::VideoBuffer< T >::VideoBuffer | ( | VideoBufferType::Type | _type | ) | [inline] |
virtual ImageRef CVD::VideoBuffer< T >::size | ( | ) | [pure virtual] |
The size of the VideoFrames returned by this buffer.
Implemented in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::LocalVideoBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoFileBuffer< T >, CVD::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, and CVD::LocalVideoBuffer< C >.
virtual VideoFrame<T>* CVD::VideoBuffer< T >::get_frame | ( | ) | [pure virtual] |
Returns the next frame from the buffer. This function blocks until a frame is ready.
Implemented in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::LocalVideoBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::TimedDiskBuffer< T >, CVD::VideoFileBuffer< T >, CVD::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, and CVD::LocalVideoBuffer< C >.
Referenced by CVD::VideoBuffer< pixel_T >::flush(), and CVD::ColourspaceBuffer< T, From >::get_frame().
virtual void CVD::VideoBuffer< T >::put_frame | ( | VideoFrame< T > * | f | ) | [pure 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. |
Implemented in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::LocalVideoBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoFileBuffer< T >, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, and CVD::LocalVideoBuffer< C >.
Referenced by CVD::VideoBuffer< pixel_T >::flush(), and CVD::ColourspaceBuffer< T, From >::get_frame().
virtual bool CVD::VideoBuffer< T >::frame_pending | ( | ) | [pure virtual] |
Is there a frame waiting in the buffer? This function does not block.
See is_live and is_flushable.
Implemented in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::LocalVideoBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoFileBuffer< T >, CVD::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, and CVD::LocalVideoBuffer< C >.
Referenced by CVD::VideoBuffer< pixel_T >::flush(), and CVD::ColourspaceBuffer< T, From >::frame_pending().
VideoBufferType::Type CVD::VideoBuffer< T >::type | ( | ) | [inline] |
Returns the type of the video stream.
A video with live semantics has frames fed at some externally controlled rate, such as from a video camera.
A stream with live semantics also may be flushable, in that all current frames can be removed from the stream while frame_pending() is 1, and then the next get_frame() will sleep until a frame arrives. This ensures that the latency is low by discarding any old frames. Buffers flushable in this manner have a type of VideoBuffer::Type::Flushable.
Some live streams are not flushable because it is not possible to determine the state of frame_pending(). These have the type VideoBuffer::Type::Live, and frame_pending() is always 1.
Otherwise, streams have a type VideoBuffer::Type::NotLive, and frame_pending is always 1
Definition at line 119 of file videobuffer.h.
Referenced by CVD::VideoBuffer< pixel_T >::flush().
virtual void CVD::VideoBuffer< T >::flush | ( | ) | [inline, virtual] |
Flush all old frames out of the video buffer, on a flushable buffer, causing the next get_frame() to sleep until a frame arrives.
On a non-flushable buffer, this does nothing.
Definition at line 128 of file videobuffer.h.
virtual double CVD::VideoBuffer< T >::frame_rate | ( | ) | [pure virtual] |
What is the (expected) frame rate of this video buffer, in frames per second?
Implemented in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoFileBuffer< T >, CVD::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, and CVD::V4LBuffer< T >.
Referenced by CVD::ColourspaceBuffer< T, From >::frame_rate().
virtual void CVD::VideoBuffer< T >::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 in CVD::ColourspaceBuffer< T, From >, CVD::DeinterlaceBuffer< T >, CVD::DiskBuffer2< T >, CVD::LocalVideoBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoFileBuffer< T >, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, and CVD::LocalVideoBuffer< C >.
Definition at line 139 of file videobuffer.h.
Referenced by CVD::ColourspaceBuffer< T, From >::seek_to().
std::auto_ptr<VideoBufferData> CVD::VideoBuffer< T >::extra_data |
Certain video buffers, especially the decorator classes, and buffers such as ServerPushJpegBuffer have additional data with the same lifetime as the buffer.
This is a tool to allow management of this data.
Definition at line 146 of file videobuffer.h.