@@ -30,11 +30,13 @@
#include <libcamera/stream.h>
#include "libcamera/internal/camera.h"
+#include "libcamera/internal/camera_manager.h"
#include "libcamera/internal/camera_sensor.h"
#include "libcamera/internal/camera_sensor_properties.h"
#include "libcamera/internal/converter.h"
#include "libcamera/internal/delayed_controls.h"
#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/global_configuration.h"
#include "libcamera/internal/media_device.h"
#include "libcamera/internal/pipeline_handler.h"
#include "libcamera/internal/software_isp/software_isp.h"
@@ -1682,6 +1684,19 @@ bool SimplePipelineHandler::matchDevice(MediaDevice *media,
}
swIspEnabled_ = info.swIspEnabled;
+ const GlobalConfiguration &configuration = cameraManager()->_d()->configuration();
+ for (GlobalConfiguration::Configuration entry :
+ configuration.configuration()["pipelines"]["simple"]["supported_devices"]
+ .asList()) {
+ auto name = entry["driver"].get<std::string>();
+ if (name == info.driver) {
+ swIspEnabled_ = entry["software_isp"].get<bool>().value_or(swIspEnabled_);
+ LOG(SimplePipeline, Debug)
+ << "Configuration file overrides software ISP for "
+ << info.driver << " to " << swIspEnabled_;
+ break;
+ }
+ }
/* Locate the sensors. */
std::vector<MediaEntity *> sensors = locateSensors(media);