pipeline: simple: Allow enabling software ISP via config file
This patch allows enabling or disabling software ISP via config file in
addition to compile time. This can be useful for software ISP testing
on various platforms as well as for overriding the defaults in case the
defaults don't work well (e.g. hardware ISP may or may not work on
i.MX8MP depending on the kernel and libcamera patches present in the
given system).
The configuration is specified as follows:
configuration:
pipelines:
simple:
supported_devices:
- driver: DRIVER-NAME
software_isp: BOOLEAN
- ...
For example:
configuration:
pipelines:
simple:
supported_devices:
- driver: mxc-isi
software_isp: true
The overall configuration of enabling or disabling software ISP may get
dropped in future but this patch is still useful in the meantime.
Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
committed by
Laurent Pinchart
parent
7ba8c15dbf
commit
740c21eb58
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user