libcamera v0.7.0+1-4ceceb68
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | List of all members
libcamera::Debayer Class Referenceabstract

Base debayering class. More...

Inheritance diagram for libcamera::Debayer:
Inheritance graph
[legend]
Collaboration diagram for libcamera::Debayer:
Collaboration graph
[legend]

Classes

struct  DebayerInputConfig
 Structure describing the incoming Bayer parameters. More...
 
struct  DebayerOutputConfig
 Structure describing the output frame configuration. More...
 

Public Member Functions

 Debayer (const GlobalConfiguration &configuration)
 Construct a Debayer object.
 
virtual int configure (const StreamConfiguration &inputCfg, const std::vector< std::reference_wrapper< StreamConfiguration > > &outputCfgs, bool ccmEnabled)=0
 Configure the debayer object according to the passed in parameters.
 
virtual std::vector< PixelFormatformats (PixelFormat inputFormat)=0
 Get the supported output formats.
 
virtual std::tuple< unsigned int, unsigned int > strideAndFrameSize (const PixelFormat &outputFormat, const Size &size)=0
 Get the stride and the frame size.
 
virtual void process (uint32_t frame, FrameBuffer *input, FrameBuffer *output, DebayerParams params)=0
 Process the bayer data into the requested format.
 
virtual int start ()
 Execute a start signal in the debayer object from workerthread context.
 
virtual void stop ()
 Stop the debayering process and perform cleanup.
 
virtual SizeRange sizes (PixelFormat inputFormat, const Size &inputSize)=0
 Get the supported output sizes for the given input format and size.
 
virtual const SharedFDgetStatsFD ()=0
 Get the file descriptor for the statistics.
 
unsigned int frameSize ()
 Get the output frame size.
 
- Public Member Functions inherited from libcamera::Object
 Object (Object *parent=nullptr)
 Construct an Object instance.
 
virtual ~Object ()
 Destroy an Object instance.
 
void deleteLater ()
 Schedule deletion of the instance in the thread it belongs to.
 
void postMessage (std::unique_ptr< Message > msg)
 Post a message to the object's thread.
 
template<typename T , typename R , typename... FuncArgs, typename... Args, std::enable_if_t< std::is_base_of< Object, T >::value > * = nullptr>
invokeMethod (R(T::*func)(FuncArgs...), ConnectionType type, Args &&... args)
 Invoke a method asynchronously on an Object instance.
 
Threadthread () const
 Retrieve the thread the object is bound to.
 
void moveToThread (Thread *thread)
 Move the object and all its children to a different thread.
 
Objectparent () const
 Retrieve the object's parent.
 

Public Attributes

Signal< FrameBuffer * > inputBufferReady
 Signals when the input buffer is ready.
 
Signal< FrameBuffer * > outputBufferReady
 Signals when the output buffer is ready.
 
DebayerInputConfig inputConfig_
 Input configuration parameters for the current debayer operation.
 
DebayerOutputConfig outputConfig_
 Output configuration data for the debayered frame.
 
Size outputSize_
 Output size object.
 
PixelFormat inputPixelFormat_
 The incoming pixel format.
 
PixelFormat outputPixelFormat_
 The output pixel format.
 
bool swapRedBlueGains_
 Flag indicating whether red and blue channel gains should be swapped.
 
Benchmark bench_
 Benchmarking utility instance for performance measurements.
 

Protected Member Functions

void dmaSyncBegin (std::vector< DmaSyncer > &dmaSyncers, FrameBuffer *input, FrameBuffer *output)
 Common CPU/GPU Dma Sync Buffer begin.
 
- Protected Member Functions inherited from libcamera::Object
virtual void message (Message *msg)
 Message handler for the object.
 
bool assertThreadBound (const char *message)
 Check if the caller complies with thread-bound constraints.
 

Static Protected Member Functions

static bool isStandardBayerOrder (BayerFormat::Order order)
 Common method to validate standard 2x2 Bayer pattern of 2 Green, 1 Blue, 1 Red pixels.
 

Detailed Description

Base debayering class.

Base class that provides functions for setting up the debayering process.

Constructor & Destructor Documentation

◆ Debayer()

libcamera::Debayer::Debayer ( const GlobalConfiguration configuration)

Construct a Debayer object.

