21#include "libcamera/internal/software_isp/swstats_cpu.h"
22#include "libcamera/internal/software_isp/debayer.h"
52 const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs);
61 std::tuple<unsigned int, unsigned int>
79 unsigned int frameSize() {
return outputConfig_.frameSize; }
82 void setupInputMemcpy(
const uint8_t *linePointers[]);
83 void shiftLinePointers(
const uint8_t *linePointers[],
const uint8_t *src);
84 void memcpyNextLine(
const uint8_t *linePointers[]);
85 void process2(
const uint8_t *src, uint8_t *dst);
86 void process4(
const uint8_t *src, uint8_t *dst);
88 void debayer8_BGBG_BGR888(uint8_t *dst,
const uint8_t *src[]);
89 void debayer8_GRGR_BGR888(uint8_t *dst,
const uint8_t *src[]);
91 void debayer10_BGBG_BGR888(uint8_t *dst,
const uint8_t *src[]);
92 void debayer10_GRGR_BGR888(uint8_t *dst,
const uint8_t *src[]);
94 void debayer12_BGBG_BGR888(uint8_t *dst,
const uint8_t *src[]);
95 void debayer12_GRGR_BGR888(uint8_t *dst,
const uint8_t *src[]);
97 void debayer10P_BGBG_BGR888(uint8_t *dst,
const uint8_t *src[]);
98 void debayer10P_GRGR_BGR888(uint8_t *dst,
const uint8_t *src[]);
99 void debayer10P_GBGB_BGR888(uint8_t *dst,
const uint8_t *src[]);
100 void debayer10P_RGRG_BGR888(uint8_t *dst,
const uint8_t *src[]);
102 void debayerIGIG10Line0(uint8_t *dst,
const uint8_t *src[]);
103 void debayerGBGR10Line1(uint8_t *dst,
const uint8_t *src[]);
104 void debayerIGIG10Line2(uint8_t *dst,
const uint8_t *src[]);
105 void debayerGRGB10Line3(uint8_t *dst,
const uint8_t *src[]);
107 typedef void (
DebayerCpu::*debayerFn)(uint8_t *dst, const uint8_t *src[]);
109 struct DebayerInputConfig {
113 std::vector<PixelFormat> outputFormats;
116 struct DebayerOutputConfig {
119 unsigned int frameSize;
122 int getInputConfig(PixelFormat inputFormat, DebayerInputConfig &config);
123 int getOutputConfig(PixelFormat outputFormat, DebayerOutputConfig &config);
125 int setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputFormat);
127 uint8_t gamma_[1024];
136 DebayerInputConfig inputConfig_;
137 DebayerOutputConfig outputConfig_;
138 std::unique_ptr<SwStatsCpu> stats_;
139 uint8_t *lineBuffers_[5];
140 unsigned int lineBufferIndex_;
141 unsigned int x_shift_;
142 bool enableInputMemcpy_;
143 bool swapRedBlueGains_;
144 float gamma_correction_;
146 int64_t frameProcessTime_;
148 static const int framesToSkip = 30;
149 static const int framesToMeasure = 60;
Class for debayering on the CPU.
Definition debayer_cpu.h:33
Size patternSize(PixelFormat inputFormat)
Get the width and height at which the bayer pattern repeats.
Definition debayer_cpu.cpp:723
SizeRange sizes(PixelFormat inputFormat, const Size &inputSize)
Get the supported output sizes for the given input format and size.
Definition debayer_cpu.cpp:993
unsigned int frameSize()
Get the output frame size.
Definition debayer_cpu.h:79
void process(FrameBuffer *input, FrameBuffer *output, DebayerParams params)
Process the bayer data into the requested format.
Definition debayer_cpu.cpp:914
int configure(const StreamConfiguration &inputCfg, const std::vector< std::reference_wrapper< StreamConfiguration > > &outputCfgs)
Configure the debayer object according to the passed in parameters.
Definition debayer_cpu.cpp:651
std::vector< PixelFormat > formats(PixelFormat input)
Get the supported output formats.
Definition debayer_cpu.cpp:733
std::tuple< unsigned int, unsigned int > strideAndFrameSize(const PixelFormat &outputFormat, const Size &size)
Get the stride and the frame size.
Definition debayer_cpu.cpp:744
const SharedFD & getStatsFD()
Get the file descriptor for the statistics.
Definition debayer_cpu.h:72
Base debayering class.
Definition debayer.h:37
Frame buffer data and its associated dynamic metadata.
Definition framebuffer.h:50
Base object to support automatic signal disconnection.
Definition object.h:25
RAII-style wrapper for file descriptors.
Definition shared_fd.h:17
Describe a range of sizes.
Definition geometry.h:201
Describe a two-dimensional size.
Definition geometry.h:53
Top-level libcamera namespace.
Definition backtrace.h:17
Base object to support automatic signal disconnection.
Struct to hold the debayer parameters.
Definition debayer_params.h:18
Configuration parameters for a stream.
Definition stream.h:41