DeepStream 5, why are frame_num, width and height values always 0 after Tiler?

• Hardware Platform (Jetson / GPU)
Jetson
• DeepStream Version
DeepStream 5.
• JetPack Version (valid for Jetson only)
4.4
• TensorRT Version
7.1

I believe this was a change in 5.0? … , but I see that the source_frame_width, source_frame_height and frame_num parameters (in NvDsFrameMeta) have 0 values once the streams are Tiled…

The problem is that If you’re trying to convert the buffer to a jpeg image on an OSD pad downstream of the Tiler you need the frame dimensions.

Also, was any though given to having the Tiler generate a new frame number for the single stream? … having a point of reference for components downstream was very useful

Thanks,
Robert.

@rjhowell44

@jasonpgf2a 's solution was to use a tee element and put the tiler on it’s own branch. I ended up moving it around for the same reason.

Thanks for the tip @mdegans this will help in many cases. I’d also like to support frame capture of the tiled images, and was thinking of attaching my own user-meta at the Tiler source pad with the Tiler dimensions and perhaps a frame counter.

I’ve not tried working with user meta, so any thoughts on this would be appreciated.

Perhaps we could lobby Nvidia to have the Tiler attach it’s own meta structure to the single frame. with it’s width, height, frame_num, and current show_source setting?

Thanks again,
Robert.

@rjhowell44
So, there are a couple of examples of how to add your own user meta in both Nvidia’s examples and in GStreamer proper. You have to write a couple functions for cleanup, copy, etc, and attach those along with a pointer to a structure which is attached to the batch or frame. I believe object may also be possible, but for my purposes i chose batch level.

In my case I used protobuf and wrote my own broker to serialize it and store in a file (client requirements) using a separate worker thread for that. Nvidia’s plugin does basically the same thing, but only works for frame level meta the way it’s written. If you read the docs and/or examples you should be fine. Otherwise, ask for help here if you get stuck (I did).

Thanks again for the info @mdegans. I’ve decided to just map the buffer when needed and use the surfaceList[0] width and height to get the frame dimensions.

Just my opinion, but It just seems like stream dimensions should be available in the metadata on any pad.

Regards,
Robert.