Parameters
[in]configurationGlobal configuration reference

Member Function Documentation

◆ configure()

int libcamera::Debayer::configure ( const StreamConfiguration inputCfg,
const std::vector< std::reference_wrapper< StreamConfiguration > > &  outputCfgs,
bool  ccmEnabled 
)
pure virtual

Configure the debayer object according to the passed in parameters.

Parameters
[in]inputCfgThe input configuration
[in]outputCfgsThe output configurations
[in]ccmEnabledWhether a color correction matrix is applied
Returns
0 on success, a negative errno on failure

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

◆ formats()

std::vector< PixelFormat > libcamera::Debayer::formats ( PixelFormat  inputFormat)
pure virtual

Get the supported output formats.

Parameters
[in]inputFormatThe input format
Returns
All supported output formats or an empty vector if there are none

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

◆ frameSize()

unsigned int libcamera::Debayer::frameSize ( )
inline

Get the output frame size.

Returns
The total output frame size in bytes as configured for the current stream.

◆ getStatsFD()

const SharedFD & libcamera::Debayer::getStatsFD ( )
pure virtual

Get the file descriptor for the statistics.

This file descriptor provides access to the output statistics buffer associated with the current debayering process.

Returns
The file descriptor pointing to the statistics data

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

◆ process()

void libcamera::Debayer::process ( uint32_t  frame,
FrameBuffer input,
FrameBuffer output,
DebayerParams  params 
)
pure virtual

Process the bayer data into the requested format.

Parameters
[in]frameThe frame number
[in]inputThe input buffer
[in]outputThe output buffer
[in]paramsThe parameters to be used in debayering
Note
DebayerParams is passed by value deliberately so that a copy is passed when this is run in another thread by invokeMethod().

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

◆ sizes()

SizeRange libcamera::Debayer::sizes ( PixelFormat  inputFormat,
const Size inputSize 
)
pure virtual

Get the supported output sizes for the given input format and size.

Parameters
[in]inputFormatThe input format
[in]inputSizeThe input size
Returns
The valid size ranges or an empty range if there are none

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

◆ start()

int libcamera::Debayer::start ( )
inlinevirtual

Execute a start signal in the debayer object from workerthread context.

The start() method is invoked so that a Debayer object can initialise internal variables or data. It is called from the software_isp::start method.

This method is particularly useful with DebayerEGL as it allows for the initialisation of the EGL stack after configure in a thread-safe manner.

Reimplemented in libcamera::DebayerEGL.

◆ stop()

void libcamera::Debayer::stop ( )
inlinevirtual

Stop the debayering process and perform cleanup.

The stop() method is invoked as the logically corollary of start(). Debayer::stop() will be called by software_isp::stop() allowing for any cleanup which should happend with stop().

The stop method similar to start() is useful for DebayerEGL as it allows for cleanup of EGL context and/or data that happens in DebayerEGL::start.

Reimplemented in libcamera::DebayerEGL.

◆ strideAndFrameSize()

std::tuple< unsigned int, unsigned int > libcamera::Debayer::strideAndFrameSize ( const PixelFormat outputFormat,
const Size size 
)
pure virtual

Get the stride and the frame size.

Parameters
[in]outputFormatThe output format
[in]sizeThe output size
Returns
A tuple of the stride and the frame size, or a tuple with 0,0 if there is no valid output config

Implemented in libcamera::DebayerCpu, and libcamera::DebayerEGL.

Member Data Documentation

◆ bench_

libcamera::Debayer::bench_

Benchmarking utility instance for performance measurements.

Used internally to track timing and performance metrics during debayer processing.

◆ inputConfig_

libcamera::Debayer::inputConfig_

Input configuration parameters for the current debayer operation.

Holds metadata describing the incoming Bayer image layout, including pattern size, bytes per pixel, stride, and supported output formats. Populated during configuration.

◆ outputConfig_

libcamera::Debayer::outputConfig_

Output configuration data for the debayered frame.

Contains bytes per pixel, stride, and total frame size for the output image buffer. Set during stream configuration.

◆ swapRedBlueGains_

libcamera::Debayer::swapRedBlueGains_

Flag indicating whether red and blue channel gains should be swapped.

Used when the Bayer pattern order indicates that red/blue color channels are reversed.


The documentation for this class was generated from the following files: