libcvd
Public Member Functions | Protected Attributes | Related Functions | List of all members
CVD::DiskBuffer2< T > Class Template Reference

Play a series of image files as a video stream. More...

#include <diskbuffer2.h>

Inheritance diagram for CVD::DiskBuffer2< T >:
Inheritance graph
[legend]
Collaboration diagram for CVD::DiskBuffer2< T >:
Collaboration graph
[legend]

Public Member Functions

 DiskBuffer2 (const std::vector< std::string > &names, double fps, VideoBufferFlags::OnEndOfBuffer eob=VideoBufferFlags::RepeatLastFrame)
 Construct a DiskBuffer2 from a vector of filenames. More...
 
virtual ImageRef size ()
 The size of the VideoFrames returned by this buffer.
 
virtual bool frame_pending ()
 Is there another frame waiting in the buffer? By default, this always returns true, but if the VideoBufferFlags::OnEndOfBuffer setting is VideoBufferFlags::UnsetPending, this will return false after the last frame has been returned by get_frame()
 
virtual DiskBuffer2Frame< T > * get_frame ()
 Returns the next frame from the buffer. This function blocks until a frame is ready.
 
virtual void put_frame (VideoFrame< T > *f)
 Tell the buffer that you are finished with this frame. More...
 
virtual void seek_to (double t)
 Go to a particular point in the video buffer (only implemented in buffers of recorded video) More...
 
virtual void on_end_of_buffer (VideoBufferFlags::OnEndOfBuffer eob)
 What should the buffer do when it reaches the end of the list of files? More...
 
virtual double frame_rate ()
 What is the (expected) frame rate of this video buffer, in frames per second?
 
- Public Member Functions inherited from CVD::LocalVideoBuffer< T >
 LocalVideoBuffer (typename VideoBufferType::Type t)
 
- Public Member Functions inherited from CVD::VideoBuffer< 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...
 
- Public Member Functions inherited from CVD::RawVideoBuffer
virtual RawVideoBuffersource_buffer ()
 Which video grabber provides the source images for this video grabber. More...
 
RawVideoBufferroot_buffer ()
 Follow the chain of video grabbers back as far as at will go. More...
 

Protected Attributes

ImageRef my_size
 
int next_frame
 
double start_time
 
double time_per_frame
 
double frames_per_sec
 
bool frame_ready
 
std::vector< std::string > file_names
 
VideoBufferFlags::OnEndOfBuffer end_of_buffer_behaviour
 

Related Functions

(Note that these are not member functions.)

std::vector< std::string > globlist (const std::string &gl)
 Make a list of strings from a UNIX-style pattern pathname expansion. More...
 

Detailed Description

template<typename T>
class CVD::DiskBuffer2< T >

Play a series of image files as a video stream.

Provides frames of type CVD::DiskBuffer2Frame and throws exceptions of type CVD::Exceptions::DiskBuffer2

Parameters
TThe 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).

Constructor & Destructor Documentation

◆ DiskBuffer2()

template<typename T >
CVD::DiskBuffer2< T >::DiskBuffer2 ( const std::vector< std::string > &  names,
double  fps,
VideoBufferFlags::OnEndOfBuffer  eob = VideoBufferFlags::RepeatLastFrame 
)
inline

Construct a DiskBuffer2 from a vector of filenames.

Typically the globlist() helper function is used to provide the filenames e.g. DiskBuffer2 buffer(globlist("~/Images/lab*.jpg"), 25);

Parameters
namesThe filenames to use (played in the order that they are in the vector)
fpsThe frames per second to report for this VideoBuffer
eobWhat should the buffer do when it reaches the end of the list of files?

Member Function Documentation

◆ on_end_of_buffer()

template<typename T>
virtual void CVD::DiskBuffer2< T >::on_end_of_buffer ( VideoBufferFlags::OnEndOfBuffer  eob)
inlinevirtual

What should the buffer do when it reaches the end of the list of files?

Parameters
eobThe desired behaviour

◆ put_frame()

template<typename T >
void CVD::DiskBuffer2< T >::put_frame ( VideoFrame< T > *  f)
inlinevirtual

Tell the buffer that you are finished with this frame.

Typically the VideoBuffer then destroys the frame.

Parameters
fThe frame that you are finished with.

Implements CVD::LocalVideoBuffer< T >.

◆ seek_to()

template<typename T >
void CVD::DiskBuffer2< T >::seek_to ( double  )
inlinevirtual

Go to a particular point in the video buffer (only implemented in buffers of recorded video)

Parameters
tThe frame time in seconds

Reimplemented from CVD::LocalVideoBuffer< T >.

Friends And Related Function Documentation

◆ globlist()

template<typename T>
std::vector< std::string > globlist ( const std::string &  gl)
related

Make a list of strings from a UNIX-style pattern pathname expansion.

Tilde expansion is done, and * ? [] and {} can all be used as normal. The filenames are returned in alphabetical (and numerical) order.

Parameters
glThe pattern from which to generate the strings

The documentation for this class was generated from the following file: