Why does videoconvert must be added between v4l2src and nvvideoconvert?

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU):GeFroce RTX 3090
• DeepStream Version:5.1
• TensorRT Version:7.2
• NVIDIA GPU Driver Version (valid for GPU only):470
• Issue Type( questions, new requirements, bugs):questions

The v4l2src plugin outputs:

                 format: { (string)RGB16, (string)BGR, (string)RGB, (string)GRAY8, (string)GRAY16_LE, (string)GRAY16_BE, (string)YVU9, (string)YV12, (string)YUY2, (string)YVYU, (string)UYVY, (string)Y42B, (string)Y41B, (string)YUV9, (string)NV12_64Z32, (string)NV24, (string)NV61, (string)NV16, (string)NV21, (string)NV12, (string)I420, (string)BGRA, (string)BGRx, (string)ARGB, (string)xRGB, (string)BGR15, (string)RGB15 }

And nvvideoconvert plugin accepts:

                 format: { (string)I420, (string)P010_10LE, (string)NV12, (string)BGRx, (string)RGBA, (string)GRAY8, (string)GBR }

If I don’t include videoconvert, I will have negotiation error, but v4l2src can output video/x-raw (string)NV12 and nvvideoconvert accepts that format, what is the need for videoconvert?

v4l2src is open source plugin v4l2src (gstreamer.freedesktop.org)

nvvideoconvert is Nvidia HW accelerated plugin.

Open source public plugin can only output data with CPU buffer, but deepstream pipeline needs GPU buffer(HW buffer) to accelerate the processing on Nvidia’s GPU. Nvvideoconvert will convert CPU buffer to GPU buffer, then the other deepstream plugins can work on the GPU buffer directly. But nvvideoconvert supports only limited formats, so videoconvert is needed to convert some unsupported format to the format nvvideoconvert can support.

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