18 #ifndef __NVDSINFERSERVER_I_OPTIONS_H__
19 #define __NVDSINFERSERVER_I_OPTIONS_H__
22 #include <nvdsinfer.h>
28 #include <type_traits>
44 #define OPTION_SEQUENCE_ID "sequence_id" // uint64_t
45 #define OPTION_SEQUENCE_START "sequence_start" // bool
46 #define OPTION_SEQUENCE_END "sequence_end" // bool
47 #define OPTION_PRIORITY "priority" // uint64_t
48 #define OPTION_TIMEOUT "timeout_ms" // uint64_t
49 #define OPTION_NVDS_UNIQUE_ID "nvds_unique_id" // int64_t
50 #define OPTION_NVDS_SREAM_IDS "nvds_stream_ids" // source_id list, vector<uint64_t>
51 #define OPTION_NVDS_FRAME_META_LIST "nvds_frame_meta_list" // vector<NvDsFrameMeta*>
52 #define OPTION_NVDS_OBJ_META_LIST "nvds_obj_meta_list" // vector<NvDsObjectMeta*>
53 #define OPTION_NVDS_BATCH_META "nvds_batch_meta" // NvDsBatchMeta*
54 #define OPTION_NVDS_GST_BUFFER "nvds_gst_buffer" // GstBuffer*
55 #define OPTION_NVDS_BUF_SURFACE "nvds_buf_surface" // NvBufSurface*
56 #define OPTION_NVDS_BUF_SURFACE_PARAMS_LIST "nvds_buf_surface_params_list" // vector<NvBufSurfaceParams*>
57 #define OPTION_TIMESTAMP "timestamp" // uint64_t timestamp nano seconds
63 virtual bool hasValue(
const std::string& key)
const = 0;
65 virtual uint32_t
getCount()
const = 0;
66 virtual std::string
getKey(uint32_t idx)
const = 0;
70 const std::string& name,
OptionType t,
void*& ptr)
const = 0;
73 const std::string& name,
OptionType ot,
void** ptrBase, uint32_t size)
const = 0;
75 template <OptionType V>
79 template <
typename Value>
85 return getValue<double>(name, v);
89 return getValue<int64_t>(name, v);
93 return getValue<uint64_t>(name, v);
97 return getValue<std::string>(name, v);
101 return getValue<bool>(name, v);
103 template <
typename Obj>
106 return getValue<Obj*>(name, obj);
109 template <
typename Value>
112 using ValueType = std::remove_const_t<Value>;
118 value = *
reinterpret_cast<ValueType*
>(ptr);
123 template <
typename Value>
126 using ValueType = std::remove_const_t<Value>;
133 std::vector<ValueType*> valuePtrs(size);
134 void** ptrBase =
reinterpret_cast<void**
>(valuePtrs.data());
139 for (uint32_t i = 0; i < size; ++i) {
140 values[i] = *valuePtrs[i];
147 template <OptionType v>
150 template <
typename Value>
171 #endif // __NVDSINFERSERVER_I_OPTIONS_H__