summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2020-04-24 12:01:49 +0200
committerJacopo Mondi <jacopo@jmondi.org>2020-04-28 22:25:23 +0200
commitfd554f9dba3171b624e584d50c7554f9c5f9cc52 (patch)
tree2c2cdf6a92aeed7de55107333f51be1f2ce3ca78 /include
parentee4bb92aaeefaed04603d0b0c279d0d4f0be0197 (diff)
libcamera: ipa: Add support for CameraSensorInfo
Add support for camera sensor information in the libcamera IPA protocol. Define a new 'struct ipa_sensor_info' structure in the IPA context and use it to perform translation between the C and the C++ API. Update the IPAInterface::configure() operation to accept a new CameraSensorInfo parameter and port all users of that function to the new interface. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'include')
-rw-r--r--include/ipa/ipa_interface.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/include/ipa/ipa_interface.h b/include/ipa/ipa_interface.h
index ef3d6507..a2d5e3dd 100644
--- a/include/ipa/ipa_interface.h
+++ b/include/ipa/ipa_interface.h
@@ -22,6 +22,27 @@ struct ipa_settings {
const char *configuration_file;
};
+struct ipa_sensor_info {
+ const char *model;
+ uint8_t bits_per_pixel;
+ struct {
+ uint32_t width;
+ uint32_t height;
+ } active_area;
+ struct {
+ int32_t left;
+ int32_t top;
+ uint32_t width;
+ uint32_t height;
+ } analog_crop;
+ struct {
+ uint32_t width;
+ uint32_t height;
+ } output_size;
+ uint64_t pixel_rate;
+ uint32_t line_length;
+};
+
struct ipa_stream {
unsigned int id;
unsigned int pixel_format;
@@ -75,6 +96,7 @@ struct ipa_context_ops {
const struct ipa_callback_ops *callbacks,
void *cb_ctx);
void (*configure)(struct ipa_context *ctx,
+ const struct ipa_sensor_info *sensor_info,
const struct ipa_stream *streams,
unsigned int num_streams,
const struct ipa_control_info_map *maps,
@@ -125,6 +147,8 @@ struct IPAOperationData {
std::vector<ControlList> controls;
};
+struct CameraSensorInfo;
+
class IPAInterface
{
public:
@@ -134,7 +158,8 @@ public:
virtual int start() = 0;
virtual void stop() = 0;
- virtual void configure(const std::map<unsigned int, IPAStream> &streamConfig,
+ virtual void configure(const CameraSensorInfo &sensorInfo,
+ const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, const ControlInfoMap &> &entityControls) = 0;
virtual void mapBuffers(const std::vector<IPABuffer> &buffers) = 0;