NVIDIA DeepStream SDK API Reference

9.1 Release
sources/libs/nvds_rest_server/nvds_rest_metrics.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: Apache-2.0
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _NVDS_REST_METRICS_H_
19 #define _NVDS_REST_METRICS_H_
20 
21 #include <glib.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #define MAX_COMPONENT_LEN 64
28 
29 // -----------------------------------------------------------------------------
30 // Data Structures
31 // -----------------------------------------------------------------------------
32 
36 typedef struct _NvDsMetricsFrameLatency {
37  guint source_id; // Source ID, e.g., camera ID
38  guint frame_num; // Frame number for which latency is measured
39  gdouble comp_in_timestamp; // System timestamp when buffer arrives at the first component
40  gdouble latency; // Latency of the frame in milliseconds
42 
46 typedef struct _NvDsMetricsCompLatency {
47  gchar component_name[MAX_COMPONENT_LEN]; // Component name
48  gdouble in_system_timestamp; // Timestamp when buffer arrives at component input
49  gdouble out_system_timestamp; // Timestamp when buffer is sent downstream
50  guint source_id; // Source ID, e.g., camera ID
51  guint frame_num; // Frame number
52  guint pad_index; // Pad index for the frame in the batch
53  guint num_sub_comps; // Number of subcomponents
54  gdouble latency; // Latency in milliseconds
56 
60 typedef struct {
61  guint source_id;
62  gdouble fps_val;
63  gchar source_name[256];
65 
69 typedef struct {
72 
74  guint fps_count;
75 
78 
79  GMutex mutex; // Global lock
80  GMutex frame_metrics_mutex; // Additional lock for frame metrics
81  void* user_data;
83 
87 typedef struct {
90 
92 
93  GMutex mutex; // Global lock
94  GMutex comp_metrics_mutex; // Additional lock for component metrics
95  void* user_data;
97 
98 // -----------------------------------------------------------------------------
99 // Global Instances
100 // -----------------------------------------------------------------------------
103 
104 // -----------------------------------------------------------------------------
105 // API Functions
106 // -----------------------------------------------------------------------------
107 
108 // Frame Latency APIs
111 void nvds_update_shared_frame_latency_data(NvDsMetricsFrameLatency* latency_data, guint count);
113 
114 // Component Latency APIs
117 void nvds_update_shared_comp_latency_data(NvDsMetricsCompLatency* latency_data, guint count);
119 
120 // FPS APIs
121 void nvds_update_shared_fps_data(NvDsMetricsFpsData* data, guint count);
123 
124 #ifdef __cplusplus
125 }
126 #endif
127 
128 #endif // _NVDS_REST_METRICS_H_
_NvDsMetricsCompLatency::source_id
guint source_id
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:50
_NvDsMetricsFrameLatency::frame_num
guint frame_num
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:38
_NvDsMetricsCompLatency::in_system_timestamp
gdouble in_system_timestamp
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:48
NvDsMetricsFpsData::fps_val
gdouble fps_val
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:62
NvDsCompLatencySharedData::comp_latency_available
gboolean comp_latency_available
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:91
_NvDsMetricsCompLatency::frame_num
guint frame_num
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:51
_NvDsMetricsFrameLatency::source_id
guint source_id
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:37
_NvDsMetricsFrameLatency
Holds information about the latency of a given frame.
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:36
nvds_init_shared_comp_latency_data
void nvds_init_shared_comp_latency_data(void)
NvDsFrameLatencySharedData::mutex
GMutex mutex
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:79
nvds_get_shared_frame_latency_data
NvDsMetricsFrameLatency * nvds_get_shared_frame_latency_data(guint *count)
NvDsFrameLatencySharedData::frame_latency_data
NvDsMetricsFrameLatency * frame_latency_data
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:70
g_shared_frame_latency_data
NvDsFrameLatencySharedData g_shared_frame_latency_data
nvds_get_shared_fps_data
NvDsMetricsFpsData * nvds_get_shared_fps_data(guint *count)
MAX_COMPONENT_LEN
#define MAX_COMPONENT_LEN
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:27
_NvDsMetricsCompLatency::out_system_timestamp
gdouble out_system_timestamp
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:49
NvDsFrameLatencySharedData::frame_latency_count
guint frame_latency_count
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:73
_NvDsMetricsCompLatency::num_sub_comps
guint num_sub_comps
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:53
_NvDsMetricsCompLatency
Holds information about latency of a given component.
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:46
_NvDsMetricsCompLatency::latency
gdouble latency
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:54
nvds_update_shared_frame_latency_data
void nvds_update_shared_frame_latency_data(NvDsMetricsFrameLatency *latency_data, guint count)
NvDsCompLatencySharedData::mutex
GMutex mutex
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:93
NvDsFrameLatencySharedData::user_data
void * user_data
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:81
NvDsFrameLatencySharedData::frame_metrics_mutex
GMutex frame_metrics_mutex
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:80
NvDsFrameLatencySharedData::fps_data_available
gboolean fps_data_available
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:77
_NvDsMetricsCompLatency::pad_index
guint pad_index
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:52
_NvDsMetricsFrameLatency::comp_in_timestamp
gdouble comp_in_timestamp
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:39
NvDsCompLatencySharedData::user_data
void * user_data
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:95
NvDsFrameLatencySharedData::fps_count
guint fps_count
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:74
nvds_cleanup_shared_frame_latency_data
void nvds_cleanup_shared_frame_latency_data(void)
NvDsMetricsFpsData
Holds FPS data for a source.
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:60
g_shared_comp_latency_data
NvDsCompLatencySharedData g_shared_comp_latency_data
nvds_get_shared_comp_latency_data
NvDsMetricsCompLatency * nvds_get_shared_comp_latency_data(guint *count)
NvDsFrameLatencySharedData::frame_latency_available
gboolean frame_latency_available
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:76
nvds_cleanup_shared_comp_latency_data
void nvds_cleanup_shared_comp_latency_data(void)
nvds_update_shared_fps_data
void nvds_update_shared_fps_data(NvDsMetricsFpsData *data, guint count)
NvDsMetricsFpsData::source_id
guint source_id
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:61
nvds_update_shared_comp_latency_data
void nvds_update_shared_comp_latency_data(NvDsMetricsCompLatency *latency_data, guint count)
NvDsMetricsFrameLatency
struct _NvDsMetricsFrameLatency NvDsMetricsFrameLatency
Holds information about the latency of a given frame.
NvDsMetricsCompLatency
struct _NvDsMetricsCompLatency NvDsMetricsCompLatency
Holds information about latency of a given component.
NvDsFrameLatencySharedData::fps_data
NvDsMetricsFpsData * fps_data
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:71
NvDsCompLatencySharedData::comp_metrics_mutex
GMutex comp_metrics_mutex
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:94
NvDsCompLatencySharedData::comp_latency_count
guint comp_latency_count
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:89
_NvDsMetricsFrameLatency::latency
gdouble latency
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:40
NvDsCompLatencySharedData
Shared data structure for component latency metrics.
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:87
NvDsFrameLatencySharedData
Shared data structure for frame latency metrics.
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:69
NvDsCompLatencySharedData::comp_latency_data
NvDsMetricsCompLatency * comp_latency_data
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:88
_NvDsMetricsCompLatency::component_name
gchar component_name[MAX_COMPONENT_LEN]
Definition: sources/libs/nvds_rest_server/nvds_rest_metrics.h:47
nvds_init_shared_frame_latency_data
void nvds_init_shared_frame_latency_data(void)