libcamera v0.7.2 Supporting cameras in Linux since 2019

Loading...
Searching...
No Matches
libcamera::Debayer Class Referenceabstract

Base debayering class. More...

Inheritance diagram for libcamera::Debayer:
[legend]
Collaboration diagram for libcamera::Debayer:
[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 CameraManager &cm)
| Construct a Debayer object.
virtual int | configure (const StreamConfiguration &inputCfg, const std::vector< std::reference_wrapper< const StreamConfiguration > > &outputCfgs, bool ccmEnabled)=0
| Configure the debayer object according to the passed in parameters.
virtual std::vector< PixelFormat > | formats (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 uint32_t | preferredInputStride (const PixelFormat &inputFormat, const Size &size)
virtual void | process (uint32_t frame, FrameBuffer *input, FrameBuffer *output, const 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 SharedFD & | getStatsFD ()=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>
R | invokeMethod (R(T::*func)(FuncArgs...), ConnectionType type, Args &&... args)
| Invoke a method asynchronously on an Object instance.
Thread * | thread () const
| Retrieve the thread the object is bound to.
void | moveToThread (Thread *thread)
| Move the object and all its children to a different thread.
Object * | parent () 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 CameraManager & | cm | ) |

Construct a Debayer object.

Parameters

  [in] | cm | The camera manager

## Member Function Documentation

## ◆ configure()

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

Configure the debayer object according to the passed in parameters.

Parameters

  [in] | inputCfg | The input configuration
  [in] | outputCfgs | The output configurations
  [in] | ccmEnabled | Whether a color correction matrix is applied

Returns
  0 on success, a negative errno on failure

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

## ◆ formats()

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

Get the supported output formats.

Parameters

  [in] | inputFormat | The 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()

virtual 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.

## ◆ preferredInputStride()

virtual uint32_t libcamera::Debayer::preferredInputStride | ( | const PixelFormat & | inputFormat,
|  | const Size & | size )
| inline virtual

Get the preferred input stride in bytes for the given input format and size

Parameters

  [in] | inputFormat | The input format
  [in] | size | The input size (width and height in pixels)

Returns
  The preferred input stride in bytes or 0 if there is no preference

Reimplemented in libcamera::DebayerEGL.

## ◆ process()

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

Process the bayer data into the requested format.

Parameters

  [in] | frame | The frame number
  [in] | input | The input buffer
  [in] | output | The output buffer
  [in] | params | The 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()

virtual 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] | inputFormat | The input format
  [in] | inputSize | The input size

Returns
  The valid size ranges or an empty range if there are none

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

## ◆ start()

virtual int libcamera::Debayer::start | ( |  | ) |
| inline virtual

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::DebayerCpu, and libcamera::DebayerEGL.

## ◆ stop()

virtual void libcamera::Debayer::stop | ( |  | ) |
| inline virtual

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::DebayerCpu, and libcamera::DebayerEGL.

## ◆ strideAndFrameSize()

virtual 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] | outputFormat | The output format
  [in] | size | The 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_

Benchmark libcamera::Debayer::bench_

Benchmarking utility instance for performance measurements.

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

## ◆ inputConfig_

DebayerInputConfig 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_

DebayerOutputConfig 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_

bool 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:

- src/libcamera/software_isp/debayer.h
- src/libcamera/software_isp/debayer.cpp