libcamera: Make converter/softISP configure()'s outputCfgs argument really const
The intent of the outputCfgs argument to the configure() function of converter classes and the softISP is to allow the passed in stream-configs to not be changed. But only the vector is const, the reference inside the vector are not const, which allows modifying the stream-configs as can be seen inside DebayerEGL::configure() which was using a non const reference outputCfg helper variable. Fix this by making the references inside the vector const. Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
committed by
Kieran Bingham
parent
1500ef15d1
commit
5f770f748c
@@ -71,7 +71,7 @@ public:
|
||||
Alignment align = Alignment::Down) = 0;
|
||||
|
||||
virtual int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs) = 0;
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs) = 0;
|
||||
virtual bool isConfigured(const Stream *stream) const = 0;
|
||||
virtual int exportBuffers(const Stream *stream, unsigned int count,
|
||||
std::vector<std::unique_ptr<FrameBuffer>> *buffers) = 0;
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
int init(const YamlObject ¶ms);
|
||||
|
||||
int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>>
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>>
|
||||
&outputCfg);
|
||||
bool isConfigured(const Stream *stream) const;
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
const Size &size, Alignment align = Alignment::Down) override;
|
||||
|
||||
int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>>
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>>
|
||||
&outputCfg) override;
|
||||
bool isConfigured(const Stream *stream) const override;
|
||||
int exportBuffers(const Stream *stream, unsigned int count,
|
||||
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
strideAndFrameSize(const PixelFormat &outputFormat, const Size &size);
|
||||
|
||||
int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
const ipa::soft::IPAConfigInfo &configInfo);
|
||||
|
||||
int exportBuffers(const Stream *stream, unsigned int count,
|
||||
|
||||
@@ -142,7 +142,7 @@ int ConverterDW100Module::init(const YamlObject ¶ms)
|
||||
* \copydoc libcamera::V4L2M2MConverter::configure
|
||||
*/
|
||||
int ConverterDW100Module::configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>>
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>>
|
||||
&outputCfgs)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -548,7 +548,7 @@ Size V4L2M2MConverter::adjustSizes(const Size &cfgSize,
|
||||
* \copydoc libcamera::Converter::configure
|
||||
*/
|
||||
int V4L2M2MConverter::configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs)
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
||||
@@ -1037,7 +1037,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
|
||||
data->properties_.set(properties::ScalerCropMaximum, sensorCrop);
|
||||
|
||||
std::map<unsigned int, IPAStream> streamConfig;
|
||||
std::vector<std::reference_wrapper<StreamConfiguration>> outputCfgs;
|
||||
std::vector<std::reference_wrapper<const StreamConfiguration>> outputCfgs;
|
||||
|
||||
for (const StreamConfiguration &cfg : *config) {
|
||||
if (cfg.stream() == &data->mainPathStream_) {
|
||||
|
||||
@@ -1562,7 +1562,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
|
||||
}
|
||||
|
||||
/* Configure the converter if needed. */
|
||||
std::vector<std::reference_wrapper<StreamConfiguration>> outputCfgs;
|
||||
std::vector<std::reference_wrapper<const StreamConfiguration>> outputCfgs;
|
||||
data->useConversion_ = config->needConversion();
|
||||
|
||||
data->rawStream_ = nullptr;
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
virtual ~Debayer() = 0;
|
||||
|
||||
virtual int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
bool ccmEnabled) = 0;
|
||||
|
||||
virtual std::vector<PixelFormat> formats(PixelFormat inputFormat) = 0;
|
||||
|
||||
@@ -540,7 +540,7 @@ int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat,
|
||||
}
|
||||
|
||||
int DebayerCpu::configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
bool ccmEnabled)
|
||||
{
|
||||
if (getInputConfig(inputCfg.pixelFormat, inputConfig_) != 0)
|
||||
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
~DebayerCpu();
|
||||
|
||||
int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
bool ccmEnabled);
|
||||
Size patternSize(PixelFormat inputFormat);
|
||||
std::vector<PixelFormat> formats(PixelFormat input);
|
||||
|
||||
@@ -277,7 +277,7 @@ int DebayerEGL::initBayerShaders(PixelFormat inputFormat, PixelFormat outputForm
|
||||
}
|
||||
|
||||
int DebayerEGL::configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
[[maybe_unused]] bool ccmEnabled)
|
||||
{
|
||||
if (getInputConfig(inputCfg.pixelFormat, inputConfig_) != 0)
|
||||
@@ -307,7 +307,7 @@ int DebayerEGL::configure(const StreamConfiguration &inputCfg,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
StreamConfiguration &outputCfg = outputCfgs[0];
|
||||
const StreamConfiguration &outputCfg = outputCfgs[0];
|
||||
SizeRange outSizeRange = sizes(inputCfg.pixelFormat, inputCfg.size);
|
||||
std::tie(outputConfig_.stride, outputConfig_.frameSize) =
|
||||
strideAndFrameSize(outputCfg.pixelFormat, outputCfg.size);
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
~DebayerEGL();
|
||||
|
||||
int configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
bool ccmEnabled);
|
||||
|
||||
Size patternSize(PixelFormat inputFormat);
|
||||
|
||||
@@ -262,7 +262,7 @@ SoftwareIsp::strideAndFrameSize(const PixelFormat &outputFormat, const Size &siz
|
||||
* \return 0 on success, a negative errno on failure
|
||||
*/
|
||||
int SoftwareIsp::configure(const StreamConfiguration &inputCfg,
|
||||
const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
|
||||
const std::vector<std::reference_wrapper<const StreamConfiguration>> &outputCfgs,
|
||||
const ipa::soft::IPAConfigInfo &configInfo)
|
||||
{
|
||||
ASSERT(ipa_ && debayer_);
|
||||
|
||||
Reference in New Issue
Block a user