Message ID | 20250616100900.1524567-1-barnabas.pocze@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Barnabás, Looks reasonable to me. On Mon, 16 Jun 2025 at 11:09, Barnabás Pőcze <barnabas.pocze@ideasonboard.com> wrote: > > This is how uvcvideo and rkisp1 do it. See ee918b370a08b > ("ipa: rkisp1: agc: Initialize enum controls with a list of values") > for the motivation. In summary, having a list of values is used as a sign > that the control is an enum in multiple places (e.g. `cam`, `camshark`). > > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> > --- > changes in v2: > * specify all supported values explicitly > > v1: https://patchwork.libcamera.org/patch/23505/ > --- > src/ipa/rpi/common/ipa_base.cpp | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp > index 50e25f057..6565f5366 100644 > --- a/src/ipa/rpi/common/ipa_base.cpp > +++ b/src/ipa/rpi/common/ipa_base.cpp > @@ -58,23 +58,24 @@ const ControlInfoMap::Map ipaControls{ > /* \todo Move this to the Camera class */ > { &controls::AeEnable, ControlInfo(false, true, true) }, > { &controls::ExposureTimeMode, > - ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto), > - static_cast<int32_t>(controls::ExposureTimeModeManual), > - static_cast<int32_t>(controls::ExposureTimeModeAuto)) }, > + ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto), > + ControlValue(controls::ExposureTimeModeManual) } }, > + ControlValue(controls::ExposureTimeModeAuto)) }, > { &controls::ExposureTime, > ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) }, > { &controls::AnalogueGainMode, > - ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto), > - static_cast<int32_t>(controls::AnalogueGainModeManual), > - static_cast<int32_t>(controls::AnalogueGainModeAuto)) }, > + ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto), > + ControlValue(controls::AnalogueGainModeManual) } }, > + ControlValue(controls::AnalogueGainModeAuto)) }, > { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) }, > { &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) }, > { &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) }, > { &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) }, > { &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) }, > - { &controls::AeFlickerMode, ControlInfo(static_cast<int>(controls::FlickerOff), > - static_cast<int>(controls::FlickerManual), > - static_cast<int>(controls::FlickerOff)) }, > + { &controls::AeFlickerMode, > + ControlInfo({ { ControlValue(controls::FlickerOff), > + ControlValue(controls::FlickerManual) } }, > + ControlValue(controls::FlickerOff)) }, > { &controls::AeFlickerPeriod, ControlInfo(100, 1000000) }, > { &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) }, > { &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) }, > -- > 2.49.0
On Mon, Jun 16, 2025 at 12:09:00PM +0200, Barnabás Pőcze wrote: > This is how uvcvideo and rkisp1 do it. See ee918b370a08b > ("ipa: rkisp1: agc: Initialize enum controls with a list of values") > for the motivation. In summary, having a list of values is used as a sign > that the control is an enum in multiple places (e.g. `cam`, `camshark`). > > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > changes in v2: > * specify all supported values explicitly > > v1: https://patchwork.libcamera.org/patch/23505/ > --- > src/ipa/rpi/common/ipa_base.cpp | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp > index 50e25f057..6565f5366 100644 > --- a/src/ipa/rpi/common/ipa_base.cpp > +++ b/src/ipa/rpi/common/ipa_base.cpp > @@ -58,23 +58,24 @@ const ControlInfoMap::Map ipaControls{ > /* \todo Move this to the Camera class */ > { &controls::AeEnable, ControlInfo(false, true, true) }, > { &controls::ExposureTimeMode, > - ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto), > - static_cast<int32_t>(controls::ExposureTimeModeManual), > - static_cast<int32_t>(controls::ExposureTimeModeAuto)) }, > + ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto), > + ControlValue(controls::ExposureTimeModeManual) } }, > + ControlValue(controls::ExposureTimeModeAuto)) }, > { &controls::ExposureTime, > ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) }, > { &controls::AnalogueGainMode, > - ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto), > - static_cast<int32_t>(controls::AnalogueGainModeManual), > - static_cast<int32_t>(controls::AnalogueGainModeAuto)) }, > + ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto), > + ControlValue(controls::AnalogueGainModeManual) } }, > + ControlValue(controls::AnalogueGainModeAuto)) }, > { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) }, > { &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) }, > { &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) }, > { &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) }, > { &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) }, > - { &controls::AeFlickerMode, ControlInfo(static_cast<int>(controls::FlickerOff), > - static_cast<int>(controls::FlickerManual), > - static_cast<int>(controls::FlickerOff)) }, > + { &controls::AeFlickerMode, > + ControlInfo({ { ControlValue(controls::FlickerOff), > + ControlValue(controls::FlickerManual) } }, > + ControlValue(controls::FlickerOff)) }, > { &controls::AeFlickerPeriod, ControlInfo(100, 1000000) }, > { &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) }, > { &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp index 50e25f057..6565f5366 100644 --- a/src/ipa/rpi/common/ipa_base.cpp +++ b/src/ipa/rpi/common/ipa_base.cpp @@ -58,23 +58,24 @@ const ControlInfoMap::Map ipaControls{ /* \todo Move this to the Camera class */ { &controls::AeEnable, ControlInfo(false, true, true) }, { &controls::ExposureTimeMode, - ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto), - static_cast<int32_t>(controls::ExposureTimeModeManual), - static_cast<int32_t>(controls::ExposureTimeModeAuto)) }, + ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto), + ControlValue(controls::ExposureTimeModeManual) } }, + ControlValue(controls::ExposureTimeModeAuto)) }, { &controls::ExposureTime, ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) }, { &controls::AnalogueGainMode, - ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto), - static_cast<int32_t>(controls::AnalogueGainModeManual), - static_cast<int32_t>(controls::AnalogueGainModeAuto)) }, + ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto), + ControlValue(controls::AnalogueGainModeManual) } }, + ControlValue(controls::AnalogueGainModeAuto)) }, { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) }, { &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) }, { &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) }, { &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) }, { &controls::ExposureValue, ControlInfo(-8.0f, 8.0f, 0.0f) }, - { &controls::AeFlickerMode, ControlInfo(static_cast<int>(controls::FlickerOff), - static_cast<int>(controls::FlickerManual), - static_cast<int>(controls::FlickerOff)) }, + { &controls::AeFlickerMode, + ControlInfo({ { ControlValue(controls::FlickerOff), + ControlValue(controls::FlickerManual) } }, + ControlValue(controls::FlickerOff)) }, { &controls::AeFlickerPeriod, ControlInfo(100, 1000000) }, { &controls::Brightness, ControlInfo(-1.0f, 1.0f, 0.0f) }, { &controls::Contrast, ControlInfo(0.0f, 32.0f, 1.0f) },
This is how uvcvideo and rkisp1 do it. See ee918b370a08b ("ipa: rkisp1: agc: Initialize enum controls with a list of values") for the motivation. In summary, having a list of values is used as a sign that the control is an enum in multiple places (e.g. `cam`, `camshark`). Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- changes in v2: * specify all supported values explicitly v1: https://patchwork.libcamera.org/patch/23505/ --- src/ipa/rpi/common/ipa_base.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) -- 2.49.0