| Message ID | 20260925102551.137108-1-barnabas.pocze@ideasonboard.com |
|---|---|
| Headers | show |
| Series |
|
| Related | show |
Hi, thanks for the series! Unfortunately I currently don't have time to help with reviewing, however I gave the series a quick go on some mobile qcom devices on pmOS: Pixel 3a, OnePlus 6, FairPhone 5 By now all their cameras are supported in the pmOS downstream kernels - and I'm happy to report that all of them seem to benefit a lot from this series! Especially in challenging environments with high contrasts the results are way less overexposed - overall the behavior seems to be much closer to rkisp1 (on the PinePhone Pro). The only downsides I could spot are lower frame rates while the algorithm adjusts - and occasionally way to bright or dark output, again only while the algorithm adjusts. Thus: Tested-by: Robert Mader <robert.mader@collabora.com> for the shared and softisp/simple parts. Best regards On 25.09.26 12:25, Barnabás Pőcze wrote: > The maximum available exposure depends on the frame duration, but this > is not considered by the current agc implementation, it fixes the maximum > exposure time based on whatever configuration was used to configure the > algorithm. This means that in certain situations the full exposure range > might not be used, even in dark scenes. > > This a second attempt at adapting https://patchwork.libcamera.org/project/libcamera/list/?series=5590 > on the current master branch. But now that the agc handling is largely unified, > fewer changes are needed to make this work on every platform. > > So effectively only patch 7 is taken directly, but only the exposure margin > introduction part of it. > > This was mainly tested on rkisp1+imx219 and softisp+ov2740. > > changes in v2: > * report `FrameDurationLimits` in metadata > * add exposure margin to more sensor helpers > > v1: https://patchwork.libcamera.org/cover/28111/ > > Barnabás Pőcze (8): > ipa: libipa: agc: Keep frame duration limits ordered > ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier > ipa: libipa: agc: Report `FrameDurationLimits` > ipa: libipa: agc: Calculate vblank and frame duration sooner > ipa: libipa: agc: Take parameters from active state for calculation > libcamera: pipeline: Set vblank on more platforms > ipa: libipa: agc: Rework frame duration limit calculation > ipa: libipa: agc: Take exposure margin into account > > Jacopo Mondi (1): > ipa: camera_sensor_helper: Introduce exposure margin > > src/ipa/ipu3/algorithms/agc.cpp | 2 +- > src/ipa/ipu3/ipu3.cpp | 3 +- > src/ipa/libipa/agc.cpp | 226 +++++++++++-------- > src/ipa/libipa/agc.h | 18 +- > src/ipa/libipa/camera_sensor_helper.cpp | 68 ++++++ > src/ipa/libipa/camera_sensor_helper.h | 2 + > src/ipa/mali-c55/algorithms/agc.cpp | 2 +- > src/ipa/mali-c55/mali-c55.cpp | 3 +- > src/ipa/rkisp1/algorithms/agc.cpp | 2 +- > src/ipa/rkisp1/rkisp1.cpp | 4 +- > src/ipa/softisp/algorithms/agc.cpp | 2 +- > src/ipa/softisp/softisp.cpp | 3 +- > src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + > src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + > src/libcamera/pipeline/simple/simple.cpp | 1 + > 15 files changed, 224 insertions(+), 114 deletions(-) > > -- > 2.55.0
2026. 09. 29. 9:52 keltezéssel, Robert Mader írta: > Hi, thanks for the series! > > Unfortunately I currently don't have time to help with reviewing, however I gave the series a quick go on some mobile qcom devices on pmOS: Pixel 3a, OnePlus 6, FairPhone 5 > > By now all their cameras are supported in the pmOS downstream kernels - and I'm happy to report that all of them seem to benefit a lot from this series! Especially in challenging environments with high contrasts the results are way less overexposed - overall the behavior seems to be much closer to rkisp1 (on the PinePhone Pro). > > The only downsides I could spot are lower frame rates while the algorithm adjusts - and occasionally way to bright or dark output, again only while the algorithm adjusts. Thus: I think I see something very similar on a yoga x1 gen 7 laptop (ipu6 + ov2740). But the reason there is that changing controls of the sensor takes an unfortunately long time, and as far as I can see this is because the i2c communication goes through usb (la jolla cove adapter). I'm wondering if you have a bit of time to check e.g. `strace -y -f -tt -T -e ioctl ...` to see if maybe the issue is similar. > > Tested-by: Robert Mader <robert.mader@collabora.com> > > for the shared and softisp/simple parts. > > Best regards > > On 25.09.26 12:25, Barnabás Pőcze wrote: >> The maximum available exposure depends on the frame duration, but this >> is not considered by the current agc implementation, it fixes the maximum >> exposure time based on whatever configuration was used to configure the >> algorithm. This means that in certain situations the full exposure range >> might not be used, even in dark scenes. >> >> This a second attempt at adapting https://patchwork.libcamera.org/project/libcamera/list/?series=5590 >> on the current master branch. But now that the agc handling is largely unified, >> fewer changes are needed to make this work on every platform. >> >> So effectively only patch 7 is taken directly, but only the exposure margin >> introduction part of it. >> >> This was mainly tested on rkisp1+imx219 and softisp+ov2740. >> >> changes in v2: >> * report `FrameDurationLimits` in metadata >> * add exposure margin to more sensor helpers >> >> v1: https://patchwork.libcamera.org/cover/28111/ >> >> Barnabás Pőcze (8): >> ipa: libipa: agc: Keep frame duration limits ordered >> ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier >> ipa: libipa: agc: Report `FrameDurationLimits` >> ipa: libipa: agc: Calculate vblank and frame duration sooner >> ipa: libipa: agc: Take parameters from active state for calculation >> libcamera: pipeline: Set vblank on more platforms >> ipa: libipa: agc: Rework frame duration limit calculation >> ipa: libipa: agc: Take exposure margin into account >> >> Jacopo Mondi (1): >> ipa: camera_sensor_helper: Introduce exposure margin >> >> src/ipa/ipu3/algorithms/agc.cpp | 2 +- >> src/ipa/ipu3/ipu3.cpp | 3 +- >> src/ipa/libipa/agc.cpp | 226 +++++++++++-------- >> src/ipa/libipa/agc.h | 18 +- >> src/ipa/libipa/camera_sensor_helper.cpp | 68 ++++++ >> src/ipa/libipa/camera_sensor_helper.h | 2 + >> src/ipa/mali-c55/algorithms/agc.cpp | 2 +- >> src/ipa/mali-c55/mali-c55.cpp | 3 +- >> src/ipa/rkisp1/algorithms/agc.cpp | 2 +- >> src/ipa/rkisp1/rkisp1.cpp | 4 +- >> src/ipa/softisp/algorithms/agc.cpp | 2 +- >> src/ipa/softisp/softisp.cpp | 3 +- >> src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + >> src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + >> src/libcamera/pipeline/simple/simple.cpp | 1 + >> 15 files changed, 224 insertions(+), 114 deletions(-) >> >> -- >> 2.55.0
Hi, On 29.09.26 10:50, Barnabás Pőcze wrote: > 2026. 09. 29. 9:52 keltezéssel, Robert Mader írta: >> Hi, thanks for the series! >> >> Unfortunately I currently don't have time to help with reviewing, >> however I gave the series a quick go on some mobile qcom devices on >> pmOS: Pixel 3a, OnePlus 6, FairPhone 5 >> >> By now all their cameras are supported in the pmOS downstream kernels >> - and I'm happy to report that all of them seem to benefit a lot from >> this series! Especially in challenging environments with high >> contrasts the results are way less overexposed - overall the behavior >> seems to be much closer to rkisp1 (on the PinePhone Pro). >> >> The only downsides I could spot are lower frame rates while the >> algorithm adjusts - and occasionally way to bright or dark output, >> again only while the algorithm adjusts. Thus: > > I think I see something very similar on a yoga x1 gen 7 laptop (ipu6 + > ov2740). > But the reason there is that changing controls of the sensor takes an > unfortunately > long time, and as far as I can see this is because the i2c > communication goes through > usb (la jolla cove adapter). > > I'm wondering if you have a bit of time to check e.g. `strace -y -f > -tt -T -e ioctl ...` > to see if maybe the issue is similar. When running that command with qcam the only results that stand out to me are calls to a v4l2 subdev - does the following help you in any way? [pid 6987] 16:55:50.984189 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=3503, value64=3503}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=1608, value64=1608}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=3503, value64=3503}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=1608, value64=1608}]}) = 0 <0.001261> [pid 6987] 16:55:51.242984 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=5017, value64=5017}]}) = 0 <0.000876> [pid 6987] 16:55:51.560279 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:55:51.612564 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000124> [pid 6987] 16:55:51.949237 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000441> [pid 6987] 16:55:52.249029 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001243> [pid 6987] 16:55:52.562944 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:55:52.880668 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000282> [pid 6987] 16:55:53.228395 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000150> [pid 6987] 16:55:53.518880 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001265> [pid 6987] 16:55:53.842315 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.002526> [pid 6987] 16:55:54.150583 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000308> [pid 6987] 16:55:54.499292 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000141> [pid 6987] 16:55:54.789556 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]}) = 0 <0.002152> [pid 6987] 16:55:55.111930 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.001206> [pid 6987] 16:55:55.424848 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000667> [pid 6987] 16:55:55.670075 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000221> [pid 6987] 16:55:55.855896 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000693> [pid 6987] 16:55:56.082384 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.001346> [pid 6987] 16:55:56.300857 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.000175> [pid 6987] 16:55:56.576440 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.000229> [pid 6987] 16:55:56.823304 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:55:57.081586 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001915> [pid 6987] 16:55:57.339273 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000438> [pid 6987] 16:55:57.688265 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000173> [pid 6987] 16:55:57.978902 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001334> [pid 6987] 16:55:58.290605 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:55:58.612965 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000237> [pid 6987] 16:55:58.955866 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000171> [pid 6987] 16:55:59.247693 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001184> [pid 6987] 16:55:59.566270 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000444> [pid 6987] 16:55:59.879763 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000261> [pid 6987] 16:56:00.233259 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000168> [pid 6987] 16:56:00.524704 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]}) = 0 <0.002233> [pid 6987] 16:56:00.838552 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.001037> [pid 6987] 16:56:01.155589 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.000281> [pid 6987] 16:56:01.406946 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.000269> [pid 6987] 16:56:01.628006 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.001145> [pid 6987] 16:56:01.862885 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001138> [pid 6987] 16:56:02.101632 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000350> [pid 6987] 16:56:02.429338 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000416> [pid 6987] 16:56:02.732639 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001203> [pid 6987] 16:56:03.057485 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000492> [pid 6987] 16:56:03.370166 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000159> [pid 6987] 16:56:03.719593 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000521> [pid 6987] 16:56:04.006789 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000996> [pid 6987] 16:56:04.320280 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000088> [pid 6987] 16:56:04.633028 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000146> [pid 6987] 16:56:04.976441 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:56:05.270354 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:56:05.587319 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000171> [pid 6987] 16:56:05.905006 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000170> [pid 6987] 16:56:06.250761 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:56:06.549971 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001576> [pid 6987] 16:56:06.866953 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000151> [pid 6987] 16:56:07.188840 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000131> [pid 6987] 16:56:07.529850 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000184> [pid 6987] 16:56:07.820446 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001171> [pid 6987] 16:56:08.133719 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000211> [pid 6987] 16:56:08.450089 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000095> [pid 6987] 16:56:08.797798 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000408> [pid 6987] 16:56:09.094746 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> [pid 6987] 16:56:09.409220 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000545> [pid 6987] 16:56:09.725948 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000145> [pid 6987] 16:56:10.065845 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000119> [pid 6987] 16:56:10.356911 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000751> [pid 6987] 16:56:10.680812 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000193> > >> >> Tested-by: Robert Mader <robert.mader@collabora.com> >> >> for the shared and softisp/simple parts. >> >> Best regards >> >> On 25.09.26 12:25, Barnabás Pőcze wrote: >>> The maximum available exposure depends on the frame duration, but this >>> is not considered by the current agc implementation, it fixes the >>> maximum >>> exposure time based on whatever configuration was used to configure the >>> algorithm. This means that in certain situations the full exposure >>> range >>> might not be used, even in dark scenes. >>> >>> This a second attempt at adapting >>> https://patchwork.libcamera.org/project/libcamera/list/?series=5590 >>> on the current master branch. But now that the agc handling is >>> largely unified, >>> fewer changes are needed to make this work on every platform. >>> >>> So effectively only patch 7 is taken directly, but only the exposure >>> margin >>> introduction part of it. >>> >>> This was mainly tested on rkisp1+imx219 and softisp+ov2740. >>> >>> changes in v2: >>> * report `FrameDurationLimits` in metadata >>> * add exposure margin to more sensor helpers >>> >>> v1: https://patchwork.libcamera.org/cover/28111/ >>> >>> Barnabás Pőcze (8): >>> ipa: libipa: agc: Keep frame duration limits ordered >>> ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier >>> ipa: libipa: agc: Report `FrameDurationLimits` >>> ipa: libipa: agc: Calculate vblank and frame duration sooner >>> ipa: libipa: agc: Take parameters from active state for calculation >>> libcamera: pipeline: Set vblank on more platforms >>> ipa: libipa: agc: Rework frame duration limit calculation >>> ipa: libipa: agc: Take exposure margin into account >>> >>> Jacopo Mondi (1): >>> ipa: camera_sensor_helper: Introduce exposure margin >>> >>> src/ipa/ipu3/algorithms/agc.cpp | 2 +- >>> src/ipa/ipu3/ipu3.cpp | 3 +- >>> src/ipa/libipa/agc.cpp | 226 >>> +++++++++++-------- >>> src/ipa/libipa/agc.h | 18 +- >>> src/ipa/libipa/camera_sensor_helper.cpp | 68 ++++++ >>> src/ipa/libipa/camera_sensor_helper.h | 2 + >>> src/ipa/mali-c55/algorithms/agc.cpp | 2 +- >>> src/ipa/mali-c55/mali-c55.cpp | 3 +- >>> src/ipa/rkisp1/algorithms/agc.cpp | 2 +- >>> src/ipa/rkisp1/rkisp1.cpp | 4 +- >>> src/ipa/softisp/algorithms/agc.cpp | 2 +- >>> src/ipa/softisp/softisp.cpp | 3 +- >>> src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + >>> src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + >>> src/libcamera/pipeline/simple/simple.cpp | 1 + >>> 15 files changed, 224 insertions(+), 114 deletions(-) >>> >>> -- >>> 2.55.0 >
2026. 09. 30. 17:04 keltezéssel, Robert Mader írta: > Hi, > > On 29.09.26 10:50, Barnabás Pőcze wrote: >> 2026. 09. 29. 9:52 keltezéssel, Robert Mader írta: >>> Hi, thanks for the series! >>> >>> Unfortunately I currently don't have time to help with reviewing, however I gave the series a quick go on some mobile qcom devices on pmOS: Pixel 3a, OnePlus 6, FairPhone 5 >>> >>> By now all their cameras are supported in the pmOS downstream kernels - and I'm happy to report that all of them seem to benefit a lot from this series! Especially in challenging environments with high contrasts the results are way less overexposed - overall the behavior seems to be much closer to rkisp1 (on the PinePhone Pro). >>> >>> The only downsides I could spot are lower frame rates while the algorithm adjusts - and occasionally way to bright or dark output, again only while the algorithm adjusts. Thus: >> >> I think I see something very similar on a yoga x1 gen 7 laptop (ipu6 + ov2740). >> But the reason there is that changing controls of the sensor takes an unfortunately >> long time, and as far as I can see this is because the i2c communication goes through >> usb (la jolla cove adapter). >> >> I'm wondering if you have a bit of time to check e.g. `strace -y -f -tt -T -e ioctl ...` >> to see if maybe the issue is similar. > > When running that command with qcam the only results that stand out to me are calls to a v4l2 subdev - does the following help you in any way? Yes, that's what I was thinking of. But those seem fast enough. Although I can see up to 0.002233, which is more than 2 ms, which I think kind of enters the not ideal territory. In my case I can see things like [pid 5907] ioctl(11, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=2, controls=[{id=V4L2_CID_EXPOSURE, size=0, value=2039, value64=2039}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=1184, value64=1184}]} => {controls=[{id=V4L2_CID_EXPOSURE, size=0, value=2039, value64=2039}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=1184, value64=1184}]}) = 0 <0.109058> so more than 0.1 seconds for the ioctl. > > [pid 6987] 16:55:50.984189 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=3503, value64=3503}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=1608, value64=1608}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=3503, value64=3503}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=1608, value64=1608}]}) = 0 <0.001261> > [pid 6987] 16:55:51.242984 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=5017, value64=5017}]}) = 0 <0.000876> > [pid 6987] 16:55:51.560279 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:55:51.612564 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000124> > [pid 6987] 16:55:51.949237 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=544, value64=544}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000441> > [pid 6987] 16:55:52.249029 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001243> > [pid 6987] 16:55:52.562944 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:55:52.880668 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000282> > [pid 6987] 16:55:53.228395 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=465, value64=465}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000150> > [pid 6987] 16:55:53.518880 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001265> > [pid 6987] 16:55:53.842315 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.002526> > [pid 6987] 16:55:54.150583 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000308> > [pid 6987] 16:55:54.499292 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=23, value64=23}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000141> > [pid 6987] 16:55:54.789556 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]}) = 0 <0.002152> > [pid 6987] 16:55:55.111930 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.001206> > [pid 6987] 16:55:55.424848 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000667> > [pid 6987] 16:55:55.670075 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20689, value64=20689}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=19157, value64=19157}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000221> > [pid 6987] 16:55:55.855896 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=20671, value64=20671}]}) = 0 <0.000693> > [pid 6987] 16:55:56.082384 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.001346> > [pid 6987] 16:55:56.300857 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.000175> > [pid 6987] 16:55:56.576440 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24899, value64=24899}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=23367, value64=23367}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=24881, value64=24881}]}) = 0 <0.000229> > [pid 6987] 16:55:56.823304 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:55:57.081586 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001915> > [pid 6987] 16:55:57.339273 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000438> > [pid 6987] 16:55:57.688265 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=302, value64=302}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000173> > [pid 6987] 16:55:57.978902 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001334> > [pid 6987] 16:55:58.290605 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:55:58.612965 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000237> > [pid 6987] 16:55:58.955866 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=355, value64=355}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000171> > [pid 6987] 16:55:59.247693 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001184> > [pid 6987] 16:55:59.566270 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000444> > [pid 6987] 16:55:59.879763 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000261> > [pid 6987] 16:56:00.233259 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=33, value64=33}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000168> > [pid 6987] 16:56:00.524704 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]}) = 0 <0.002233> > [pid 6987] 16:56:00.838552 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.001037> > [pid 6987] 16:56:01.155589 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.000281> > [pid 6987] 16:56:01.406946 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22501, value64=22501}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=20969, value64=20969}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=0, value64=0}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.000269> > [pid 6987] 16:56:01.628006 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=22483, value64=22483}]}) = 0 <0.001145> > [pid 6987] 16:56:01.862885 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001138> > [pid 6987] 16:56:02.101632 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000350> > [pid 6987] 16:56:02.429338 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=120, value64=120}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000416> > [pid 6987] 16:56:02.732639 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001203> > [pid 6987] 16:56:03.057485 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000492> > [pid 6987] 16:56:03.370166 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000159> > [pid 6987] 16:56:03.719593 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=234, value64=234}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000521> > [pid 6987] 16:56:04.006789 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000996> > [pid 6987] 16:56:04.320280 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000088> > [pid 6987] 16:56:04.633028 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000146> > [pid 6987] 16:56:04.976441 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=317, value64=317}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:56:05.270354 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:56:05.587319 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000171> > [pid 6987] 16:56:05.905006 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000170> > [pid 6987] 16:56:06.250761 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=252, value64=252}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:56:06.549971 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001576> > [pid 6987] 16:56:06.866953 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000151> > [pid 6987] 16:56:07.188840 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000131> > [pid 6987] 16:56:07.529850 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=198, value64=198}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000184> > [pid 6987] 16:56:07.820446 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.001171> > [pid 6987] 16:56:08.133719 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000211> > [pid 6987] 16:56:08.450089 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000095> > [pid 6987] 16:56:08.797798 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=136, value64=136}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000408> > [pid 6987] 16:56:09.094746 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}] <unfinished ...> > [pid 6987] 16:56:09.409220 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000545> > [pid 6987] 16:56:09.725948 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000145> > [pid 6987] 16:56:10.065845 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=54, value64=54}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000119> > [pid 6987] 16:56:10.356911 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000751> > [pid 6987] 16:56:10.680812 ioctl(16</dev/v4l-subdev28>, VIDIOC_S_EXT_CTRLS, {ctrl_class=0 /* V4L2_CTRL_CLASS_??? */, count=3, controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30230, value64=30230}]} => {controls=[{id=V4L2_CID_VBLANK, size=0, value=28698, value64=28698}, {id=V4L2_CID_ANALOGUE_GAIN, size=0, value=978, value64=978}, {id=V4L2_CID_EXPOSURE, size=0, value=30212, value64=30212}]}) = 0 <0.000193> > > >> >>> >>> Tested-by: Robert Mader <robert.mader@collabora.com> >>> >>> for the shared and softisp/simple parts. >>> >>> Best regards >>> >>> On 25.09.26 12:25, Barnabás Pőcze wrote: >>>> The maximum available exposure depends on the frame duration, but this >>>> is not considered by the current agc implementation, it fixes the maximum >>>> exposure time based on whatever configuration was used to configure the >>>> algorithm. This means that in certain situations the full exposure range >>>> might not be used, even in dark scenes. >>>> >>>> This a second attempt at adapting https://patchwork.libcamera.org/project/libcamera/list/?series=5590 >>>> on the current master branch. But now that the agc handling is largely unified, >>>> fewer changes are needed to make this work on every platform. >>>> >>>> So effectively only patch 7 is taken directly, but only the exposure margin >>>> introduction part of it. >>>> >>>> This was mainly tested on rkisp1+imx219 and softisp+ov2740. >>>> >>>> changes in v2: >>>> * report `FrameDurationLimits` in metadata >>>> * add exposure margin to more sensor helpers >>>> >>>> v1: https://patchwork.libcamera.org/cover/28111/ >>>> >>>> Barnabás Pőcze (8): >>>> ipa: libipa: agc: Keep frame duration limits ordered >>>> ipa: libipa: agc: Retrieve `FrameDurationLimits` earlier >>>> ipa: libipa: agc: Report `FrameDurationLimits` >>>> ipa: libipa: agc: Calculate vblank and frame duration sooner >>>> ipa: libipa: agc: Take parameters from active state for calculation >>>> libcamera: pipeline: Set vblank on more platforms >>>> ipa: libipa: agc: Rework frame duration limit calculation >>>> ipa: libipa: agc: Take exposure margin into account >>>> >>>> Jacopo Mondi (1): >>>> ipa: camera_sensor_helper: Introduce exposure margin >>>> >>>> src/ipa/ipu3/algorithms/agc.cpp | 2 +- >>>> src/ipa/ipu3/ipu3.cpp | 3 +- >>>> src/ipa/libipa/agc.cpp | 226 +++++++++++-------- >>>> src/ipa/libipa/agc.h | 18 +- >>>> src/ipa/libipa/camera_sensor_helper.cpp | 68 ++++++ >>>> src/ipa/libipa/camera_sensor_helper.h | 2 + >>>> src/ipa/mali-c55/algorithms/agc.cpp | 2 +- >>>> src/ipa/mali-c55/mali-c55.cpp | 3 +- >>>> src/ipa/rkisp1/algorithms/agc.cpp | 2 +- >>>> src/ipa/rkisp1/rkisp1.cpp | 4 +- >>>> src/ipa/softisp/algorithms/agc.cpp | 2 +- >>>> src/ipa/softisp/softisp.cpp | 3 +- >>>> src/libcamera/pipeline/ipu3/ipu3.cpp | 1 + >>>> src/libcamera/pipeline/mali-c55/mali-c55.cpp | 1 + >>>> src/libcamera/pipeline/simple/simple.cpp | 1 + >>>> 15 files changed, 224 insertions(+), 114 deletions(-) >>>> >>>> -- >>>> 2.55.0 >>