mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 15:29:45 +03:00
libcamera: IPAManager: remove instance() and make createIPA() static
As the only usage of IPAManager::instance() is by the pipeline handlers to call IPAManager::createIPA(), remove the former and make the latter static. Update the pipeline handlers and tests accordingly. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
46d544345c
commit
6e730695de
6 changed files with 10 additions and 26 deletions
|
@ -25,9 +25,7 @@ public:
|
||||||
IPAManager();
|
IPAManager();
|
||||||
~IPAManager();
|
~IPAManager();
|
||||||
|
|
||||||
static IPAManager *instance();
|
static std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe,
|
||||||
|
|
||||||
std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe,
|
|
||||||
uint32_t maxVersion,
|
uint32_t maxVersion,
|
||||||
uint32_t minVersion);
|
uint32_t minVersion);
|
||||||
|
|
||||||
|
|
|
@ -99,8 +99,7 @@ IPAManager *IPAManager::self_ = nullptr;
|
||||||
* \brief Construct an IPAManager instance
|
* \brief Construct an IPAManager instance
|
||||||
*
|
*
|
||||||
* The IPAManager class is meant to only be instantiated once, by the
|
* The IPAManager class is meant to only be instantiated once, by the
|
||||||
* CameraManager. Pipeline handlers shall use the instance() function to access
|
* CameraManager.
|
||||||
* the IPAManager instance.
|
|
||||||
*/
|
*/
|
||||||
IPAManager::IPAManager()
|
IPAManager::IPAManager()
|
||||||
{
|
{
|
||||||
|
@ -159,19 +158,6 @@ IPAManager::~IPAManager()
|
||||||
self_ = nullptr;
|
self_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Retrieve the IPA manager instance
|
|
||||||
*
|
|
||||||
* The IPAManager is constructed by the CameraManager. This function shall be
|
|
||||||
* used to retrieve the single instance of the manager.
|
|
||||||
*
|
|
||||||
* \return The IPA manager instance
|
|
||||||
*/
|
|
||||||
IPAManager *IPAManager::instance()
|
|
||||||
{
|
|
||||||
return self_;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Identify shared library objects within a directory
|
* \brief Identify shared library objects within a directory
|
||||||
* \param[in] libDir The directory to search for shared objects
|
* \param[in] libDir The directory to search for shared objects
|
||||||
|
@ -273,7 +259,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe,
|
||||||
{
|
{
|
||||||
IPAModule *m = nullptr;
|
IPAModule *m = nullptr;
|
||||||
|
|
||||||
for (IPAModule *module : modules_) {
|
for (IPAModule *module : self_->modules_) {
|
||||||
if (module->match(pipe, minVersion, maxVersion)) {
|
if (module->match(pipe, minVersion, maxVersion)) {
|
||||||
m = module;
|
m = module;
|
||||||
break;
|
break;
|
||||||
|
@ -289,7 +275,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe,
|
||||||
*
|
*
|
||||||
* \todo Implement a better proxy selection
|
* \todo Implement a better proxy selection
|
||||||
*/
|
*/
|
||||||
const char *proxyName = isSignatureValid(m)
|
const char *proxyName = self_->isSignatureValid(m)
|
||||||
? "IPAProxyThread" : "IPAProxyLinux";
|
? "IPAProxyThread" : "IPAProxyLinux";
|
||||||
IPAProxyFactory *pf = nullptr;
|
IPAProxyFactory *pf = nullptr;
|
||||||
|
|
||||||
|
|
|
@ -1118,7 +1118,7 @@ void RPiCameraData::frameStarted(uint32_t sequence)
|
||||||
|
|
||||||
int RPiCameraData::loadIPA()
|
int RPiCameraData::loadIPA()
|
||||||
{
|
{
|
||||||
ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1);
|
ipa_ = IPAManager::createIPA(pipe_, 1, 1);
|
||||||
if (!ipa_)
|
if (!ipa_)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
|
|
@ -395,7 +395,7 @@ private:
|
||||||
|
|
||||||
int RkISP1CameraData::loadIPA()
|
int RkISP1CameraData::loadIPA()
|
||||||
{
|
{
|
||||||
ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1);
|
ipa_ = IPAManager::createIPA(pipe_, 1, 1);
|
||||||
if (!ipa_)
|
if (!ipa_)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
|
|
@ -410,7 +410,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
|
||||||
|
|
||||||
std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media);
|
std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media);
|
||||||
|
|
||||||
data->ipa_ = IPAManager::instance()->createIPA(this, 0, 0);
|
data->ipa_ = IPAManager::createIPA(this, 0, 0);
|
||||||
if (data->ipa_ != nullptr) {
|
if (data->ipa_ != nullptr) {
|
||||||
std::string conf = data->ipa_->configurationFile("vimc.conf");
|
std::string conf = data->ipa_->configurationFile("vimc.conf");
|
||||||
data->ipa_->init(IPASettings{ conf });
|
data->ipa_->init(IPASettings{ conf });
|
||||||
|
|
|
@ -95,7 +95,7 @@ protected:
|
||||||
EventDispatcher *dispatcher = thread()->eventDispatcher();
|
EventDispatcher *dispatcher = thread()->eventDispatcher();
|
||||||
Timer timer;
|
Timer timer;
|
||||||
|
|
||||||
ipa_ = IPAManager::instance()->createIPA(pipe_.get(), 0, 0);
|
ipa_ = IPAManager::createIPA(pipe_.get(), 0, 0);
|
||||||
if (!ipa_) {
|
if (!ipa_) {
|
||||||
cerr << "Failed to create VIMC IPA interface" << endl;
|
cerr << "Failed to create VIMC IPA interface" << endl;
|
||||||
return TestFail;
|
return TestFail;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue