RaftLib  0.3a
C++ Stream Processing Template Library
ratesample.hpp
1 
22 #ifndef _RATESAMPLE_HPP_
23 #define _RATESAMPLE_HPP_ 1
24 #include <queue>
25 #include <cstddef>
26 #include <cstdint>
28 #include "streamingstat.tcc"
30 #include "Clock.hpp"
31 class ratesample
32 {
36 const std::uint8_t WINDOW_SIZE = 16;
40 const std::uint8_t G_FILTER_RADIUS = 2;
45 const std::uint8_t FILTERED_WINDOW_SIZE = WINDOW_SIZE - ( 2 * G_FILTER_RADIUS );
46 
47 public:
54  ratesample( const sclock_t frame_width,
55  const std::size_t ele_size );
56 
58  virtual ~ratesample();
59 
60 
70  void addCount( const std::uint32_t value );
71 
80  float getRate();
81 
82 private:
87  void update();
88 
89  std::queue< std::uint32_t > window;
90  std::queue< float > filtered;
91  const sclock_t frame_width;
92  const std::size_t ele_size;
93  streamingstat< float > stats;
94  filter< float, 2, Gaussian > gauss_filter;
95  filter< double, 1, LaplacianGaussian > laplac_filter;
96  float rate;
97 };
98 #endif /* END _RATESAMPLE_HPP_ */
float getRate()
Definition: ratesample.cpp:51
ratesample(const sclock_t frame_width, const std::size_t ele_size)
Definition: ratesample.cpp:22
virtual ~ratesample()
Definition: ratesample.cpp:33
void addCount(const std::uint32_t value)
Definition: ratesample.cpp:39
Definition: ratesample.hpp:31