NvMMLiteOpen : Block : BlockType = 261?

So, I have a custom pipeline, and it works with a filesource, but I’m attempting to use a rtspsrc and something is blocking my pipeline. End of log here:

...
DEBUG:mce.pipeline:recv_rtp_src_0_2155678358_96 CAPS: application/x-rtp, media=(string)audio, payload=(int)96, clock-rate=(int)48000, encoding-name=(string)MPEG4-GENERIC, encoding-params=(string)1, streamtype=(string)5, profile-level-id=(string)15, mode=(string)AAC-hbr, config=(string)1188, sizelength=(string)13, indexlength=(string)3, indexdeltalength=(string)3, a-recvonly=(string)"", ssrc=(uint)2155678358, clock-base=(uint)0, seqnum-base=(uint)16041, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
DEBUG:mce.bus:rtpjitterbuffer0:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.pipeline:recv_rtp_src_0_2155678358_96 is an audio pad. skipping link...
DEBUG:mce.bus:rtpjitterbuffer0:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:rtpjitterbuffer0:status:GST_STREAM_STATUS_TYPE_ENTER
DEBUG:mce.bus:rtpptdemux1:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:rtpptdemux1:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:rtpptdemux1:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:rtpjitterbuffer1:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:rtpjitterbuffer1:status:GST_STREAM_STATUS_TYPE_CREATE
DEBUG:mce.pipeline:new pad added to rtsp_source_0: recv_rtp_src_1_2155678359_97
DEBUG:mce.pipeline:recv_rtp_src_1_2155678359_97 CAPS: application/x-rtp, media=(string)video, payload=(int)97, clock-rate=(int)90000, encoding-name=(string)H264, profile-level-id=(string)4d0029, packetization-mode=(string)1, sprop-parameter-sets=(string)"Z00AKZpkA8ARPy4C3AQEBQAAAwPoAAB1MJQ\=\,aO48gA\=\=", a-recvonly=(string)"", ssrc=(uint)2155678359, clock-base=(uint)0, seqnum-base=(uint)25559, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
DEBUG:mce.bus:rtpjitterbuffer1:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.pipeline:getting sink pad from rtsp_depay_0
DEBUG:mce.bus:rtpjitterbuffer1:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:rtpjitterbuffer1:status:GST_STREAM_STATUS_TYPE_ENTER
DEBUG:mce.pipeline:linking pad recv_rtp_src_1_2155678359_97 to pad sink
DEBUG:mce.pipeline:pad link between recv_rtp_src_1_2155678359_97 and sink OK
DEBUG:mce.bus:mce+pipeline+autosourceapp0:stream-start
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
<b>(hangs here, always after stream-start)</b>

I have a pad-added handler that connects my rtspsrc bin to the rest of the pipeline elements, and the pipeline is set to the playing state, as you can see from the log, but nothing seems to be happening. Is there any place the BlockType is defined so I can have some clue what’s going on? I’ve done a fgrep -r of all sources I could find unsucessfully.

Edit: attached is a pdf overview of the pipeline.

So, I’ve noticed I get the same messages from using a filesrc in place of the rtspsrc (see attached for pdf), but it doesn’t hang, so maybe it’s a red herring. Any ideas?

