CVD::VideoBuffer< T > Class Template Reference
[Video buffers]

#include <videobuffer.h>

Inheritance diagram for CVD::VideoBuffer< T >:

CVD::DeinterlaceBuffer< T > CVD::DVBuffer2< T > CVD::LocalVideoBuffer< T > CVD::O2Buffer CVD::ReadAheadVideoBuffer< T > CVD::V4L1Buffer< T > CVD::V4L2BufferT< T > CVD::V4LBuffer< T >

List of all members.


Detailed Description

template<class T>
class CVD::VideoBuffer< T >

Base class for objects which provide a video stream.

A video stream is a sequence of video frames (derived from VideoFrame).

Parameters:
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

Constructor & Destructor Documentation

template<class T>
CVD::VideoBuffer< T >::VideoBuffer ( VideoBufferType::Type  _type  )  [inline]

Construct the buffer with the known semantics.

Definition at line 82 of file videobuffer.h.


Member Function Documentation

template<class T>
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 >.

template<class T>
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().

template<class T>
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.

Parameters:
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().

template<class T>
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().

template<class T>
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().

template<class T>
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.

template<class T>
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().

template<class T>
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).

Parameters:
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().


Member Data Documentation

template<class T>
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.


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