Critical error message from using nvv4l2decoder and nvv4l2h264enc where the message is "gst_mini_object_unref: assertion 'mini_object != NULL' failed"

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU)
Jetson
• DeepStream Version
6.0
• JetPack Version (valid for Jetson only)
R32 (release), REVISION: 6.1, GCID: 27863751, BOARD: t186ref, EABI: aarch64, DATE: Mon Jul 26 19:36:31 UTC 2021
• TensorRT Version
8.0.1.6-1+cuda10.2
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs)
questions or 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)

I’m trying to do transcoding from h264 to h264 with different parameters, so I connect both nvv4l2decoder
and nvv4l2h264enc directly.

• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

The major component source code could be like this
source->decoder = gst_element_factory_make (“nvv4l2decoder”, elem_name);
source->encoder = gst_element_factory_make (“nvv4l2h264enc”, elem_name);
parser2 = gst_element_factory_make (“h264parse”, elem_name);
gst_bin_add_many (GST_BIN (source->source_bin), source->src_elem,
source->decoder,
source->encoder,
source->parser2,
source->mux,
source->filesink,
NULL);
gst_element_link_many(source->decoder, source->encoder, source->parser2, source->mux, source->filesink, NULL);
And the src_element is using rtspsrc with call back “select-stream” to link decoder with parser element.

The console output will be
(edge-engine-intrusion:13377): GStreamer-CRITICAL **: 03:04:41.981: gst_mini_object_unref: assertion ‘mini_object != NULL’ failed
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6

(edge-engine-intrusion:13377): GStreamer-CRITICAL **: 03:04:41.983: gst_mini_object_unref: assertion ‘mini_object != NULL’ failed
NvMMLiteOpen : Block : BlockType = 261
NvMMLiteBlockCreate : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
Decodebin linked to videorate
Decodebin linked to videorate
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
Create a source info instance 1, event timestamp -1, event seq 569
H264: Profile = 66, Level = 0
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
H264: Profile = 66, Level = 0

please refer to this transcode command: gst-launch-1.0 filesrc location=sample_720p.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nvvideoconvert ! ‘video/x-raw(memory:NVMM),format=I420’ ! nvv4l2h264enc bitrate=1000000 ! filesink location=bp.264

I will try to survey how to add those components between decoder & encoder programmatically, maybe use nvvideoconvert and capsfilter.

But I’m curious why we need the nvvideoconvert for it. I think they can naturally connect together.

yes ,on jetson, there is no need nvconvert, please refer to gst-launch-1.0 filesrc location=sample_720p.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nvv4l2h264enc bitrate=1000000 ! filesink location=bp.264, Gst-nvvideo4linux2 — DeepStream 6.1.1 Release documentation

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.
Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.