chunk_image_buffer_description.hpp
1 #pragma once
2 
3 #include "../global.hpp"
4 #include "image_buffer_description.hpp"
5 
6 namespace Cvb
7 {
8 CVB_BEGIN_INLINE_NS
9 
18 namespace GevServer
19 {
30 {
31  friend class Stream;
32 
33 public:
46  ChunkImageBufferDescription(Size2D<int> size, ColorModel colorModel, DataType dataType, int totalPayloadSize)
47  : ChunkImageBufferDescription(size, PfncFormatValue::From(colorModel, dataType), totalPayloadSize)
48  {
49  }
50 
58  ChunkImageBufferDescription(Size2D<int> size, PfncFormat pixelFormat, int totalPayloadSize)
59  : ImageBufferDescription(size, pixelFormat)
60  {
61  if (totalPayloadSize < 4)
62  throw std::runtime_error("Total payload size must at least be "
63  "large enough to hold a chunk");
64 
65  totalPayloadSize_ = totalPayloadSize;
66  }
67 
71  int TotalPayloadSize() const noexcept { return totalPayloadSize_; }
72 
76  void SetTotalPayloadSize(int totalPayloadSize)
77  {
78  if (totalPayloadSize < 4)
79  throw std::runtime_error("Total payload size must at least be large enough to hold a chunk");
80 
81  totalPayloadSize_ = totalPayloadSize;
82  }
83 
96  std::int64_t LayoutId() const noexcept { return layoutId_; }
97 
114  void SetLayoutId(const std::int64_t &layoutId)
115  {
116  if (layoutId < 0)
117  throw std::runtime_error("Layout identifier must be larger or equal to 0");
118 
119  layoutId_ = static_cast<CExports::cvbuint32_t>(layoutId);
120  }
121 
122 private:
124  CExports::GSExtendedChunkDataBlock ChunkImageDataBlock()
125  {
126  auto dataBlock = CExports::GSExtendedChunkDataBlock{
127  ImageDataBlock(), static_cast<CExports::cvbuint32_t>(totalPayloadSize_), layoutId_};
128  dataBlock.ImageData.Header.PayloadType = CExports::TGSPayloadType::GSPT_ChunkImage;
129  return dataBlock;
130  }
131 
132  int totalPayloadSize_;
133  std::uint32_t layoutId_;
134 };
135 }
136 CVB_END_INLINE_NS
137 }
ChunkImageBufferDescription(Size2D< int > size, ColorModel colorModel, DataType dataType, int totalPayloadSize)
Creates a default chunk image buffer description.
Definition: chunk_image_buffer_description.hpp:46
ChunkImageBufferDescription(Size2D< int > size, PfncFormat pixelFormat, int totalPayloadSize)
Creates a default chunk image buffer description.
Definition: chunk_image_buffer_description.hpp:58
Describes a GenICam Pixel Format Naming Convention (PFNC) compatible image memory buffer with possibl...
Definition: chunk_image_buffer_description.hpp:29
int TotalPayloadSize() const noexcept
Gets a valid payload size over all chunks including the image chunk.
Definition: chunk_image_buffer_description.hpp:71
Describes a GenICam Pixel Format Naming Convention (PFNC) compatible image memory buffer.
Definition: image_buffer_description.hpp:23
Helper methods for PfncFormat values. ///
Definition: pfnc_format.hpp:1004
PfncFormat
GenICam Pixel Format Naming Convention (PFNC) format values.
Definition: pfnc_format.hpp:20
std::int64_t LayoutId() const noexcept
Gets the layout identifier for the chunks.
Definition: chunk_image_buffer_description.hpp:96
The stream to send Images or other data.
Definition: decl_stream.hpp:18
Root namespace for the Image Manager interface.
Definition: version.hpp:11
void SetLayoutId(const std::int64_t &layoutId)
Sets the layout identifier for the chunks.
Definition: chunk_image_buffer_description.hpp:114
void SetTotalPayloadSize(int totalPayloadSize)
Sets a valid payload size over all chunks including the image chunk.
Definition: chunk_image_buffer_description.hpp:76
ColorModel
Color model that this image is using.
Definition: global.hpp:150
Data type description for an image plane.
Definition: data_type.hpp:27