mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
controls: rpi: Add a vendor rpi::ScalerCrops control
Add a vendor control rpi::ScalerCrops that is analogous to the current core::ScalerCrop, but can apply a different crop to each configured stream. This control takes a span of Rectangle structures - the order of rectangles must match the order of streams configured by the application. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
ff069d87e2
commit
dbcf6123a0
2 changed files with 37 additions and 0 deletions
|
@ -96,6 +96,13 @@ const ControlInfoMap::Map ipaAfControls{
|
||||||
{ &controls::LensPosition, ControlInfo(0.0f, 32.0f, 1.0f) }
|
{ &controls::LensPosition, ControlInfo(0.0f, 32.0f, 1.0f) }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Platform specific controls */
|
||||||
|
const std::map<const std::string, ControlInfoMap::Map> platformControls {
|
||||||
|
{ "pisp", {
|
||||||
|
{ &controls::rpi::ScalerCrops, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) }
|
||||||
|
} },
|
||||||
|
};
|
||||||
|
|
||||||
} /* namespace */
|
} /* namespace */
|
||||||
|
|
||||||
LOG_DEFINE_CATEGORY(IPARPI)
|
LOG_DEFINE_CATEGORY(IPARPI)
|
||||||
|
@ -159,6 +166,10 @@ int32_t IpaBase::init(const IPASettings &settings, const InitParams ¶ms, Ini
|
||||||
if (lensPresent_)
|
if (lensPresent_)
|
||||||
ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));
|
ctrlMap.merge(ControlInfoMap::Map(ipaAfControls));
|
||||||
|
|
||||||
|
auto platformCtrlsIt = platformControls.find(controller_.getTarget());
|
||||||
|
if (platformCtrlsIt != platformControls.end())
|
||||||
|
ctrlMap.merge(ControlInfoMap::Map(platformCtrlsIt->second));
|
||||||
|
|
||||||
monoSensor_ = params.sensorInfo.cfaPattern == properties::draft::ColorFilterArrangementEnum::MONO;
|
monoSensor_ = params.sensorInfo.cfaPattern == properties::draft::ColorFilterArrangementEnum::MONO;
|
||||||
if (!monoSensor_)
|
if (!monoSensor_)
|
||||||
ctrlMap.merge(ControlInfoMap::Map(ipaColourControls));
|
ctrlMap.merge(ControlInfoMap::Map(ipaColourControls));
|
||||||
|
@ -1070,6 +1081,7 @@ void IpaBase::applyControls(const ControlList &controls)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case controls::rpi::SCALER_CROPS:
|
||||||
case controls::SCALER_CROP: {
|
case controls::SCALER_CROP: {
|
||||||
/* We do nothing with this, but should avoid the warning below. */
|
/* We do nothing with this, but should avoid the warning below. */
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -30,4 +30,29 @@ controls:
|
||||||
|
|
||||||
\sa StatsOutputEnable
|
\sa StatsOutputEnable
|
||||||
|
|
||||||
|
- ScalerCrops:
|
||||||
|
type: Rectangle
|
||||||
|
size: [n]
|
||||||
|
description: |
|
||||||
|
An array of rectangles, where each singular value has identical
|
||||||
|
functionality to the ScalerCrop control. This control allows the
|
||||||
|
Raspberry Pi pipeline handler to control individual scaler crops per
|
||||||
|
output stream.
|
||||||
|
|
||||||
|
The order of rectangles passed into the control must match the order of
|
||||||
|
streams configured by the application. The pipeline handler will only
|
||||||
|
configure crop retangles up-to the number of output streams configured.
|
||||||
|
All subsequent rectangles passed into this control are ignored by the
|
||||||
|
pipeline handler.
|
||||||
|
|
||||||
|
If both rpi::ScalerCrops and ScalerCrop controls are present in a
|
||||||
|
ControlList, the latter is discarded, and crops are obtained from this
|
||||||
|
control.
|
||||||
|
|
||||||
|
Note that using different crop rectangles for each output stream with
|
||||||
|
this control is only applicable on the Pi5/PiSP platform. This control
|
||||||
|
should also be considered temporary/draft and will be replaced with
|
||||||
|
official libcamera API support for per-stream controls in the future.
|
||||||
|
|
||||||
|
\sa ScalerCrop
|
||||||
...
|
...
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue