Create queue
This commit is contained in:
parent
b1a7ca5dfa
commit
f115830e9c
@ -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})
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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
12
src/queue_manager.cpp
Normal 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
11
src/queue_manager.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
#include <gst/gst.h>
|
||||
|
||||
class QueueManager {
|
||||
private:
|
||||
public:
|
||||
GstElement* queue = NULL;
|
||||
char* name;
|
||||
QueueManager();
|
||||
QueueManager(char*);
|
||||
~QueueManager();
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user