No xvimagesink on deepstream-l4t

Hi,
It seems that gstreamer can not be fully installed on the l4t deepstream image.

I’m working on a Jetson nano, Jetpack 4.4 with the docker images: nvcr.io/nvidia/deepstream-l4t:5.0.1-20.09-base and the “sample” one.

The deepstream app inside the container does not give me any video displayed as result. When trying to export to a video file, the file seems corrupted.
I properly gave the access to the display to the container (xhost +, -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix).

Then, I tried to display a video with this very basic gstreamer pipeline:
gst-launch-1.0 videotestsrc ! xvimagesink

result:
erroneous pipeline: no element "xvimagesink"

When I look at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/ in the container, there isn’t the libraries: libgstximagesink.so, libgstxvimagesink.so and many more such as libgstximagesrc.so

I tried to installed all the missing libraries with:
apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools
But it says that everything is up-to-date.

On the nvcr.io/nvidia/l4t-base:r32.3.1 docker image the pipeline gst-launch-1.0 videotestsrc ! xvimagesink is successfully displayed. I used to work a lot with l4t-base on several versions, I never had any gstraemer problem.

Are the images deepstream-l4t really bugged?
How may I have a full gstreamer install inside my image?

I may have found one of my problems: when my Jetson Nano is connected to my screen with DisplayPort, DeespStream results are not displayed (no video, only terminal); When connected to with HDMI, the output is correctly displayed. So DiplayPort seems to not be handled by DeepStream.
Every other application that are running on my nano have no trouble to be displayed with DP.

We will check the docker image. But deepstream-l4t is for deepstreamsdk and the preferred video sink is nveglglessink. If you want to use jetpack4.4, l4t-base is the correct docker image.

Thak you Fiona for your answer on Christmas Eve!

In order ot make nveglglessink work in the deepstream-l4t, I have to add the option: --network=host
Is it normal?

Otherwise I have the error:

    nvbuf_utils: Could not get EGL display connection
    nvbufsurftransform: Could not get EGL display connection
    ...
    Using winsys: x11 
    ERROR: Pipeline doesn't want to pause.
    Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
    Setting pipeline to NULL ...

So my run cmd is:
docker run --rm --runtime=nvidia --network=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix -it nvcr.io/nvidia/deepstream-l4t:5.0.1-20.09-base /bin/bash
and the cmd launched afterward:
gst-launch-1.0 videotestsrc ! nveglglessink

No. I don’t think network has anything to do with it. You may add “-e DISPLAY=$DISPLAY” with your docker command

make sure before you run docker, run xhost + first.

As I wrote in two of my posts, I did add “-e DISPLAY=$DISPLAY” to my docker command.
As I wrote in my first post, xhost + is run before. It is launched at startup so I am sure it is done before.
I know it’s weird, but as I said, nveglglessink is working only if I add --network=host.
Try the cmd I wrote in my previous post to see it.