Add fps buffer probe second method
This commit is contained in:
parent
e719e9ace8
commit
be3aed33ba
@ -41,6 +41,7 @@ else()
|
||||
link_directories(/usr/local/cuda/lib64)
|
||||
endif()
|
||||
|
||||
|
||||
include_directories(/usr/lib/x86_64-linux-gnu/glib-2.0/include)
|
||||
include_directories(/opt/nvidia/deepstream/deepstream-7.1/sources/includes)
|
||||
include_directories(/usr/include/gstreamer-1.0)
|
||||
@ -94,4 +95,4 @@ target_link_libraries(${PROJECT_NAME} ${GLIB_LIBRARIES})
|
||||
target_link_libraries(${PROJECT_NAME} gstbase-1.0 gstreamer-1.0 gstrtp-1.0 gstvideo-1.0 gstrtspserver-1.0)
|
||||
target_link_libraries(${PROJECT_NAME} cudart cuda)
|
||||
target_link_libraries(${PROJECT_NAME} nvdsgst_infer nvds_meta nvds_inferutils
|
||||
nvds_utils nvdsgst_helper)#nvdsgst_metnvdsa
|
||||
nvdsgst_meta nvds_utils nvdsgst_helper)#nvdsgst_metnvdsa
|
||||
@ -69,19 +69,31 @@ GstPadProbeReturn PipelineManager::buffer_probe(GstPad* pad,
|
||||
(void)pad; // This explicitly marks it as unused
|
||||
(void)info; // This explicitly marks it as unused
|
||||
(void)user_data; // This explicitly marks it as unused
|
||||
static guint frame_count = 0;
|
||||
static guint64 frame_count = 0;
|
||||
static auto last_time = std::chrono::steady_clock::now();
|
||||
|
||||
frame_count++;
|
||||
auto current_time = std::chrono::steady_clock::now();
|
||||
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
current_time - last_time)
|
||||
.count();
|
||||
GstBuffer* buffer = GST_PAD_PROBE_INFO_BUFFER(info);
|
||||
NvDsBatchMeta* batch_meta = gst_buffer_get_nvds_batch_meta(buffer);
|
||||
|
||||
if (elapsed >= 1000) { // Update every second
|
||||
g_print("FPS: %ld\n", frame_count * 1000 / elapsed);
|
||||
if (batch_meta) {
|
||||
for (NvDsMetaList* l = batch_meta->frame_meta_list; l != NULL;
|
||||
l = l->next) {
|
||||
NvDsFrameMeta* frame_meta = (NvDsFrameMeta*)l->data;
|
||||
(void)frame_meta; // This explicitly marks it as unused
|
||||
frame_count++;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate FPS
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
auto elapsed =
|
||||
std::chrono::duration_cast<std::chrono::milliseconds>(now - last_time)
|
||||
.count();
|
||||
|
||||
if (elapsed >= 1000) {
|
||||
g_print("FPS: %.2f\n", (double)frame_count * 1000 / elapsed);
|
||||
frame_count = 0;
|
||||
last_time = current_time;
|
||||
last_time = now;
|
||||
}
|
||||
|
||||
return GST_PAD_PROBE_OK;
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
#include <glib.h>
|
||||
#include <gst/gst.h>
|
||||
#include <gst/video/video.h>
|
||||
|
||||
#include "cuda_runtime_api.h"
|
||||
#include "gstds_example_manager.hpp"
|
||||
#include "gstnvdsmeta.h"
|
||||
#include "message_handling.hpp"
|
||||
#include "nv_ds_logger_manager.hpp"
|
||||
#include "nv_osd_manager.hpp"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user