ifw-fgf 2.0.0
 
Loading...
Searching...
No Matches
mudpiCreatorParallel.hpp
Go to the documentation of this file.
1
8
9// This class was copied from the MELT CS repository.
10
11
12#ifndef FGF_COM_MUDPI_CREATOR_PARALLEL_HPP_H_
13#define FGF_COM_MUDPI_CREATOR_PARALLEL_HPP_H_
14
15#define BOOST_BIND_NO_PLACEHOLDERS
16
17#include <cstdint>
18#include <vector>
19
20#include <mudpiif/MudpiPacket.hpp>
21#include <hrtcpif/HrtcpCommonPacket.hpp>
22#include <hrtcpif/HrtcpLeaderPacket.hpp>
23#include <hrtcpif/HrtcpTrailerPacket.hpp>
24#include <hrtcpif/HrtcpPayloadPacket.hpp>
25
26namespace ifw::fgf::common {
27
38 public:
39
40 static const size_t NUM_THREADS = 8; // Number of worker threads
41
42
43 MudpiCreatorParallel(uint32_t mudpi_topic_id,
44 uint16_t mudpi_component_id,
45 uint32_t starting_mudpi_sample_id,
46 hrtcpif::SimSource hrtcp_sim_source,
47 hrtcpif::Endianness hrtcp_endianness);
49
54
55 void createInitialPackets(size_t raw_image_size, int bytes_per_pixel);
56 std::vector<mudpiif::mudpiPacketJumbo>&
57 assemblePackets(std::vector<unsigned char>& raw_image_data,
58 int bytes_per_pixel,
59 double timestamp);
60 void increaseSampleId();
61
62 private:
63 uint32_t getSampleId() { return m_mudpi_sample_identity; }
64
65 std::vector<mudpiif::mudpiPacketJumbo> m_mudpi_packets;
66
67 uint32_t m_mudpi_sample_identity;
68 uint32_t m_mudpi_topic_identity;
69 uint16_t m_mudpi_component_identity;
70 hrtcpif::SimSource m_hrtcp_sim_source;
71 hrtcpif::Endianness m_hrtcp_endianness;
72 size_t m_image_size{0};
73
74 void assembleInitialLeadingPacket(size_t raw_image_size, int bytes_per_pixel);
75 void assembleInitialTrailingPacket(size_t raw_image_size);
76 void assembleInitialPayloadPackets(size_t raw_image_size,
77 int bytes_per_pixel);
78 void updatePayloadPackets(const std::vector<unsigned char>& raw_image_data,
79 size_t start,
80 size_t end,
81 size_t packet_start_index,
82 size_t num_packets,
83 double timestamp);
84
85 };
86
87}
88
89#endif /* FGF_COM_MUDPI_CREATOR_PARALLEL_HPP_H_ */
MudpiCreatorParallel(MudpiCreatorParallel &&)=delete
std::vector< mudpiif::mudpiPacketJumbo > & assemblePackets(std::vector< unsigned char > &raw_image_data, int bytes_per_pixel, double timestamp)
Definition mudpiCreatorParallel.cpp:71
static const size_t NUM_THREADS
Definition mudpiCreatorParallel.hpp:40
void increaseSampleId()
Definition mudpiCreatorParallel.cpp:276
MudpiCreatorParallel(uint32_t mudpi_topic_id, uint16_t mudpi_component_id, uint32_t starting_mudpi_sample_id, hrtcpif::SimSource hrtcp_sim_source, hrtcpif::Endianness hrtcp_endianness)
Constructor for the MudpiCreator class.
Definition mudpiCreatorParallel.cpp:16
MudpiCreatorParallel & operator=(MudpiCreatorParallel &)=delete
MudpiCreatorParallel(MudpiCreatorParallel &)=delete
Disables unused constructors and operators.
void createInitialPackets(size_t raw_image_size, int bytes_per_pixel)
Definition mudpiCreatorParallel.cpp:37
Definition binarySemaphore.hpp:45