Pulsing blur on ZED X One GMSL camera setups with ZED Link Duo

I’m running two ZED X One 4K GMSL cameras through a ZED Link Duo capture card on a Jetson AGX Orin and see a rhythmic, pulsing blur in the video stream. Also, the exact same problem appears on another setup that uses two ZED X One GS GMSL cameras with two ZED X stereo GMSL cameras, also via the ZED Link Duo on Jetson, so I suspect a software-level configuration issue rather than hardware. All cameras are streaming at 1920×1080, 30 fps, with an 8 Mb/s bitrate. I had to manually set exposuretimerange, gain, and ispdigitalgainrange manually, but the blur persists across both camera configurations, so I doubt exposure settings are the root cause. I recorded a short clip that demonstrates the effect for the two 4K cameras, although it is less noticeable then when viewing it in real time. Has anyone encountered this pulsing blur before or found settings that eliminate it?

Hi @Lrnts

What do you mean by “pulsing blur”? Please share a video to demonstrate the effect.

A premise: Our cameras do not have auto-focus, so the blur visible in the video cannot be caused by behaviors of our hardware.

According to the video, I guess you are using GStreamer.
The pulsing blur seems to be caused by an image compression element used with your GStreamer pipeline.

Can you please add more information concerning your setup?

Yes, I am using GST. Here is part of my encoder side of my pipeline. I was playing around with some settings to reduce streaming interruptions:

g_object_set(h265_enc,
                     "bitrate",
                     video_bitrate,
                     "preset-level",
                     1,
                     "iframeinterval",
                     30,
                     "insert-sps-pps",
                     true,
                     "maxperf-enable",
                     1,
                     "control-rate",
                     1,
                     "vbv-size",
                     2,
                     NULL);
        g_object_set(h265_payload, 
             "fec", false,
             NULL);

        g_object_set(sink,
                     "host",
                     dest_addr.c_str(),
                     "port",
                     dest_port,
                     "async",
                     false,
                     "sync",
                     true,
                     "buffer-size",
                     1048576,
                     "max-lateness",
                     -1,
                     "qos",
                     false,
                     "loop",
                     false,
                     "ttl",
                     multicast_ttl,
                     NULL);

        g_object_set(queue,
             "max-size-buffers", 0,       
             "max-size-bytes", 0,
             "max-size-time", 200000000,
             "leaky", 2,
             NULL);

Check the encoder parameters; usually, this type of problem is hidden between them.