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