Create queue

This commit is contained in:
Barzan Hayati 2025-07-01 07:31:00 +00:00
parent b1a7ca5dfa
commit f115830e9c
5 changed files with 51 additions and 1 deletions

View File

@ -54,10 +54,12 @@ include_directories(${PROJECT_SOURCE_DIR}/gstds_example_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/tiler_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/nv_video_convert_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/nv_osd_manager.hpp)
include_directories(${PROJECT_SOURCE_DIR}/queue_manager.hpp)
set(SOURCES src/main.cpp src/camera_manager.cpp src/pipeline_manager.cpp src/streammux_manager.cpp src/source_bin.cpp src/gstds_example_manager.cpp src/tiler_manager.cpp
src/nv_video_convert_manager.cpp src/nv_osd_manager.cpp)
src/nv_video_convert_manager.cpp src/nv_osd_manager.cpp src/queue_manager.cpp)
# Create the executable
add_executable(${PROJECT_NAME} ${SOURCES})

View File

@ -32,6 +32,22 @@ void PipelineManager::set_cuda_device() {
<< std::endl;
}
char* createName(const char* str, int num) {
// Calculate the required length
// Max digits in an int is about 10 (for 32-bit int), plus 1 for null
// terminator
int length =
strlen(str) + 12; // Extra space for the number and null terminator
// Allocate memory for the new string
char* result = new char[length];
// Format the string
snprintf(result, length, "%s%d", str, num);
return result;
}
bool PipelineManager::create_pipeline_elements(int num_sources,
char** url_camera) {
streammux_manager->create_streammux(num_sources);
@ -64,5 +80,13 @@ bool PipelineManager::create_pipeline_elements(int num_sources,
nv_video_convert_manager->create_nv_video_convert();
nv_osd_manager->create_nv_osd();
/* Add queue elements between every two elements */
QueueManager queue_array[5];
const char* base = "queue";
for (int i = 0; i < 5; i++) {
char* name = createName(base, i);
queue_array[i] = QueueManager(name);
}
return true;
}

View File

@ -5,6 +5,7 @@
#include "gstds_example_manager.hpp"
#include "nv_osd_manager.hpp"
#include "nv_video_convert_manager.hpp"
#include "queue_manager.hpp"
#include "source_bin.hpp"
#include "streammux_manager.hpp"
#include "tiler_manager.hpp"

12
src/queue_manager.cpp Normal file
View File

@ -0,0 +1,12 @@
#include "queue_manager.hpp"
QueueManager::QueueManager() {}
QueueManager::QueueManager(char* queue_name) {
name = queue_name;
queue = gst_element_factory_make("queue", queue_name);
}
QueueManager::~QueueManager() {
// Cleanup code (if needed)
}

11
src/queue_manager.hpp Normal file
View File

@ -0,0 +1,11 @@
#include <gst/gst.h>
class QueueManager {
private:
public:
GstElement* queue = NULL;
char* name;
QueueManager();
QueueManager(char*);
~QueueManager();
};