29 lines
1.1 KiB
C++
29 lines
1.1 KiB
C++
#include "tiler_manager.hpp"
|
|
|
|
#define SET_GPU_ID(object, gpu_id) \
|
|
g_object_set(G_OBJECT(object), "gpu-id", gpu_id, NULL);
|
|
#define GPU_ID 0
|
|
|
|
TilerManager::TilerManager() {}
|
|
|
|
bool TilerManager::create_tiler(int num_sources, const int MUXER_OUTPUT_WIDTH,
|
|
const int MUXER_OUTPUT_HEIGHT) {
|
|
/* Use nvtiler to composite the batched frames into a 2D tiled array based
|
|
* on the source of the frames. */
|
|
tiler = gst_element_factory_make("nvmultistreamtiler", "nvtiler");
|
|
tiler_rows = (guint)sqrt(num_sources);
|
|
tiler_columns = (guint)ceil(1.0 * num_sources / tiler_rows);
|
|
/* we set the tiler properties here */
|
|
g_object_set(G_OBJECT(tiler), "rows", tiler_rows, "columns", tiler_columns,
|
|
"width", MUXER_OUTPUT_WIDTH, "height", MUXER_OUTPUT_HEIGHT,
|
|
NULL);
|
|
SET_GPU_ID(tiler, GPU_ID);
|
|
// g_object_set (G_OBJECT (tiler), "show-source", 1);
|
|
// g_object_set (G_OBJECT (tiler), "show-source", 0, NULL);
|
|
|
|
if (!tiler) {
|
|
g_printerr("Could not create Tiler. Exiting.\n");
|
|
return false;
|
|
}
|
|
return true;
|
|
} |