@@ -14,6 +14,7 @@
#include <stdint.h>
#include "libcamera/internal/matrix.h"
+#include "libcamera/internal/vector.h"
namespace libcamera {
@@ -56,6 +57,7 @@ struct DebayerParams {
* Per frame corrections as calculated by the IPA
*/
Matrix<float, 3, 3> ccm;
+ RGB<float> blackLevel;
};
} /* namespace libcamera */
@@ -47,6 +47,15 @@ int BlackLevel::configure(IPAContext &context,
return 0;
}
+void BlackLevel::prepare(IPAContext &context,
+ [[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] IPAFrameContext &frameContext,
+ DebayerParams *params)
+{
+ /* Latch the blacklevel gain so GPUISP can apply. */
+ params->blackLevel = RGB<float>(context.activeState.blc.level / 255.0f);
+}
+
void BlackLevel::process(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
IPAFrameContext &frameContext,
@@ -24,6 +24,10 @@ public:
int init(IPAContext &context, const YamlObject &tuningData) override;
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
+ void prepare(IPAContext &context,
+ const uint32_t frame,
+ IPAFrameContext &frameContext,
+ DebayerParams *params) override;
void process(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const SwIspStats *stats,
@@ -105,6 +105,11 @@ namespace libcamera {
* \brief Per frame colour correction matrix for GPUISP
*/
+/**
+ * \var DebayerParams::blackLevel
+ * \brief Blacklevel gains for the GPUISP
+ */
+
/**
* \class Debayer
* \brief Base debayering class