Xavier Deepstream 3.0 SDK: nvvidconv no longer supports GREY8. Why?

Hello;

our application uses 8 bit greyscale (GRAY8) cameras.

Those GREY8 cameras are supported on TEGRA but not on XAVIER.

Why? is this a bug or was GREY8 removed for a reason?

A significant portion of MVCams are 8bit grey so the lack of GREY8 is a problem. Can this be fixed?

using gst-inspect-1.0 on both TEGRA and XAVIER i get the following format lists:

nvvidconv on TEGRA supports the following formats:

Capabilities:
video/x-raw(memory:NVMM)
format: { I420, I420_10LE, UYVY, YUY2, YVYU, NV12, GRAY8, BGRx, RGBA }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
video/x-raw
format: { I420, UYVY, YUY2, YVYU, NV12, GRAY8, BGRx, RGBA }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]

nvvidconv on XAVIER supports the following formats and GREY8 is not shown in this list:

Capabilities:
  video/x-raw(memory:NVMM)
             format: { (string)I420, (string)I420_10LE, (string)I420_12LE, (string)UYVY, (string)YUY2, (string)YVYU, (string)NV12, (string)BGRx, (string)RGBA }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
  video/x-raw
             format: { (string)I420, (string)I420_10LE, (string)I420_12LE, (string)UYVY, (string)YUY2, (string)YVYU, (string)NV12, (string)BGRx, (string)RGBA }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Please let me know what i can do to help investigate and resolve this issue.

Tnx!

johnu

Hi,
Please share more information about your pipeline on TX2. Is it like

gst-launch-1.0 v4l2src ! 'video/x-raw,format=GRAY8' ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! ...

Following up from the same team as @JohnU-PNSR :

We are working on porting code that worked for Deepstream 1.5 on the TX2 to DeepStream 3.0 on the Xavier. Our pipeline works on the TX2, and is from a black and white computer vision camera with a pipeline similar to this:

appsrc ! “video/x-raw,format=GRAY8” ! nvvidconv ! nvcaffegie ! …

When we try to run this on the Xavier (swapping nvcaffegie to nvinfer), it says the pipeline can’t link the source to the nvvidconv because GRAY8 is not supported. It is not clear to us if there is a reason it is not supported and won’t ever be, or if this is a bug since it was supported before. We are working on a workaround to use videoconvert and then nvvidconv but the extra conversion is not desirable.

Thanks!
Sarah

Hi sarah,
We will check why GRAY8 is absent in nvvidconv.

In the meantime, please try

appsrc ! "video/x-raw,format=I420 or NV12" ! nvvidconv ! nvcaffegie ! ...

If you fill data into Y plane and keep UV planes all zeros, the pipeline should work on DS3.0.

Hi DaneLLL,

Thanks for looking into that, I have implemented a similar workaround to what you proposed. I look forward to your findings.

Thanks,
Sarah

This repros on X86_64 as well.

(which is something i should have checked earlier)

That would indicate a checkin significantly further in the past.

I would speculate that the GRAY8 code is still in there but that whatever enumeration structure/functions is experiencing an off by 1 error and you might search for a checkin that added a new format to nvcovert.

johnu@ubunt-d1-16a:~$ gst-inspect-1.0 nvvidconv
Factory Details:
Rank none (0)
Long-name nvvidconv
Klass nvvidconv
Description Gstreamer NVVIDCONV Element
Author NVIDIA Corporation. Post on Deepstream for Tesla forum for any queries @ https://devtalk.nvidia.com/default/board/209/

Plugin Details:
Name nvvidconv
Description Gstreamer plugin for video format conversion
Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libnvdsgst_vidconv.so
Version 3.0
License Proprietary
Source module nvvidconv
Binary package GStreamer NV Video Converter Plugin
Origin URL http://nvidia.com/

GObject
±—GInitiallyUnowned
±—GstObject
±—GstElement
±—GstBaseTransform
±—Gstnvvidconv

Pad Templates:
SRC template: ‘src’
Availability: Always
Capabilities:
video/x-raw(memory:NVMM)
format: { (string)NV12, (string)I420, (string)BGRx, (string)RGBA, (string)BGR, (string)RGB }