libcamera  v0.3.0+156-644986c2
Supporting cameras in Linux since 2019
Classes | Public Member Functions | List of all members
libcamera::V4L2M2MConverter Class Reference

The V4L2 M2M converter implements the converter interface based on V4L2 M2M device. More...

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

Public Member Functions

 V4L2M2MConverter (MediaDevice *media)
 Construct a V4L2M2MConverter instance. More...
 
int loadConfiguration ([[maybe_unused]] const std::string &filename)
 
bool isValid () const
 
std::vector< PixelFormatformats (PixelFormat input)
 
SizeRange sizes (const Size &input)
 Retrieve the range of minimum and maximum output sizes for an input size. More...
 
std::tuple< unsigned int, unsigned int > strideAndFrameSize (const PixelFormat &pixelFormat, const Size &size)
 Retrieve the output stride and frame size for an input configutation. More...
 
int configure (const StreamConfiguration &inputCfg, const std::vector< std::reference_wrapper< StreamConfiguration >> &outputCfg)
 Configure a set of output stream conversion from an input stream. More...
 
int exportBuffers (const Stream *stream, unsigned int count, std::vector< std::unique_ptr< FrameBuffer >> *buffers)
 Export buffers from the converter device. More...
 
int start ()
 Start the converter streaming operation. More...
 
void stop ()
 Stop the converter streaming operation. More...
 
int queueBuffers (FrameBuffer *input, const std::map< const Stream *, FrameBuffer *> &outputs)
 Queue buffers to converter device. More...
 
- Public Member Functions inherited from libcamera::Converter
 Converter (MediaDevice *media)
 Construct a Converter instance. More...
 
virtual int loadConfiguration (const std::string &filename)=0
 Load converter configuration from file. More...
 
const std::string & deviceNode () const
 The converter device node attribute accessor. More...
 

Additional Inherited Members

- Public Attributes inherited from libcamera::Converter
Signal< FrameBuffer * > inputBufferReady
 A signal emitted when the input frame buffer completes.
 
Signal< FrameBuffer * > outputBufferReady
 A signal emitted on each frame buffer completion of the output queue.
 

Detailed Description

The V4L2 M2M converter implements the converter interface based on V4L2 M2M device.

Constructor & Destructor Documentation

◆ V4L2M2MConverter()

libcamera::V4L2M2MConverter::V4L2M2MConverter ( MediaDevice media)

Construct a V4L2M2MConverter instance.

Parameters
[in]mediaThe media device implementing the converter

Member Function Documentation

◆ configure()

int libcamera::V4L2M2MConverter::configure ( const StreamConfiguration inputCfg,
const std::vector< std::reference_wrapper< StreamConfiguration >> &  outputCfgs 
)
virtual

Configure a set of output stream conversion from an input stream.

Parameters
[in]inputCfgInput stream configuration
[out]outputCfgsA list of output stream configurations
Returns
0 on success or a negative error code otherwise

Implements libcamera::Converter.

◆ exportBuffers()

int libcamera::V4L2M2MConverter::exportBuffers ( const Stream stream,
unsigned int  count,
std::vector< std::unique_ptr< FrameBuffer >> *  buffers 
)
virtual

Export buffers from the converter device.

Parameters
[in]streamOutput stream pointer exporting the buffers
[in]countNumber of buffers to allocate
[out]buffersVector to store allocated buffers

This function operates similarly to V4L2VideoDevice::exportBuffers() on the output stream indicated by the output.

Returns
The number of allocated buffers on success or a negative error code otherwise

Implements libcamera::Converter.

◆ formats()

std::vector< PixelFormat > libcamera::V4L2M2MConverter::formats ( PixelFormat  input)
virtual
Parameters
[in]inputInput pixel format to retrieve output pixel format list for
Returns
The list of supported output pixel formats

Implements libcamera::Converter.

◆ isValid()

libcamera::V4L2M2MConverter::isValid ( ) const
inlinevirtual
Returns
True is the converter is valid, false otherwise

Implements libcamera::Converter.

◆ loadConfiguration()

libcamera::V4L2M2MConverter::loadConfiguration ( [[maybe_unused] ] const std::string &  filename)
inline
Parameters
[in]filenameThe file name path

Load converter dependent configuration parameters to apply on the hardware.

Returns
0 on success or a negative error code otherwise

◆ queueBuffers()

int libcamera::V4L2M2MConverter::queueBuffers ( FrameBuffer input,
const std::map< const Stream *, FrameBuffer *> &  outputs 
)
virtual

Queue buffers to converter device.

Parameters
[in]inputThe frame buffer to apply the conversion
[out]outputsThe container holding the output stream pointers and their respective frame buffer outputs.

This function queues the input frame buffer on the output streams of the outputs map key and retrieve the output frame buffer indicated by the buffer map value.

Returns
0 on success or a negative error code otherwise

Implements libcamera::Converter.

◆ sizes()

SizeRange libcamera::V4L2M2MConverter::sizes ( const Size input)
virtual

Retrieve the range of minimum and maximum output sizes for an input size.

Parameters
[in]inputInput stream size to retrieve range for
Returns
A range of output image sizes

Implements libcamera::Converter.

◆ start()

int libcamera::V4L2M2MConverter::start ( )
virtual

Start the converter streaming operation.

Returns
0 on success or a negative error code otherwise

Implements libcamera::Converter.

◆ stop()

void libcamera::V4L2M2MConverter::stop ( )
virtual

Stop the converter streaming operation.

Implements libcamera::Converter.

◆ strideAndFrameSize()

std::tuple< unsigned int, unsigned int > libcamera::V4L2M2MConverter::strideAndFrameSize ( const PixelFormat pixelFormat,
const Size size 
)
virtual

Retrieve the output stride and frame size for an input configutation.

Parameters
[in]pixelFormatInput stream pixel format
[in]sizeInput stream size
Returns
A tuple indicating the stride and frame size or an empty tuple on error

Implements libcamera::Converter.


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