mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 07:19:45 +03:00
libcamera: pipeline: uvcvideo: Expose Gamma
control
Commit 294ead848c
("libcamera: Add gamma control id")
introduced the "Gamma" control, so expose it for UVC
cameras as well using the `V4L2_CID_GAMMA` control.
Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
5553efc6b1
commit
78d9f7bb75
1 changed files with 18 additions and 0 deletions
|
@ -329,6 +329,8 @@ int PipelineHandlerUVC::processControl(const UVCCameraData *data, ControlList *c
|
||||||
cid = V4L2_CID_EXPOSURE_ABSOLUTE;
|
cid = V4L2_CID_EXPOSURE_ABSOLUTE;
|
||||||
else if (id == controls::AnalogueGain)
|
else if (id == controls::AnalogueGain)
|
||||||
cid = V4L2_CID_GAIN;
|
cid = V4L2_CID_GAIN;
|
||||||
|
else if (id == controls::Gamma)
|
||||||
|
cid = V4L2_CID_GAMMA;
|
||||||
else
|
else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -394,6 +396,10 @@ int PipelineHandlerUVC::processControl(const UVCCameraData *data, ControlList *c
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case V4L2_CID_GAMMA:
|
||||||
|
controls->set(cid, static_cast<int32_t>(std::lround(value.get<float>() * 100)));
|
||||||
|
break;
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
int32_t ivalue = value.get<int32_t>();
|
int32_t ivalue = value.get<int32_t>();
|
||||||
controls->set(cid, ivalue);
|
controls->set(cid, ivalue);
|
||||||
|
@ -691,6 +697,9 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
|
||||||
case V4L2_CID_GAIN:
|
case V4L2_CID_GAIN:
|
||||||
id = &controls::AnalogueGain;
|
id = &controls::AnalogueGain;
|
||||||
break;
|
break;
|
||||||
|
case V4L2_CID_GAMMA:
|
||||||
|
id = &controls::Gamma;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -845,6 +854,15 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case V4L2_CID_GAMMA:
|
||||||
|
/* UVC gamma is in units of 1/100 gamma. */
|
||||||
|
info = ControlInfo{
|
||||||
|
{ min / 100.0f },
|
||||||
|
{ max / 100.0f },
|
||||||
|
{ def / 100.0f }
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
info = v4l2Info;
|
info = v4l2Info;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue