I’m trying to understand the nvmsgconv and nvmsgbroker.
I have an application in Qt + QML and I need to start the gstreamer pipe as started using gst-launch. Now my pipeline looks like this:
gst-launch-1.0 \ nvarguscamerasrc sensor-id=0 ! \ nvmux.sink_0 nvstreammux name=nvmux ... ! \ nvinfer config-file-path=nvinfer-config1.txt ! \ nvtracker ... \ nvinfer config-file-path=nvinfer-config2.txt ! \ tee name=t ! \ queue ! \ nvmsgconv \ msg2p-lib=lib/libnvdsmsgconv.so \ config=msgconv-config.txt \ payload-type=0 ! \ nvmsgbroker \ proto-lib=lib/libmqtt_client.so \ topic='abcd' \ config=msgbroker-config.txt \ t. ! queue ! \ nvvideoconvert ! \ nvdsosd ... \ qtvideosink
QML requests the gstreamer pipeline written in the same way as it was written on command line.
I cannot create the pipeline in C or Python so I’m not able to attach a probe function to pad of any element.
I have my custom library for nvmsgconv but the nvds_msg2p_generate() was never called. I think that there
are no events or event metada in the stream.
If I write a probe in Python and attach it to nvdsosd, it worked properly.
I do not understand:
- Where are the events (NvDsEvent} created?
- Can I write a C library to add the NvDsEventMsgMeta to the stream not attached to gstreamer pad?
I can send the messages to mqtt directly from nvdsinfer parse-bbox-func-name function but I think it would be better to use the standard nvinfer ! nvtracker ! nvinfer ! nvmsgconv ! nvmsgbroker pipeline.
• Hardware Platform (Jetson / GPU)
• DeepStream Version