If the width and height of nvstreammux and nvmultistreamtiler are the same, an error occurs.

I am using deepstream v3.0.

The pipeline command I’m using is:

gst-launch-1.0 rtspsrc location={rtsp_path} protocols=4 latency=100 proxy-id=NULL proxy-pw=NULL
! queue ! decodebin ! tee name=t0 ! queue ! fakesink t0. ! queue ! mux0.sink_0
nvstreammux name=mux0 batch-size=4 batched-push-timeout=40000 width=1280 height=720
! queue name=pgie_queue ! nvvidconv name=pgie_vidconv
! nvinfer batch-size=4 gie-unique-id=1 config-file-path={config_path}
model-engine-file={engine_path} gpu-id=0
! nvtracker ! queue ! nvvidconv
! nvmultistreamtiler name=tiler0 width=1280 height=720
! queue ! nvvidconv ! nvosd name=nvosd0
! appsink name=appsink1

When I run the command, I get the following error:

gst_nvmultistreamtiler_transform: error: Npp Resize failed
gst_nvmultistreamtiler_transform: error: nppiResizeSqrPixel failed with error -23

However, if you set the width, height value of nvmultistreamtiler differently from the width, height value of nvstreammux, it works fine.

I want to reduce the additional scaling by matching the resolution between the two.

How can this be possible?

Do you use Jetson platforms or Tesla P4? The error should indicate that you use Tesla P4 but would like to double confirm it.

Thank you for your interest.

I’m using tesla p4.

Does “double confirm” mean setting width / height in both mux and tiler?

First of all, mux gives an error if you don’t specify width / height.

In tiler, if you do not specify width / height, it resizes to the default 1920x1080 size.

Is there any way to use the width / height of a mux in a tiler without any additional scaling?

Are you able to upgrade to DS4.0 and try?

I’m sorry, but upgrading now is a difficult situation.

For deepstream documentation it seems to generally recommend the following pipeline:

[src pipe]-[decodebin]-[nvstreammux]-[nvinfer]-[nvtracker]-[nvmultistreamtiler]-[nvosd]-[sink pipe]
src pipe: rtspsrc or filesrc …
sink pipe: fakesink, appsink, glimagesink …

If I am using appsink in this pipeline and there is only one input source,

is there no need to use nvmultistreamtiler?

And how can I change the GPU data coming into “appsink” to CPU data at this time?

If you run single rtsp source, you can try to set batch-size=1 and remove nvmultistreamtiler.

Thank you.

By the way, does removing the nvmultistreamtiler and setting batch-size to 4 in nvstreammux cause problems?


It could cause the issue since batch-size should match the source number. If you have only single source, it should be batch-size=1.