@@ -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_);
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> --- include/libcamera/internal/converter.h | 2 +- include/libcamera/internal/converter/converter_dw100.h | 2 +- include/libcamera/internal/converter/converter_v4l2_m2m.h | 2 +- include/libcamera/internal/software_isp/software_isp.h | 2 +- src/libcamera/converter/converter_dw100.cpp | 2 +- src/libcamera/converter/converter_v4l2_m2m.cpp | 2 +- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- src/libcamera/pipeline/simple/simple.cpp | 2 +- src/libcamera/software_isp/debayer.h | 2 +- src/libcamera/software_isp/debayer_cpu.cpp | 2 +- src/libcamera/software_isp/debayer_cpu.h | 2 +- src/libcamera/software_isp/debayer_egl.cpp | 4 ++-- src/libcamera/software_isp/debayer_egl.h | 2 +- src/libcamera/software_isp/software_isp.cpp | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-)