7#ifndef FGF_COM_RTMS_PUBLISHER_HPP_H_
8#define FGF_COM_RTMS_PUBLISHER_HPP_H_
10#define BOOST_BIND_NO_PLACEHOLDERS
14#include <boost/lockfree/spsc_queue.hpp>
15#include <boost/atomic.hpp>
17#include <mudpiif/MudpiSender.hpp>
40 const std::string netif =
"",
41 const double packet_send_delay = 0);
48 void InitPublisher(
size_t raw_image_size,
int bytes_per_pixel);
75 static boost::lockfree::spsc_queue<std::shared_ptr<RawImage>,
79 double m_packet_send_delay{0};
80 std::chrono::duration<double> m_chrono_sleep_time;
83 std::thread m_pub_thread;
85 std::condition_variable m_pub_condvar;
87 log4cplus::Logger m_logger;
90 bool m_compute_latency{
false};
91 std::mutex m_start_pub_times_mtx;
92 std::list<double> m_start_pub_times;
94 std::mutex m_first_packet_sent_latencies_mtx;
95 std::list<double> m_first_packet_sent_latencies;
97 std::mutex m_frame_sent_latencies_mtx;
98 std::list<double> m_frame_sent_latencies;
100 void ComputeStat(
const std::list<double>&
samples,
RTMS Publisher.
Definition rtmsPublisher.hpp:35
int m_port
Definition rtmsPublisher.hpp:64
virtual ~RtmsPublisher()
Definition rtmsPublisher.cpp:43
int m_sampleid
Definition rtmsPublisher.hpp:69
void StopPubThread()
Definition rtmsPublisher.cpp:210
boost::asio::io_context m_ioc
Definition rtmsPublisher.hpp:62
void GetFirstPacketSentLatency(double &latency, double &stddev, double &variance, int &nb_of_samples)
Definition rtmsPublisher.cpp:256
std::string m_address
Definition rtmsPublisher.hpp:63
void ComputeLatency()
Definition rtmsPublisher.cpp:233
static std::atomic< bool > m_stopped
Definition rtmsPublisher.hpp:72
void StartPublishing()
Definition rtmsPublisher.cpp:222
void ResetLatency()
Definition rtmsPublisher.cpp:241
std::string m_netif
Definition rtmsPublisher.hpp:65
std::unique_ptr< mudpiif::mudpiSenderJumbo > m_mudpi_sender
Definition rtmsPublisher.hpp:71
bool GetComputeLatency() const
Definition rtmsPublisher.cpp:237
void StartPubThread()
Definition rtmsPublisher.cpp:204
void InitPublisher(size_t raw_image_size, int bytes_per_pixel)
Definition rtmsPublisher.cpp:47
std::unique_ptr< ifw::fgf::common::MudpiCreatorParallel > m_mudpi_creator
Definition rtmsPublisher.hpp:70
RtmsPublisher(const std::string address, const int port, const std::string netif="", const double packet_send_delay=0)
Definition rtmsPublisher.cpp:29
void GetFrameSentLatency(double &latency, double &stddev, double &variance, int &nb_of_samples)
Definition rtmsPublisher.cpp:264
static boost::lockfree::spsc_queue< std::shared_ptr< RawImage >, boost::lockfree::capacity< 5 > > spsc_queue
Definition rtmsPublisher.hpp:76
void Run()
Implements infinite loop waiting for new images.
Definition rtmsPublisher.cpp:69
int m_topicid
Definition rtmsPublisher.hpp:68
Frame Grabber Camera Base Class definitions.
Definition binarySemaphore.hpp:43
constexpr auto STAT_WINDOW_SIZE
Definition rtmsPublisher.hpp:27