Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) Jetson Nano 2gb
• DeepStream Version 5.01
• JetPack Version (valid for Jetson only) 4.5
• TensorRT VersionN/A
• NVIDIA GPU Driver Version (valid for GPU only) N/A
• Issue Type( questions, new requirements, bugs) Question/Bug
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing) Deepstream-test4 app (both C and Python version). See how to recreate below
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)
I’ve build a MQTT version of the Gst-nvmsgbroker and so far implemented the NvDsMsgApiErrorType nvds_msgapi_send()
function. At the moment, I’ve left NvDsMsgApiErrorType nvds_msgapi_send_async()
as a dummy that just logs an error message:
NvDsMsgApiErrorType nvds_msgapi_send_async(NvDsMsgApiHandle h_ptr, char* topic, const uint8_t* payload, size_t nbuf, nvds_msgapi_send_cb_t send_callback, void* user_ptr) {
nvds_log(NVDS_MQTT_LOG_CAT, LOG_DEBUG, "nvds_msgapi_send_async not implemented yet!");
return NVDS_MSGAPI_ERR;
}
When running the Deepstream-test4 app, it connects correctly to my MQTT broker but then fails when it sends a message.
./deepstream-test4-app -i ../../../../samples/streams/sample_720p.h264 -p /opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_mqtt_proto.so --conn-str="<IP-ADDRESS>;<PORT>" -s 0 --no-display
The Deepstream-test4 app clearly sets the 'sync'
property to FALSE
g_object_set (G_OBJECT(msgbroker), "proto-lib", proto_lib,
"conn-str", conn_str, "sync", FALSE, NULL);
(or in Python version)
msgbroker.set_property('sync', False)
Investigating the log, I see that the actual call is to the async function and not to the sync function.
$ cat /tmp/nvds/ds.log
Mar 25 20:32:00 nvidia-jetson python3: DSLOG:NVDS_MQTT_PROTO: MQTT connection successful
Mar 25 20:32:11 nvidia-jetson python3: DSLOG:NVDS_MQTT_PROTO: nvds_msgapi_send_async not implemented yet!
Mar 25 20:35:29 nvidia-jetson deepstream-test4-app: DSLOG:NVDS_MQTT_PROTO: MQTT connection successful
Mar 25 20:36:22 nvidia-jetson deepstream-test4-app: DSLOG:NVDS_MQTT_PROTO: nvds_msgapi_send_async not implemented yet!
I tried to understand what is going on in gst-plugins/gstnvmsgbroker.c
, but as I understand it, there is no implementation of setting the property 'sync'
at all?! GstNvMsgBroker
has a property self->asyncSend
which is tested for in static GstFlowReturn legacy_gst_nvmsgbroker_render()
when choosing which call should be made. self->asyncSend
is initialised as TRUE
and there seems to be no implementation that supports setting it to FALSE
?
So I guess the question is, is this a bug, or is there a possibility to properly get the Gst-nvmsgbroker to do Synchronous sending?