DEBUG:mce.pipeline:AutoSourceApp.__init__
DEBUG:mce.pipeline:AutoSourceApp.__init__
DEBUG:mce.pipeline:AutoSourceApp.__enter__
DEBUG:mce.pipeline:creating file source bin from: /opt/nvidia/deepstream/deepstream-4.0/samples/streams/sample_720p.h264
DEBUG:mce.pipeline:Creating GhostBin source with 3 elements and linking them.
DEBUG:mce.pipeline:creating element: filesrc with name: source
DEBUG:mce.pipeline:creating element: h264parse with name: parser
DEBUG:mce.pipeline:creating element: nvv4l2decoder with name: decoder
DEBUG:mce.pipeline:linking source to parser
DEBUG:mce.pipeline:linking parser to decoder
DEBUG:mce.pipeline:creating ghost pad for GhostBin: source
DEBUG:mce.pipeline:Finding unlinked GST_PAD_SRC pad within source.
DEBUG:mce.pipeline:Unlinked pad src found in bin source
DEBUG:mce.pipeline:adding ghost pad 'src_0' to source
DEBUG:mce.pipeline:mce+pipeline+autosourceapp0.__enter__
DEBUG:mce.pipeline:Creating InferenceBin inference_0 with 6 elements and linking them.
DEBUG:mce.pipeline:creating element: nvstreammux with name: stream-muxer
DEBUG:mce.pipeline:creating element: nvinfer with name: pie
DEBUG:mce.pipeline:creating element: nvvideoconvert with name: converter
DEBUG:mce.pipeline:creating element: nvdsosd with name: osd
DEBUG:mce.pipeline:creating element: nvoverlaysink with name: sink
DEBUG:mce.pipeline:linking stream-muxer to pie
DEBUG:mce.pipeline:linking pie to converter
DEBUG:mce.pipeline:linking converter to osd
DEBUG:mce.pipeline:linking osd to sink
DEBUG:mce.pipeline:creating ghost pad for InferenceBin: inference_0
DEBUG:mce.pipeline:adding ghost pad 'sink_0' to inference_0
DEBUG:mce.pipeline:linking source to inference_0
Opening in BLOCKING MODE 
Creating LL OSD context new
DEBUG:mce.bus:sink:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:osd:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:converter:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:pie:state-change:GST_STATE_NULL->GST_STATE_READY
NvMMLiteOpen : Block : BlockType = 261 
DEBUG:mce.bus:stream-muxer:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:inference_0:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:decoder:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:parser:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:source:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:source:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:mce+pipeline+autosourceapp0:state-change:GST_STATE_NULL->GST_STATE_READY
DEBUG:mce.bus:osd:state-change:GST_STATE_READY->GST_STATE_PAUSED
<b>NVMEDIA: Reading vendor.tegra.display-size : status: 6 </b>
DEBUG:mce.bus:converter:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:pie:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:stream-muxer:state-change:GST_STATE_READY->GST_STATE_PAUSED
<b>NvMMLiteBlockCreate : Block : BlockType = 261 </b>
DEBUG:mce.bus:decoder:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:parser:status:GST_STREAM_STATUS_TYPE_CREATE
DEBUG:mce.bus:parser:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:source:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:source:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:parser:status:GST_STREAM_STATUS_TYPE_ENTER
DEBUG:mce.bus:mce+pipeline+autosourceapp0:stream-start
Creating LL OSD context new
DEBUG:mce.bus:stream-muxer:status:GST_STREAM_STATUS_TYPE_CREATE
DEBUG:mce.bus:stream-muxer:status:GST_STREAM_STATUS_TYPE_ENTER
DEBUG:mce.bus:decoder:status:GST_STREAM_STATUS_TYPE_CREATE
DEBUG:mce.bus:decoder:status:GST_STREAM_STATUS_TYPE_ENTER
DEBUG:mce.bus:sink:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:inference_0:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:mce+pipeline+autosourceapp0:state-change:GST_STATE_READY->GST_STATE_PAUSED
DEBUG:mce.bus:mce+pipeline+autosourceapp0:async-done
DEBUG:mce.bus:mce+pipeline+autosourceapp0:new-clock
DEBUG:mce.bus:sink:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:osd:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:converter:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:pie:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:stream-muxer:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:inference_0:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:decoder:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:parser:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:source:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:source:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:mce+pipeline+autosourceapp0:state-change:GST_STATE_PAUSED->GST_STATE_PLAYING
DEBUG:mce.bus:decoder:status:GST_STREAM_STATUS_TYPE_LEAVE
DEBUG:mce.bus:stream-muxer:element
DEBUG:mce.bus:Got EOS
DEBUG:mce.pipeline:mce+pipeline+autosourceapp0.quit() called
DEBUG:mce.pipeline:mce+pipeline+autosourceapp0.__exit__
DEBUG:mce.pipeline:mce+pipeline+autosourceapp0.quit() called

So. I’m going to try using a uridecodebin instead. Will update if it fixes the issue.
Edit: Whoo hoo, it works (and I was able to cut out a bunch of useless code)!

edit2: it mostly works. i’m getting dropped buffers and qos bus messages now, but it’s at least doing inferences and displaying bounding boxes, so we’re moving in the right direction. File sources still work perfectly with the uridecodebin provided I add “file://” before the path.

edit3: I think the qos messages were related to my rtsp source itself (it has issues with other clients as well from time to time). the problem has since gone away with no changes made.

Hi,
Please set export GST_DEBUG=FACTORY:4 and run with uridecodebin. It will print out all picked elements and you can construct the pipeline ‘rtspsrc ! rtph264depay ! …’ according to the information.

Thank you, DaneLLL. I may try that in combination with gst_parse_bin_from_description_full since I want a dynamic pipeline. That’s very useful since the PDFs I have been dumping don’t give me a string representation.

That being said, now that I have found uridecodebin, is there any disadvantage to keeping uridecodebin permanently since it seems to require less code and makes my app more flexible with respect to different sources?

Hi,
It is fine to use uridecodebin. We have deepstream-test3 app that uses it. It is also included in source group of deepstream-app.
https://docs.nvidia.com/metropolis/deepstream/dev-guide/index.html#page/DeepStream%2520Development%2520Guide%2Fdeepstream_app_config.3.2.html%23wwpID0E0QB0HA