#include <videobuffer.h>
Public Member Functions | |
virtual void | flush () |
virtual VideoFrame< T > * | get_frame ()=0 |
Returns the next frame from the buffer. This function blocks until a frame is ready. | |
virtual void | put_frame (VideoFrame< T > *f)=0 |
VideoBufferType::Type | type () |
VideoBuffer (VideoBufferType::Type _type) | |
Construct the buffer with the known semantics. | |
virtual | ~VideoBuffer () |
Private Attributes | |
VideoBufferType::Type | m_type |
Base class for objects which provide a typed video stream. A video stream is a sequence of video frames (derived from VideoFrame).
T | The pixel type of the video frames |
Definition at line 110 of file videobuffer.h.
CVD::VideoBuffer< T >::VideoBuffer | ( | VideoBufferType::Type | _type | ) | [inline] |
Construct the buffer with the known semantics.
Definition at line 114 of file videobuffer.h.
virtual CVD::VideoBuffer< T >::~VideoBuffer | ( | ) | [inline, virtual] |
Definition at line 118 of file videobuffer.h.
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.
Implements CVD::RawVideoBuffer.
Reimplemented in CVD::VideoBufferWithData< T, D >.
Definition at line 128 of file videobuffer.h.
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::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, CVD::LocalVideoBuffer< T >, CVD::QTBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::TimedDiskBuffer< T >, CVD::VideoBufferWithData< T, D >, CVD::VideoFileBuffer< T >, and CVD::LocalVideoBuffer< C >.
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::O2Buffer, CVD::DVBuffer2< T >, CVD::DVBuffer3< pixel_T >, CVD::V4L1Buffer< T >, CVD::V4L2BufferT< T >, CVD::V4LBuffer< T >, CVD::LocalVideoBuffer< T >, CVD::QTBuffer< T >, CVD::ReadAheadVideoBuffer< T >, CVD::ServerPushJpegBuffer< C >, CVD::VideoBufferWithData< T, D >, CVD::VideoFileBuffer< T >, and CVD::LocalVideoBuffer< C >.
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
This should be in the base class
Definition at line 156 of file videobuffer.h.
VideoBufferType::Type CVD::VideoBuffer< T >::m_type [private] |
Definition at line 162 of file videobuffer.h.