Gst-nvdsvideotemplate ====================== The OSS Gst-nvdsvideotemplate plugin is a template plugin which provides a custom library hooking interface for single/batched video frame(s) processing. Custom lib implementation may have algorithms to transform or process input buffers depending upon the use case. It can support NV12 and RGBA inputs. The plugin accepts batched NVMM HW and RAW SW buffers, and outputs batched NVMM HW buffers. .. image:: /content/DS_plugin_gst-nvdsvideotemplate.png :align: center :alt: Gst-nvdsvideotemplate Inputs and Outputs ----------------------- * Inputs * NVMM or RAW Gst Buffers. Supported formats are NV12 and RGBA * Control parameters * customlib-name * gpu-id * customlib-props * Output * Transformed Gst Buffer Features ----------- The following table summarizes the features of the plugin. .. csv-table:: Gst-nvdsvideotemplate features :file: ../text/tables/Gst-nvdsvideotemplate tables/DS_Plugin_gst-nvdsvideotemplate_features.csv :widths: 30, 30, 30 :header-rows: 1 customlib_impl Interfaces --------------------------- * SetInitParams => Based on the negotiated caps, this API creates output buffer pool of the negotiated resolution * HandleEvent => This API handles standard Gstreamer events as well as custom events such as PAD_ADDED PAD_DELETED etc. * GetCompatibleCaps => This API returns the fixated caps to be set on either SINK / SRC pad of the plugin * ProcessBuffer => This API passes the GstBuffer to customlib for further processing * SetProperty => This API sets the customlib properties that are used by the underlying library for processing Gst Properties ---------------- The following table describes the Gst properties of the Gst-nvdsvideotemplate plugin. .. csv-table:: Gst-nvsvideotemplate gst properties :file: ../text/tables/Gst-nvdsvideotemplate tables/DS_Plugin_gst-nvdsvideotemplate_gst-properties.csv :widths: 20, 20, 20, 20, 20 :header-rows: 1 Sample pipelines ---------------- **For single stream:** :: gst-launch-1.0 filesrc location=/home/nvidia/sample_720p.mp4 ! decodebin ! \ nvvideoconvert ! nvdsvideotemplate customlib-name="libcustom_impl.so" \ customlib-props="scale-factor:2.0" ! nveglglessink **For Multi-stream:** :: gst-launch-1.0 filesrc location= ~/sample_720p.mp4 ! decodebin ! m.sink_0 \ nvstreammux name=m width=640 height=480 batch-size=4 ! nvinfer config-file-path=config_infer_primary.txt \ ! nvdsvideotemplate customlib-name="libcustom_impl.so" customlib-props="scale-factor:2.0" \ ! nvmultistreamtiler ! nvvideoconvert ! "video/x-raw(memory:NVMM),width=320, height=240" ! nvdsosd ! nveglglessink \ filesrc location= ~/sample_720p.mp4 ! decodebin ! m.sink_1