37 lines
1.3 KiB
C++
37 lines
1.3 KiB
C++
#include "streammux_manager.hpp"
|
|
|
|
#define SET_GPU_ID(object, gpu_id) \
|
|
g_object_set(G_OBJECT(object), "gpu-id", gpu_id, NULL);
|
|
#define GPU_ID 0
|
|
#define MUXER_BATCH_TIMEOUT_USEC 40000
|
|
|
|
using json = nlohmann::json;
|
|
|
|
StreammuxManager::StreammuxManager() {
|
|
json j;
|
|
std::ifstream i("../data/configuration.json");
|
|
i >> j;
|
|
|
|
MUXER_OUTPUT_HEIGHT = j["MUXER_OUTPUT_HEIGHT"];
|
|
MUXER_OUTPUT_WIDTH = j["MUXER_OUTPUT_WIDTH"];
|
|
}
|
|
|
|
bool StreammuxManager::create_streammux(int num_sources) {
|
|
/* Create nvstreammux instance to form batches from one or more sources. */
|
|
streammux = gst_element_factory_make("nvstreammux", "stream-muxer");
|
|
g_object_set(G_OBJECT(streammux), "batch-size", num_sources, NULL);
|
|
g_object_set(G_OBJECT(streammux), "enable-padding", 1, NULL);
|
|
// g_object_set (G_OBJECT (streammux), "drop-pipeline-eos",
|
|
// g_run_forever, NULL);
|
|
g_object_set(G_OBJECT(streammux), "live-source", 1, NULL);
|
|
g_object_set(G_OBJECT(streammux), "width", MUXER_OUTPUT_WIDTH, "height",
|
|
MUXER_OUTPUT_HEIGHT, "batched-push-timeout",
|
|
MUXER_BATCH_TIMEOUT_USEC, NULL);
|
|
SET_GPU_ID(streammux, GPU_ID);
|
|
|
|
if (!streammux) {
|
|
g_printerr("Unable to create streammux.Exiting.");
|
|
return false;
|
|
}
|
|
return true;
|
|
} |