MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ set_value_at()

void MayaFlux::Kakshya::VideoStreamContainer::set_value_at ( const std::vector< uint64_t > &  coordinates,
double  value 
)
overridevirtual

Set a single value at the specified coordinates.

Parameters
coordinatesN-dimensional coordinates
valueValue to set

Implements MayaFlux::Kakshya::NDDataContainer.

Definition at line 246 of file VideoStreamContainer.cpp.

247{
248 if (coordinates.size() < 4 || m_data.empty())
249 return;
250
251 auto* pixels = std::get_if<std::vector<uint8_t>>(&m_data[0]);
252 if (!pixels)
253 return;
254
255 const uint64_t frame = coordinates[0];
256 const uint64_t y = coordinates[1];
257 const uint64_t x = coordinates[2];
258 const uint64_t c = coordinates[3];
259
260 if (frame >= m_num_frames || y >= m_height || x >= m_width || c >= m_channels)
261 return;
262
263 const size_t idx = (frame * m_height * m_width * m_channels)
264 + (y * m_width * m_channels)
265 + (x * m_channels)
266 + c;
267
268 if (idx >= pixels->size())
269 return;
270
271 (*pixels)[idx] = static_cast<uint8_t>(std::clamp(value * 255.0, 0.0, 255.0));
272}

References m_channels, m_data, m_height, m_num_frames, and m_width.