/* * Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved. * * NVIDIA Corporation and its licensors retain all intellectual property * and proprietary rights in and to this software, related documentation * and any modifications thereto. Any use, reproduction, disclosure or * distribution of this software and related documentation without an express * license agreement from NVIDIA Corporation is strictly prohibited. * */ /** * @file * NVIDIA DeepStream: Metadata Extension Structures * * @b Description: This file defines the NVIDIA DeepStream metadata structures * used to describe metadata objects. */ /** * @defgroup metadata_extensions Metadata Extension Structures * * Defines metadata structures used to describe metadata objects. * * @ingroup NvDsMetaApi * @{ */ #ifndef NVDSMETA_H_ #define NVDSMETA_H_ #include #ifdef __cplusplus extern "C" { #endif /** * Defines event type flags. */ typedef enum NvDsEventType { NVDS_EVENT_ENTRY, NVDS_EVENT_EXIT, NVDS_EVENT_MOVING, NVDS_EVENT_STOPPED, NVDS_EVENT_EMPTY, NVDS_EVENT_PARKED, NVDS_EVENT_RESET, /** Reserved for future use. Custom events must be assigned values greater than this. */ NVDS_EVENT_RESERVED = 0x100, /** Specifies a custom event. */ NVDS_EVENT_CUSTOM = 0x101, NVDS_EVENT_FORCE32 = 0x7FFFFFFF } NvDsEventType; /** * Defines object type flags. */ typedef enum NvDsObjectType { NVDS_OBJECT_TYPE_VEHICLE, NVDS_OBJECT_TYPE_PERSON, NVDS_OBJECT_TYPE_FACE, NVDS_OBJECT_TYPE_BAG, NVDS_OBJECT_TYPE_BICYCLE, NVDS_OBJECT_TYPE_ROADSIGN, /** Reserved for future use. Custom objects must be assigned values greater than this. */ NVDS_OBJECT_TYPE_RESERVED = 0x100, /** Specifies a custom object. */ NVDS_OBJECT_TYPE_CUSTOM = 0x101, /** "object" key will be missing in the schema */ NVDS_OBJECT_TYPE_UNKNOWN = 0x102, NVDS_OBEJCT_TYPE_FORCE32 = 0x7FFFFFFF } NvDsObjectType; /** * Defines payload type flags. */ typedef enum NvDsPayloadType { NVDS_PAYLOAD_DEEPSTREAM, NVDS_PAYLOAD_DEEPSTREAM_MINIMAL, /** Reserved for future use. Custom payloads must be assigned values greater than this. */ NVDS_PAYLOAD_RESERVED = 0x100, /** Specifies a custom payload. You must implement the nvds_msg2p_* interface. */ NVDS_PAYLOAD_CUSTOM = 0x101, NVDS_PAYLOAD_FORCE32 = 0x7FFFFFFF } NvDsPayloadType; /** * Holds a rectangle's position and size. */ typedef struct NvDsRect { float top; /**< Holds the position of rectangle's top in pixels. */ float left; /**< Holds the position of rectangle's left side in pixels. */ float width; /**< Holds the rectangle's width in pixels. */ float height; /**< Holds the rectangle's height in pixels. */ } NvDsRect; /** * Holds geolocation parameters. */ typedef struct NvDsGeoLocation { gdouble lat; /**< Holds the location's latitude. */ gdouble lon; /**< Holds the location's longitude. */ gdouble alt; /**< Holds the location's altitude. */ } NvDsGeoLocation; /** * Hold a coordinate's position. */ typedef struct NvDsCoordinate { gdouble x; /**< Holds the coordinate's X position. */ gdouble y; /**< Holds the coordinate's Y position. */ gdouble z; /**< Holds the coordinate's Z position. */ } NvDsCoordinate; /** * Holds an object's signature. */ typedef struct NvDsObjectSignature { /** Holds a pointer to an array of signature values. */ gdouble *signature; /** Holds the number of signature values in @a signature. */ guint size; } NvDsObjectSignature; /** * Holds a vehicle object's parameters. */ typedef struct NvDsVehicleObject { gchar *type; /**< Holds a pointer to the type of the vehicle. */ gchar *make; /**< Holds a pointer to the make of the vehicle. */ gchar *model; /**< Holds a pointer to the model of the vehicle. */ gchar *color; /**< Holds a pointer to the color of the vehicle. */ gchar *region; /**< Holds a pointer to the region of the vehicle. */ gchar *license; /**< Holds a pointer to the license number of the vehicle.*/ } NvDsVehicleObject; /** * Holds a person object's parameters. */ typedef struct NvDsPersonObject { gchar *gender; /**< Holds a pointer to the person's gender. */ gchar *hair; /**< Holds a pointer to the person's hair color. */ gchar *cap; /**< Holds a pointer to the type of cap the person is wearing, if any. */ gchar *apparel; /**< Holds a pointer to a description of the person's apparel. */ guint age; /**< Holds the person's age. */ } NvDsPersonObject; /** * Holds a face object's parameters. */ typedef struct NvDsFaceObject { gchar *gender; /**< Holds a pointer to the person's gender. */ gchar *hair; /**< Holds a pointer to the person's hair color. */ gchar *cap; /**< Holds a pointer to the type of cap the person is wearing, if any. */ gchar *glasses; /**< Holds a pointer to the type of glasses the person is wearing, if any. */ gchar *facialhair;/**< Holds a pointer to the person's facial hair color. */ gchar *name; /**< Holds a pointer to the person's name. */ gchar *eyecolor; /**< Holds a pointer to the person's eye color. */ guint age; /**< Holds the person's age. */ } NvDsFaceObject; /** * Holds event message meta data. * * You can attach various types of objects (vehicle, person, face, etc.) * to an event by setting a pointer to the object in @a extMsg. * * Similarly, you can attach a custom object to an event by setting a pointer to the object in @a extMsg. * A custom object must be handled by the metadata parsing module accordingly. */ typedef struct NvDsEventMsgMeta { /** Holds the event's type. */ NvDsEventType type; /** Holds the object's type. */ NvDsObjectType objType; /** Holds the object's bounding box. */ NvDsRect bbox; /** Holds the object's geolocation. */ NvDsGeoLocation location; /** Holds the object's coordinates. */ NvDsCoordinate coordinate; /** Holds the object's signature. */ NvDsObjectSignature objSignature; /** Holds the object's class ID. */ gint objClassId; /** Holds the ID of the sensor that generated the event. */ gint sensorId; /** Holds the ID of the analytics module that generated the event. */ gint moduleId; /** Holds the ID of the place related to the object. */ gint placeId; /** Holds the ID of the component (plugin) that generated this event. */ gint componentId; /** Holds the video frame ID of this event. */ gint frameId; /** Holds the confidence level of the inference. */ gdouble confidence; /** Holds the object's tracking ID. */ gint trackingId; /** Holds a pointer to the generated event's timestamp. */ gchar *ts; /** Holds a pointer to the detected or inferred object's ID. */ gchar *objectId; /** Holds a pointer to a string containing the sensor's identity. */ gchar *sensorStr; /** Holds a pointer to a string containing other attributes associated with the object. */ gchar *otherAttrs; /** Holds a pointer to the name of the video file. */ gchar *videoPath; /** Holds a pointer to event message meta data. This can be used to hold data that can't be accommodated in the existing fields, or an associated object (representing a vehicle, person, face, etc.). */ gpointer extMsg; /** Holds the size of the custom object at @a extMsg. */ guint extMsgSize; /*My data*/ guint occupancy; guint source_id; guint lccum_cnt_entry; guint lccum_cnt_exit; } NvDsEventMsgMeta; /** * Holds event information. */ typedef struct _NvDsEvent { /** Holds the type of event. */ NvDsEventType eventType; /** Holds a pointer to event metadata. */ NvDsEventMsgMeta *metadata; } NvDsEvent; /** * Holds payload metadata. */ typedef struct NvDsPayload { /** Holds a pointer to the payload. */ gpointer payload; /** Holds the size of the payload. */ guint payloadSize; /** Holds the ID of the component (plugin) which attached the payload (optional). */ guint componentId; } NvDsPayload; #ifdef __cplusplus } #endif #endif /* NVDSMETA_H_ */ /** @} */