diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2020-04-24 12:01:49 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2020-04-28 22:25:23 +0200 |
commit | fd554f9dba3171b624e584d50c7554f9c5f9cc52 (patch) | |
tree | 2c2cdf6a92aeed7de55107333f51be1f2ce3ca78 /include/ipa | |
parent | ee4bb92aaeefaed04603d0b0c279d0d4f0be0197 (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/ipa')
-rw-r--r-- | include/ipa/ipa_interface.h | 27 |
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; |