14#include <linux/media/v4l2-isp.h>
17#include <libcamera/base/span.h>
39 struct v4l2_isp_params_block_header *header =
40 reinterpret_cast<struct v4l2_isp_params_block_header *
>(
data_.data());
42 header->flags &= ~(V4L2_ISP_PARAMS_FL_BLOCK_ENABLE |
43 V4L2_ISP_PARAMS_FL_BLOCK_DISABLE);
44 header->flags |= enabled ? V4L2_ISP_PARAMS_FL_BLOCK_ENABLE
45 : V4L2_ISP_PARAMS_FL_BLOCK_DISABLE;
50 return reinterpret_cast<const T *
>(
data_.data());
55 return reinterpret_cast<T *
>(
data_.data());
60 return *
reinterpret_cast<const T *
>(
data_.data());
65 return *
reinterpret_cast<T *
>(
data_.data());
81 Span<uint8_t>
block(uint16_t type,
unsigned int blockType,
87 std::map<uint16_t, Span<uint8_t>>
blocks_;
90template<
typename Traits>
94 static_assert(std::is_same_v<std::underlying_type_t<typename Traits::id_type>, uint16_t>);
101 template<
typename Traits::
id_type Id>
104 using Details =
typename Traits::template id_to_details<Id>;
106 using Type =
typename Details::type;
107 constexpr auto kernelId = Details::blockType;
110 kernelId,
sizeof(Type));
Base class for V4L2Params.
Definition v4l2_params.h:73
size_t used_
The number of bytes used in the parameters buffer.
Definition v4l2_params.h:85
Span< uint8_t > block(uint16_t type, unsigned int blockType, size_t blockSize)
Populate an ISP configuration block a returns a reference to its memory.
Definition v4l2_params.cpp:170
size_t bytesused() const
Retrieve the used size of the parameters buffer (in bytes)
Definition v4l2_params.h:78
Span< uint8_t > data_
The ISP parameters buffer memory.
Definition v4l2_params.h:84
std::map< uint16_t, Span< uint8_t > > blocks_
Cache of ISP configuration blocks.
Definition v4l2_params.h:87
Helper class that represents an ISP configuration block.
Definition v4l2_params.h:28
virtual T * operator->()
Access the ISP configuration block casting it to the kernel-defined ISP configuration type.
Definition v4l2_params.h:53
virtual const T & operator*() const
Access the ISP configuration block casting it to the kernel-defined ISP configuration type.
Definition v4l2_params.h:58
virtual const T * operator->() const
Access the ISP configuration block casting it to the kernel-defined ISP configuration type.
Definition v4l2_params.h:48
virtual T & operator*()
Access the ISP configuration block casting it to the kernel-defined ISP configuration type.
Definition v4l2_params.h:63
V4L2ParamsBlock(const Span< uint8_t > data)
Construct a V4L2ParamsBlock with memory represented by data.
Definition v4l2_params.h:30
virtual void setEnabled(bool enabled)
Enable/disable an ISP configuration block.
Definition v4l2_params.h:37
Span< uint8_t > data_
Memory area reserved for the ISP configuration block.
Definition v4l2_params.h:69
Helper class that represent an ISP configuration buffer.
Definition v4l2_params.h:92
auto block()
Retrieve the location of an ISP configuration block a return it.
Definition v4l2_params.h:102
V4L2Params(Span< uint8_t > data, unsigned int version)
Construct an instance of V4L2Params.
Definition v4l2_params.h:96
#define LOG_DECLARE_CATEGORY(name)
Declare a category of log messages.
Definition log.h:51
Top-level libcamera namespace.
Definition backtrace.h:17
Miscellaneous utility functions.