9#ifndef FGF_COM_RTMS_PUBLISHER_HPP_H_
10#define FGF_COM_RTMS_PUBLISHER_HPP_H_
12#define BOOST_BIND_NO_PLACEHOLDERS
16#include <boost/asio.hpp>
17#include <boost/atomic.hpp>
18#include <boost/lockfree/spsc_queue.hpp>
21#include <mudpiif/MudpiSender.hpp>
44 const std::string netif =
"",
45 const double packet_send_delay = 0);
52 void InitPublisher(
size_t raw_image_size,
int bytes_per_pixel);
79 static boost::lockfree::spsc_queue<std::shared_ptr<RawImage>,
83 double m_packet_send_delay{0};
84 std::chrono::duration<double> m_chrono_sleep_time;
87 std::thread m_pub_thread;
89 std::condition_variable m_pub_condvar;
91 log4cplus::Logger m_logger;
94 bool m_compute_latency{
false};
95 std::mutex m_start_pub_times_mtx;
96 std::list<double> m_start_pub_times;
98 std::mutex m_first_packet_sent_latencies_mtx;
99 std::list<double> m_first_packet_sent_latencies;
101 std::mutex m_frame_sent_latencies_mtx;
102 std::list<double> m_frame_sent_latencies;
104 void ComputeStat(
const std::list<double>& samples,
108 int& nb_of_samples)
const;
int m_port
Definition rtmsPublisher.hpp:68
virtual ~RtmsPublisher()
Definition rtmsPublisher.cpp:44
int m_sampleid
Definition rtmsPublisher.hpp:73
void StopPubThread()
Definition rtmsPublisher.cpp:211
boost::asio::io_context m_ioc
Definition rtmsPublisher.hpp:66
void GetFirstPacketSentLatency(double &latency, double &stddev, double &variance, int &nb_of_samples)
Definition rtmsPublisher.cpp:257
std::string m_address
Definition rtmsPublisher.hpp:67
void ComputeLatency()
Definition rtmsPublisher.cpp:234
static std::atomic< bool > m_stopped
Definition rtmsPublisher.hpp:76
void StartPublishing()
Definition rtmsPublisher.cpp:223
void ResetLatency()
Definition rtmsPublisher.cpp:242
std::string m_netif
Definition rtmsPublisher.hpp:69
std::unique_ptr< mudpiif::mudpiSenderJumbo > m_mudpi_sender
Definition rtmsPublisher.hpp:75
bool GetComputeLatency() const
Definition rtmsPublisher.cpp:238
void StartPubThread()
Definition rtmsPublisher.cpp:205
void InitPublisher(size_t raw_image_size, int bytes_per_pixel)
Definition rtmsPublisher.cpp:48
std::unique_ptr< ifw::fgf::common::MudpiCreatorParallel > m_mudpi_creator
Definition rtmsPublisher.hpp:74
RtmsPublisher(const std::string address, const int port, const std::string netif="", const double packet_send_delay=0)
Definition rtmsPublisher.cpp:30
void GetFrameSentLatency(double &latency, double &stddev, double &variance, int &nb_of_samples)
Definition rtmsPublisher.cpp:265
static boost::lockfree::spsc_queue< std::shared_ptr< RawImage >, boost::lockfree::capacity< 5 > > spsc_queue
Definition rtmsPublisher.hpp:80
void Run()
Implements infinite loop waiting for new images.
Definition rtmsPublisher.cpp:70
int m_topicid
Definition rtmsPublisher.hpp:72
MUDPI Creator public header file.
Definition binarySemaphore.hpp:45
constexpr auto STAT_WINDOW_SIZE
Definition rtmsPublisher.hpp:31
Image class for handling images from the camera.