Zivid C++ API 2.18.0+1b44dbef-1
Frame2DStreamStatistics.h
Go to the documentation of this file.
1/*******************************************************************************
2 * This file is part of the Zivid API
3 *
4 * Copyright 2015-2026 (C) Zivid AS
5 * All rights reserved.
6 *
7 * Zivid Software License, v1.0
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 *
19 * 3. Neither the name of Zivid AS nor the names of its contributors may be used
20 * to endorse or promote products derived from this software without specific
21 * prior written permission.
22 *
23 * 4. This software, with or without modification, must not be used with any
24 * other 3D camera than from Zivid AS.
25 *
26 * 5. Any software provided in binary form under this license must not be
27 * reverse engineered, decompiled, modified and/or disassembled.
28 *
29 * THIS SOFTWARE IS PROVIDED BY ZIVID AS "AS IS" AND ANY EXPRESS OR IMPLIED
30 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
31 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
32 * DISCLAIMED. IN NO EVENT SHALL ZIVID AS OR CONTRIBUTORS BE LIABLE FOR ANY
33 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
36 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * Contact: Zivid Customer Success Team <customersuccess@zivid.com>
41 * Info: http://www.zivid.com
42 ******************************************************************************/
43
44#pragma once
45
46#include <array>
47#include <chrono>
48#include <cmath>
49#include <ctime>
50#include <iomanip>
51#include <memory>
52#include <set>
53#include <sstream>
54#include <string>
55#include <tuple>
56#include <utility>
57#include <vector>
58
64#include "Zivid/Range.h"
65
66#ifdef _MSC_VER
67# pragma warning(push)
68# pragma warning(disable : 4251) // "X needs to have dll-interface to be used by clients of class Y."
69#endif
70
71namespace Zivid
72{
73
75
76 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
78 {
79 public:
82
84 static constexpr const char *path{ "" };
85
87 static constexpr const char *name{ "Frame2DStreamStatistics" };
88
90 static constexpr const char *description{
91 R"description(Streaming performance statistics for Frame2DGrabber.)description"
92 };
93
94 static constexpr size_t version{ 1 };
95
96#ifndef NO_DOC
97 template<size_t>
98 struct Version;
99
100 using LatestVersion = Zivid::Frame2DStreamStatistics;
101
102 // Short identifier. This value is not guaranteed to be universally unique
103 // Todo(ZIVID-2808): Move this to internal DataModelExt header
104 static constexpr std::array<uint8_t, 3> binaryId{ 'f', '2', 's' };
105
106#endif
107
109
110 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
112 {
113 public:
116
118 static constexpr const char *path{ "AverageGrabInterval" };
119
121 static constexpr const char *name{ "AverageGrabInterval" };
122
124 static constexpr const char *description{
125 R"description(Average interval between successfully grabbed streamed frames.)description"
126 };
127
129 using ValueType = std::chrono::microseconds;
130
133 {
134 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
135 }
136
139
141 explicit constexpr AverageGrabInterval(std::chrono::microseconds value)
142 : m_value{ value }
143 {}
144
146 std::chrono::microseconds value() const;
147
149 std::string toString() const;
150
152 bool operator==(const AverageGrabInterval &other) const
153 {
154 return m_value == other.m_value;
155 }
156
158 bool operator!=(const AverageGrabInterval &other) const
159 {
160 return m_value != other.m_value;
161 }
162
164 bool operator<(const AverageGrabInterval &other) const
165 {
166 return m_value < other.m_value;
167 }
168
170 bool operator>(const AverageGrabInterval &other) const
171 {
172 return m_value > other.m_value;
173 }
174
176 bool operator<=(const AverageGrabInterval &other) const
177 {
178 return m_value <= other.m_value;
179 }
180
182 bool operator>=(const AverageGrabInterval &other) const
183 {
184 return m_value >= other.m_value;
185 }
186
188 friend std::ostream &operator<<(std::ostream &stream, const AverageGrabInterval &value)
189 {
190 return stream << value.toString();
191 }
192
193 private:
194 void setFromString(const std::string &value);
195
196 std::chrono::microseconds m_value{ -1 };
197
198 friend struct DataModel::Detail::Befriend<AverageGrabInterval>;
199 };
200
202
203 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
205 {
206 public:
209
211 static constexpr const char *path{ "AverageGrabRateHz" };
212
214 static constexpr const char *name{ "AverageGrabRateHz" };
215
217 static constexpr const char *description{
218 R"description(Average rate of successfully grabbed streamed frames in frames per second.)description"
219 };
220
222 using ValueType = double;
223
225 static constexpr Range<double> validRange()
226 {
227 return { std::numeric_limits<double>::lowest(), std::numeric_limits<double>::max() };
228 }
229
231 AverageGrabRateHz() = default;
232
234 explicit constexpr AverageGrabRateHz(double value)
235 : m_value{ value }
236 {}
237
239 double value() const;
240
242 std::string toString() const;
243
245 bool operator==(const AverageGrabRateHz &other) const
246 {
247 return m_value == other.m_value;
248 }
249
251 bool operator!=(const AverageGrabRateHz &other) const
252 {
253 return m_value != other.m_value;
254 }
255
257 bool operator<(const AverageGrabRateHz &other) const
258 {
259 return m_value < other.m_value;
260 }
261
263 bool operator>(const AverageGrabRateHz &other) const
264 {
265 return m_value > other.m_value;
266 }
267
269 bool operator<=(const AverageGrabRateHz &other) const
270 {
271 return m_value <= other.m_value;
272 }
273
275 bool operator>=(const AverageGrabRateHz &other) const
276 {
277 return m_value >= other.m_value;
278 }
279
281 friend std::ostream &operator<<(std::ostream &stream, const AverageGrabRateHz &value)
282 {
283 return stream << value.toString();
284 }
285
286 private:
287 void setFromString(const std::string &value);
288
289 double m_value{ 0.0 };
290
291 friend struct DataModel::Detail::Befriend<AverageGrabRateHz>;
292 };
293
295
296 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
298 {
299 public:
302
304 static constexpr const char *path{ "KernelComputeTime" };
305
307 static constexpr const char *name{ "KernelComputeTime" };
308
310 static constexpr const char *description{
311 R"description(Average kernel compute time on the GPU per streamed frame.)description"
312 };
313
315 using ValueType = std::chrono::microseconds;
316
319 {
320 return { std::chrono::microseconds::min(), std::chrono::microseconds::max() };
321 }
322
324 KernelComputeTime() = default;
325
327 explicit constexpr KernelComputeTime(std::chrono::microseconds value)
328 : m_value{ value }
329 {}
330
332 std::chrono::microseconds value() const;
333
335 std::string toString() const;
336
338 bool operator==(const KernelComputeTime &other) const
339 {
340 return m_value == other.m_value;
341 }
342
344 bool operator!=(const KernelComputeTime &other) const
345 {
346 return m_value != other.m_value;
347 }
348
350 bool operator<(const KernelComputeTime &other) const
351 {
352 return m_value < other.m_value;
353 }
354
356 bool operator>(const KernelComputeTime &other) const
357 {
358 return m_value > other.m_value;
359 }
360
362 bool operator<=(const KernelComputeTime &other) const
363 {
364 return m_value <= other.m_value;
365 }
366
368 bool operator>=(const KernelComputeTime &other) const
369 {
370 return m_value >= other.m_value;
371 }
372
374 friend std::ostream &operator<<(std::ostream &stream, const KernelComputeTime &value)
375 {
376 return stream << value.toString();
377 }
378
379 private:
380 void setFromString(const std::string &value);
381
382 std::chrono::microseconds m_value{ -1 };
383
384 friend struct DataModel::Detail::Befriend<KernelComputeTime>;
385 };
386
388
389 // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding)
391 {
392 public:
395
397 static constexpr const char *path{ "NumberOfFramesUsedForStatistics" };
398
400 static constexpr const char *name{ "NumberOfFramesUsedForStatistics" };
401
403 static constexpr const char *description{
404 R"description(Number of streamed frames included in the stream-level averages.)description"
405 };
406
408 using ValueType = uint64_t;
409
411 static constexpr Range<uint64_t> validRange()
412 {
413 return { std::numeric_limits<uint64_t>::lowest(), std::numeric_limits<uint64_t>::max() };
414 }
415
418
420 explicit constexpr NumberOfFramesUsedForStatistics(uint64_t value)
421 : m_value{ value }
422 {}
423
425 uint64_t value() const;
426
428 std::string toString() const;
429
432 {
433 return m_value == other.m_value;
434 }
435
438 {
439 return m_value != other.m_value;
440 }
441
444 {
445 return m_value < other.m_value;
446 }
447
450 {
451 return m_value > other.m_value;
452 }
453
456 {
457 return m_value <= other.m_value;
458 }
459
462 {
463 return m_value >= other.m_value;
464 }
465
467 friend std::ostream &operator<<(std::ostream &stream, const NumberOfFramesUsedForStatistics &value)
468 {
469 return stream << value.toString();
470 }
471
472 private:
473 void setFromString(const std::string &value);
474
475 uint64_t m_value{ 0 };
476
477 friend struct DataModel::Detail::Befriend<NumberOfFramesUsedForStatistics>;
478 };
479
480 using Descendants = std::tuple<
485
488
490 explicit Frame2DStreamStatistics(const std::string &fileName);
491
497 [[nodiscard]] static Frame2DStreamStatistics fromSerialized(const std::string &value);
498
504 std::string serialize() const;
505
520#ifndef NO_DOC
521 template<
522 typename... Args,
523 typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0,
524 typename std::enable_if<
525 Zivid::Detail::TypeTraits::AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>::value,
526 int>::type = 0>
527#else
528 template<typename... Args>
529#endif
530 explicit Frame2DStreamStatistics(Args &&...args)
531 {
532 using namespace Zivid::Detail::TypeTraits;
533
534 static_assert(
535 AllArgsDecayedAreUnique<Args...>::value,
536 "Found duplicate types among the arguments passed to Frame2DStreamStatistics(...). "
537 "Types should be listed at most once.");
538
539 set(std::forward<Args>(args)...);
540 }
541
555#ifndef NO_DOC
556 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 2, int>::type = 0>
557#else
558 template<typename... Args>
559#endif
560 void set(Args &&...args)
561 {
562 using namespace Zivid::Detail::TypeTraits;
563
564 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
565 static_assert(
566 AllArgsAreDescendantNodes::value, "All arguments passed to set(...) must be descendant nodes.");
567
568 static_assert(
569 AllArgsDecayedAreUnique<Args...>::value,
570 "Found duplicate types among the arguments passed to set(...). "
571 "Types should be listed at most once.");
572
573 Zivid::DataModel::Detail::invokeSetWithEachArgument(*this, std::forward<Args>(args)...);
574 }
575
590#ifndef NO_DOC
591 template<typename... Args, typename std::enable_if<sizeof...(Args) >= 1, int>::type = 0>
592#else
593 template<typename... Args>
594#endif
595 Frame2DStreamStatistics copyWith(Args &&...args) const
596 {
597 using namespace Zivid::Detail::TypeTraits;
598
599 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
600 static_assert(
601 AllArgsAreDescendantNodes::value, "All arguments passed to copyWith(...) must be descendant nodes.");
602
603 static_assert(
604 AllArgsDecayedAreUnique<Args...>::value,
605 "Found duplicate types among the arguments passed to copyWith(...). "
606 "Types should be listed at most once.");
607
608 auto copy{ *this };
609 copy.set(std::forward<Args>(args)...);
610 return copy;
611 }
612
615 {
616 return m_averageGrabInterval;
617 }
618
621 {
622 return m_averageGrabInterval;
623 }
624
627 {
628 m_averageGrabInterval = value;
629 return *this;
630 }
631
634 {
635 return m_averageGrabRateHz;
636 }
637
640 {
641 return m_averageGrabRateHz;
642 }
643
646 {
647 m_averageGrabRateHz = value;
648 return *this;
649 }
650
653 {
654 return m_kernelComputeTime;
655 }
656
659 {
660 return m_kernelComputeTime;
661 }
662
665 {
666 m_kernelComputeTime = value;
667 return *this;
668 }
669
672 {
673 return m_numberOfFramesUsedForStatistics;
674 }
675
678 {
679 return m_numberOfFramesUsedForStatistics;
680 }
681
684 {
685 m_numberOfFramesUsedForStatistics = value;
686 return *this;
687 }
688
689 template<
690 typename T,
691 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::AverageGrabInterval>::value, int>::type =
692 0>
694 {
695 return m_averageGrabInterval;
696 }
697
698 template<
699 typename T,
700 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::AverageGrabRateHz>::value, int>::type = 0>
702 {
703 return m_averageGrabRateHz;
704 }
705
706 template<
707 typename T,
708 typename std::enable_if<std::is_same<T, Frame2DStreamStatistics::KernelComputeTime>::value, int>::type = 0>
710 {
711 return m_kernelComputeTime;
712 }
713
714 template<
715 typename T,
716 typename std::enable_if<
717 std::is_same<T, Frame2DStreamStatistics::NumberOfFramesUsedForStatistics>::value,
718 int>::type = 0>
720 {
721 return m_numberOfFramesUsedForStatistics;
722 }
723
724 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
726 {
727 return m_averageGrabInterval;
728 }
729
730 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
732 {
733 return m_averageGrabRateHz;
734 }
735
736 template<size_t i, typename std::enable_if<i == 2, int>::type = 0>
738 {
739 return m_kernelComputeTime;
740 }
741
742 template<size_t i, typename std::enable_if<i == 3, int>::type = 0>
744 {
745 return m_numberOfFramesUsedForStatistics;
746 }
747
749 template<typename F>
750 void forEach(const F &f) const
751 {
752 f(m_averageGrabInterval);
753 f(m_averageGrabRateHz);
754 f(m_kernelComputeTime);
755 f(m_numberOfFramesUsedForStatistics);
756 }
757
759 template<typename F>
760 void forEach(const F &f)
761 {
762 f(m_averageGrabInterval);
763 f(m_averageGrabRateHz);
764 f(m_kernelComputeTime);
765 f(m_numberOfFramesUsedForStatistics);
766 }
767
769 bool operator==(const Frame2DStreamStatistics &other) const;
770
772 bool operator!=(const Frame2DStreamStatistics &other) const;
773
775 std::string toString() const;
776
778 friend std::ostream &operator<<(std::ostream &stream, const Frame2DStreamStatistics &value)
779 {
780 return stream << value.toString();
781 }
782
784 void save(const std::string &fileName) const;
785
787 void load(const std::string &fileName);
788
789 private:
790 void setFromString(const std::string &value);
791
792 void setFromString(const std::string &fullPath, const std::string &value);
793
794 std::string getString(const std::string &fullPath) const;
795
796 AverageGrabInterval m_averageGrabInterval;
797 AverageGrabRateHz m_averageGrabRateHz;
798 KernelComputeTime m_kernelComputeTime;
799 NumberOfFramesUsedForStatistics m_numberOfFramesUsedForStatistics;
800
801 friend struct DataModel::Detail::Befriend<Frame2DStreamStatistics>;
802 };
803
804#ifndef NO_DOC
805 template<>
806 struct Frame2DStreamStatistics::Version<1>
807 {
808 using Type = Frame2DStreamStatistics;
809 };
810#endif
811
812} // namespace Zivid
813
814#ifndef NO_DOC
816namespace Zivid::Detail
817{
818
819 ZIVID_CORE_EXPORT void save(const Zivid::Frame2DStreamStatistics &dataModel, std::ostream &ostream);
820 ZIVID_CORE_EXPORT void load(Zivid::Frame2DStreamStatistics &dataModel, std::istream &istream);
821
822} // namespace Zivid::Detail
823#endif
824
825#ifdef _MSC_VER
826# pragma warning(pop)
827#endif
828
829#ifndef NO_DOC
830# if !(defined(_MSC_VER) && (_MSC_VER <= 1900))
831namespace std // NOLINT
832{
833
834 template<>
835 struct tuple_size<Zivid::Frame2DStreamStatistics> : integral_constant<size_t, 4>
836 {};
837
838 template<size_t i>
839 struct tuple_element<i, Zivid::Frame2DStreamStatistics>
840 {
841 static_assert(i < tuple_size<Zivid::Frame2DStreamStatistics>::value, "Index must be less than 4");
842
843 using type // NOLINT
844 = decltype(declval<Zivid::Frame2DStreamStatistics>().get<i>());
845 };
846
847} // namespace std
848# endif
849#endif
850
851// If we have access to the DataModel library, automatically include internal DataModel
852// header. This header is necessary for serialization and deserialization.
853#if defined(__has_include) && !defined(NO_DOC)
854# if __has_include("Zivid/Frame2DStreamStatisticsInternal.h") && __has_include("Zivid/DataModelNodeMetaData.h")
855# include "Zivid/Frame2DStreamStatisticsInternal.h"
856# endif
857#endif
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
Average interval between successfully grabbed streamed frames.
Definition Frame2DStreamStatistics.h:112
bool operator>(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:170
bool operator<(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:164
bool operator!=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:158
bool operator==(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:152
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for AverageGrabInterval.
Definition Frame2DStreamStatistics.h:132
bool operator>=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:182
std::chrono::microseconds ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:129
std::string toString() const
Get the value as string.
friend std::ostream & operator<<(std::ostream &stream, const AverageGrabInterval &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:188
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:115
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:121
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:118
bool operator<=(const AverageGrabInterval &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:176
AverageGrabInterval()=default
Default constructor.
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:124
constexpr AverageGrabInterval(std::chrono::microseconds value)
Constructor.
Definition Frame2DStreamStatistics.h:141
std::chrono::microseconds value() const
Get the value.
Average rate of successfully grabbed streamed frames in frames per second.
Definition Frame2DStreamStatistics.h:205
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:211
friend std::ostream & operator<<(std::ostream &stream, const AverageGrabRateHz &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:281
constexpr AverageGrabRateHz(double value)
Constructor.
Definition Frame2DStreamStatistics.h:234
static constexpr Range< double > validRange()
The range of valid values for AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:225
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:214
bool operator<(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:257
bool operator!=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:251
AverageGrabRateHz()=default
Default constructor.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:208
std::string toString() const
Get the value as string.
bool operator==(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:245
bool operator>=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:275
bool operator>(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:263
double ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:222
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:217
bool operator<=(const AverageGrabRateHz &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:269
Average kernel compute time on the GPU per streamed frame.
Definition Frame2DStreamStatistics.h:298
bool operator<(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:350
bool operator<=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:362
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:310
KernelComputeTime()=default
Default constructor.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:301
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:304
bool operator!=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:344
bool operator==(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:338
bool operator>(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:356
bool operator>=(const KernelComputeTime &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:368
std::chrono::microseconds ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:315
static constexpr Range< std::chrono::microseconds > validRange()
The range of valid values for KernelComputeTime.
Definition Frame2DStreamStatistics.h:318
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:307
std::chrono::microseconds value() const
Get the value.
friend std::ostream & operator<<(std::ostream &stream, const KernelComputeTime &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:374
std::string toString() const
Get the value as string.
constexpr KernelComputeTime(std::chrono::microseconds value)
Constructor.
Definition Frame2DStreamStatistics.h:327
Number of streamed frames included in the stream-level averages.
Definition Frame2DStreamStatistics.h:391
friend std::ostream & operator<<(std::ostream &stream, const NumberOfFramesUsedForStatistics &value)
Operator to serialize the value to a stream.
Definition Frame2DStreamStatistics.h:467
static constexpr Range< uint64_t > validRange()
The range of valid values for NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:411
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:394
uint64_t ValueType
The type of the underlying value.
Definition Frame2DStreamStatistics.h:408
bool operator>(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:449
bool operator==(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:431
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:400
bool operator!=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:437
constexpr NumberOfFramesUsedForStatistics(uint64_t value)
Constructor.
Definition Frame2DStreamStatistics.h:420
bool operator<=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:455
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:403
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:397
bool operator<(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:443
bool operator>=(const NumberOfFramesUsedForStatistics &other) const
Comparison operator.
Definition Frame2DStreamStatistics.h:461
std::string toString() const
Get the value as string.
Streaming performance statistics for Frame2DGrabber.
Definition Frame2DStreamStatistics.h:78
const Frame2DStreamStatistics::AverageGrabRateHz & get() const
Definition Frame2DStreamStatistics.h:701
static constexpr const char * path
The full path for this value.
Definition Frame2DStreamStatistics.h:84
void load(const std::string &fileName)
Load from the given file.
const AverageGrabRateHz & averageGrabRateHz() const
Get AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:633
friend std::ostream & operator<<(std::ostream &stream, const Frame2DStreamStatistics &value)
Operator to send the value as string to a stream.
Definition Frame2DStreamStatistics.h:778
Frame2DStreamStatistics & set(const AverageGrabRateHz &value)
Set AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:645
static Frame2DStreamStatistics fromSerialized(const std::string &value)
Construct a new Frame2DStreamStatistics instance from a previously serialized string.
std::string serialize() const
Serialize to a string.
std::tuple< Frame2DStreamStatistics::AverageGrabInterval, Frame2DStreamStatistics::AverageGrabRateHz, Frame2DStreamStatistics::KernelComputeTime, Frame2DStreamStatistics::NumberOfFramesUsedForStatistics > Descendants
Definition Frame2DStreamStatistics.h:480
const NumberOfFramesUsedForStatistics & numberOfFramesUsedForStatistics() const
Get NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:671
const Frame2DStreamStatistics::KernelComputeTime & get() const
Definition Frame2DStreamStatistics.h:709
bool operator!=(const Frame2DStreamStatistics &other) const
Inequality operator.
const AverageGrabInterval & averageGrabInterval() const
Get AverageGrabInterval.
Definition Frame2DStreamStatistics.h:614
static constexpr size_t version
Definition Frame2DStreamStatistics.h:94
std::string toString() const
Get the value as string.
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition Frame2DStreamStatistics.h:750
const KernelComputeTime & kernelComputeTime() const
Get KernelComputeTime.
Definition Frame2DStreamStatistics.h:652
AverageGrabRateHz & averageGrabRateHz()
Get AverageGrabRateHz.
Definition Frame2DStreamStatistics.h:639
void save(const std::string &fileName) const
Save to the given file.
Frame2DStreamStatistics(Args &&...args)
Constructor taking variadic number of arguments.
Definition Frame2DStreamStatistics.h:530
const Frame2DStreamStatistics::NumberOfFramesUsedForStatistics & get() const
Definition Frame2DStreamStatistics.h:719
void set(Args &&...args)
Set multiple arguments.
Definition Frame2DStreamStatistics.h:560
bool operator==(const Frame2DStreamStatistics &other) const
Equality operator.
Frame2DStreamStatistics & set(const NumberOfFramesUsedForStatistics &value)
Set NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:683
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition Frame2DStreamStatistics.h:760
Frame2DStreamStatistics & set(const KernelComputeTime &value)
Set KernelComputeTime.
Definition Frame2DStreamStatistics.h:664
KernelComputeTime & kernelComputeTime()
Get KernelComputeTime.
Definition Frame2DStreamStatistics.h:658
const Frame2DStreamStatistics::AverageGrabInterval & get() const
Definition Frame2DStreamStatistics.h:693
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition Frame2DStreamStatistics.h:81
NumberOfFramesUsedForStatistics & numberOfFramesUsedForStatistics()
Get NumberOfFramesUsedForStatistics.
Definition Frame2DStreamStatistics.h:677
Frame2DStreamStatistics()
Default constructor.
Frame2DStreamStatistics & set(const AverageGrabInterval &value)
Set AverageGrabInterval.
Definition Frame2DStreamStatistics.h:626
Frame2DStreamStatistics(const std::string &fileName)
Construct Frame2DStreamStatistics by loading from file.
Frame2DStreamStatistics copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition Frame2DStreamStatistics.h:595
static constexpr const char * description
The description for this value.
Definition Frame2DStreamStatistics.h:90
static constexpr const char * name
The name of this value.
Definition Frame2DStreamStatistics.h:87
AverageGrabInterval & averageGrabInterval()
Get AverageGrabInterval.
Definition Frame2DStreamStatistics.h:620
Class describing a range of values for a given type T.
Definition Range.h:75
NodeType
Definition NodeType.h:49
@ leafValue
Definition NodeType.h:52
@ group
Definition NodeType.h:50
Definition EnvironmentInfo.h:74
Get version information for the library.
Definition Version.h:58
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:85