29 case ifw::fnd::datatype::DataType::INT16:
30 case ifw::fnd::datatype::DataType::UINT16:
32 case ifw::fnd::datatype::DataType::INT32:
34 case ifw::fnd::datatype::DataType::FLOAT:
36 case ifw::fnd::datatype::DataType::INT64:
38 case ifw::fnd::datatype::DataType::DOUBLE:
40 case ifw::fnd::datatype::DataType::BYTE:
59 const std::string& interface_name,
61 const ifw::fnd::datatype::DataType data_type,
64 const std::string& ddt_broker_uri,
65 const std::string& ddt_stream,
66 const double ddt_interval,
67 const uint16_t mtu_size,
68 const int32_t topic_id,
69 ifw::rtmslib::ExtendedInfoMode ext_info_mode,
70 std::string log_file = ifw::rtmslib::RTMSLIB_LOG_PROPS,
71 std::string log_level =
"ERROR");
76 std::vector<uint8_t>& sample_payload);
82 bool EnsureGeometry(
const ifw::rtmslib::SampleExtInfo& ext_info,
83 std::size_t payload_size);
84 void ResetIntervalStats();
85 void UpdateIntervalStats(
double interval_ms);
89 ifw::fnd::datatype::DataType m_datatype;
90 std::string m_ddt_broker_uri;
91 std::string m_ddt_stream;
92 double m_ddt_interval;
94 std::shared_ptr<DdtImage> m_ddt_image;
96 ddt::DdtLogger* m_ddt_logger;
97 std::unique_ptr<ddt::DdtDataPublisher> m_ddt_pub;
98 DdtEncDecImage3D m_encoder;
99 MetaDataElementsImage3D m_ddt_metadata;
100 bool m_initialised{
false};
101 bool m_geometry_known{
false};
102 bool m_missing_geometry_logged{
false};
103 bool m_missing_bii_logged{
false};
106 uint32_t m_samples_received{0};
107 uint32_t m_samples_lost{0};
108 uint32_t m_last_sample_id{0};
109 uint64_t m_total_bytes{0};
110 std::chrono::steady_clock::time_point m_start_time{};
111 std::chrono::steady_clock::time_point m_last_sample_time{};
112 double m_min_interval_ms{std::numeric_limits<double>::max()};
113 double m_max_interval_ms{0.0};
114 double m_sum_interval_ms{0.0};
115 uint64_t m_interval_count{0};
116 double m_interval_mean_ms{0.0};
117 double m_interval_m2_ms{0.0};