Caps being overwriten

I have some C code that works perfectly. The pipeline starts
v4l2src device=/dev/video2 ! image/jpeg,width=1920,height=1080,framerate=30/1 !

When I launch the program from C test-code, using execl it works perfectly.
When I lauch it from Qt/cpp if flashes at correct resolution then reverts to
702x568 (whatever).

How do I discover Who and Why

What gives ?:

# In Debian or Ubuntu systems, v4l2-ctl command is provided by v4l-utils package
v4l2-ctl -d2 --list-formats-ext

What are your gst and Qt versions ? And C or cpp code and build command ?

Are you sure if your Qt sink supports JPEG encoding ?

I carefully setup a clean install, touched now, with object of finding any files that changed (newer than now), and the system was on best behaviour not doing any lo-res changes.
Using Qt 6.4 and 5.15.
I’m using Qt for other stuff but for gstreamer I manage ONLY a canvas on which gstreamer paints.
gst_video_overlay_set_window_handle (ov1, (guintptr) winId);
The irritating fact is that everything working shows all is correct.
Something somewhere sets something that stops the card (src) giving HD.
Once it happens power cycling, logout have no effect.

What am I looking for with --list-formats-ext

I just wanted to see what is the JPG format outputted by your camera (such as I420, MPJG…).

I may not be able to further help your case, but I’m happy if I’ve helped to make it clearer for anyone more skilled.

The output was mjpeg
I reinstalled (once a system had gone bad I could not recover it)(!!!)
(stuck in lo-res)
I used this
"v4l2src device=%1 ! "
"image/jpeg,width=1920,height=1080,framerate=30/1 ! "
"jpegdec ! "
"videoconvert ! "
(The %1 is an argument for QString)
The system is working correctly (I have no TRIED tonbreak it)
Thanks for your help.