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)
|
link_directories(/usr/local/cuda/lib64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
include_directories(/usr/lib/x86_64-linux-gnu/glib-2.0/include)
|
include_directories(/usr/lib/x86_64-linux-gnu/glib-2.0/include)
|
||||||
include_directories(/opt/nvidia/deepstream/deepstream-7.1/sources/includes)
|
include_directories(/opt/nvidia/deepstream/deepstream-7.1/sources/includes)
|
||||||
include_directories(/usr/include/gstreamer-1.0)
|
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} 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} cudart cuda)
|
||||||
target_link_libraries(${PROJECT_NAME} nvdsgst_infer nvds_meta nvds_inferutils
|
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)pad; // This explicitly marks it as unused
|
||||||
(void)info; // This explicitly marks it as unused
|
(void)info; // This explicitly marks it as unused
|
||||||
(void)user_data; // 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();
|
static auto last_time = std::chrono::steady_clock::now();
|
||||||
|
|
||||||
frame_count++;
|
GstBuffer* buffer = GST_PAD_PROBE_INFO_BUFFER(info);
|
||||||
auto current_time = std::chrono::steady_clock::now();
|
NvDsBatchMeta* batch_meta = gst_buffer_get_nvds_batch_meta(buffer);
|
||||||
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
|
|
||||||
current_time - last_time)
|
|
||||||
.count();
|
|
||||||
|
|
||||||
if (elapsed >= 1000) { // Update every second
|
if (batch_meta) {
|
||||||
g_print("FPS: %ld\n", frame_count * 1000 / elapsed);
|
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;
|
frame_count = 0;
|
||||||
last_time = current_time;
|
last_time = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_PAD_PROBE_OK;
|
return GST_PAD_PROBE_OK;
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
#include <gst/video/video.h>
|
||||||
|
|
||||||
#include "cuda_runtime_api.h"
|
#include "cuda_runtime_api.h"
|
||||||
#include "gstds_example_manager.hpp"
|
#include "gstds_example_manager.hpp"
|
||||||
|
#include "gstnvdsmeta.h"
|
||||||
#include "message_handling.hpp"
|
#include "message_handling.hpp"
|
||||||
#include "nv_ds_logger_manager.hpp"
|
#include "nv_ds_logger_manager.hpp"
|
||||||
#include "nv_osd_manager.hpp"
|
#include "nv_osd_manager.hpp"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user