ipa: Add start() and stop() operations

Add two new operations to the IPA interface to start and stop it. The
intention is that these functions shall be used by the IPA to perform
actions when the camera is started and stopped.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund
2020-03-26 14:28:56 +01:00
parent 72278369b3
commit 0e577cee9d
12 changed files with 156 additions and 3 deletions
@@ -20,6 +20,8 @@ public:
~IPAContextWrapper();
int init() override;
int start() override;
void stop() override;
void configure(const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, const ControlInfoMap &> &entityControls) override;
+22
View File
@@ -82,6 +82,28 @@ int IPAContextWrapper::init()
return 0;
}
int IPAContextWrapper::start()
{
if (intf_)
return intf_->start();
if (!ctx_)
return 0;
return ctx_->ops->start(ctx_);
}
void IPAContextWrapper::stop()
{
if (intf_)
return intf_->stop();
if (!ctx_)
return;
ctx_->ops->stop(ctx_);
}
void IPAContextWrapper::configure(const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, const ControlInfoMap &> &entityControls)
{
+32
View File
@@ -235,6 +235,20 @@
* \sa libcamera::IPAInterface::init()
*/
/**
* \var ipa_context_ops::start
* \brief Start the IPA context
*
* \sa libcamera::IPAInterface::start()
*/
/**
* \var ipa_context_ops::stop
* \brief Stop the IPA context
*
* \sa libcamera::IPAInterface::stop()
*/
/**
* \var ipa_context_ops::register_callbacks
* \brief Register callback operation from the IPA to the pipeline handler
@@ -412,6 +426,24 @@ namespace libcamera {
* \brief Initialise the IPAInterface
*/
/**
* \fn IPAInterface::start()
* \brief Start the IPA
*
* This method informs the IPA module that the camera is about to be started.
* The IPA module shall prepare any resources it needs to operate.
*
* \return 0 on success or a negative error code otherwise
*/
/**
* \fn IPAInterface::stop()
* \brief Stop the IPA
*
* This method informs the IPA module that the camera is stopped. The IPA module
* shall release resources prepared in start().
*/
/**
* \fn IPAInterface::configure()
* \brief Configure the IPA stream and sensor settings
+2
View File
@@ -27,6 +27,8 @@ public:
~IPAProxyLinux();
int init() override { return 0; }
int start() override { return 0; }
void stop() override {}
void configure(const std::map<unsigned int, IPAStream> &streamConfig,
const std::map<unsigned int, const ControlInfoMap &> &entityControls) override {}
void mapBuffers(const std::vector<IPABuffer> &buffers) override {}