libcvd
videoreaderfilebuffer.h
1 #ifndef LIBCVD_VIDEOREADERFILEBUFFER_H
2 #define LIBCVD_VIDEOREADERFILEBUFFER_H
3 
4 #include "diskbuffer2.h"
5 #include "localvideobuffer.h"
6 #include "rgba.h"
7 #include "videobufferflags.h"
8 #include "videoreader.h"
9 
10 #include <cstdint>
11 #include <memory>
12 #include <string>
13 #include <utility>
14 
15 namespace CVD
16 {
17 
18 // Implements the LocalVideoBuffer interface using a VideoReader.
19 class VideoReaderFileBuffer : public LocalVideoBuffer<Rgba<std::uint8_t>>
20 {
21  public:
23 
24  private:
25  VideoReader m_reader;
26  std::string m_filename;
27  std::pair<Image<pixel_t>, std::int64_t> m_next_frame;
28 
29  public:
30  VideoReaderFileBuffer(const std::string& filename, int threads = 1);
32 
33  ImageRef size() override;
34  bool frame_pending() override;
35  void seek_to(double t) override;
37  void put_frame(VideoFrame<pixel_t>* f) override;
38 
39  double frame_rate() const;
40  std::string file_name() const;
41 };
42 
43 }
44 
45 #endif
LocalVideoFrame< pixel_t > * get_frame() override
Returns the next frame from the buffer. This function blocks until a frame is ready.
Definition: videoreaderfilebuffer.cc:48
All classes and functions are within the CVD namespace.
Definition: argb.h:6
bool frame_pending() override
Is there a frame waiting in the buffer? This function does not block.
Definition: videoreaderfilebuffer.cc:38
A colour consisting of red, green, blue and alpha components.
Definition: rgba.h:17
void seek_to(double t) override
Go to a particular point in the video buffer (only implemented in buffers of recorded video) ...
Definition: videoreaderfilebuffer.cc:43
Base class for a VideoBuffer which manages its own memory for each VideoFrame that it provides...
Definition: localvideobuffer.h:17
Definition: image_ref.h:29
A frame from a VideoBuffer.
Definition: videoframe.h:35
Definition: videoreaderfilebuffer.h:19
A frame from a LocalVideoBuffer, which manages its own data rather than wrapping data owned by the sy...
Definition: localvideoframe.h:30
Definition: videoreader.h:24
ImageRef size() override
The size of the VideoFrames returned by this buffer.
Definition: videoreaderfilebuffer.cc:33