QCamera (auto) exposure/focus settings

Hi!
Some time ago I made a basic but functional implementation of a Stopmotion interface using the QCamera class. In fact, everything works pretty well, except for one thing: the auto exposure/focus settings are enabled all the time, generating a constant "blink" effect with a lot of horizontal lines moving around on my display.
Here is a short example of my problem: https://www.youtube.com/watch?v=QFb1gOmr2Xw

So, my question is: how can I set the exposure/focus parameters of my webcam using Qt to avoid this behaviour? I noticed that there is a class called QCameraExposure and other called QCameraFocus, but the lack of documentation don't let me find the hint I need.

Qt Developer

@jsulm It is a very basic webcam model, so I really doubt it. To me, this has been a slow learning process about dealing with cameras using Qt.

Now, I wonder if the right path to solve my issue (if there is a solution for this) is to look for some "Webcam system settings" in the operating system context and try to deal with the auto-exposure/focus from there.

Should I give up to manage webcams for doing stopmotion and focus on DSRL devices? Should I get used to the annoying blinking horizontal lines if I decide to work with webcams? -> https://www.youtube.com/watch?v=QFb1gOmr2Xw

I would like to understand the technical boundaries of working with webcams, how far can I take my expectations?

In fact, you are right. The focus doesn't change when the finger appears. But, what about the exposure? why the camera view is blinking all the time? I tried setting focus and exposure values as Auto and Manual with the same result.

Do you have the same phenomenon if you use QML ?

I was trying to learn QML but I must confess that I couldn't deal with it, different paradigm, just difficult to me. My apologies to QML developers.

What I wonder most is how the blink effect disappears when the natural light is strong. I mean, I used to run my tests at night and as you could see, the blinking effect was exaggerated, but in this latest test is almost imperceptible. I made a comparison with the FaceTime app and definitely there is a big difference when you work either with night or day light.

About the QML vs QWidget implementation, I must say that in my opinion, the "quality" result is the same. My most important learning about this issue is that natural light matters when you are going to work with webcams, at least from Mac operating systems. I guess for some of you this could sound "really obvious", but please, count on I am a newbie in this topic ;)

I ran some night tests from my laptop with Ubuntu using the same webcam and the same Qt code, and the auto exposure effect was not so intense as in my Mac.

After all my tests, I consider that this issue is far beyond the software itself, environment light matters. Maybe with DSLR devices is a different story.

@SGaist Hi, following your instructions I downloaded the git branch corresponding to my Qt version (5.6), applied the patches and finally, compiled the whole source code with no issues (qmake and then make).

Now, what should I do with the content of this "qtmultimedia" folder?

PS: I am running my tests on a Mac system.

Qt Developer

You need to call make install, that will replace your current QtMultimedia. Then you only have to re-build your application, it should use the new available format if possible (just double check that's indeed the case)

Now that I had some time to run the test, I must say that I couldn't detect any difference in my camera behavior after installing the new version of the QtMultimedia module. The blinking effect remains.

Initially, I was expecting to run my tests on my Mac system. Unfortunately, I couldn't work with the Qt 4.6 version due to some qmake bug I found when I was trying to compile my project, so I decided to try the whole thing from my Linux box.

This is the output I got before compiling:

# qmake
Checking for openal... no
Checking for alsa... yes
Checking for pulseaudio... yes
Checking for gstreamer... yes
Checking for gstreamer_photography... no
Checking for gstreamer_encodingprofiles... yes
Checking for gstreamer_appsrc... yes
Checking for linux_v4l... yes
Checking for resourcepolicy... no
Checking for gpu_vivante... no

Not sure if this test doesn't have any sense in Linux. Please, let me know if there are another tests related to the webcam management I could run.