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)
Jetson Nano
• DeepStream Version
5.1