ipa_manager.h
Go to the documentation of this file.
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* ipa_manager.h - Image Processing Algorithm module manager
*/
#ifndef __LIBCAMERA_INTERNAL_IPA_MANAGER_H__
#define __LIBCAMERA_INTERNAL_IPA_MANAGER_H__
#include <stdint.h>
#include <vector>
#include <libcamera/ipa/ipa_interface.h>
#include <libcamera/ipa/ipa_module_info.h>
#include "libcamera/internal/ipa_module.h"
#include "libcamera/internal/pipeline_handler.h"
#include "libcamera/internal/pub_key.h"
namespace libcamera {
class IPAManager
{
public:
IPAManager();
~IPAManager();
static std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe,
uint32_t maxVersion,
uint32_t minVersion);
private:
static IPAManager *self_;
void parseDir(const char *libDir, unsigned int maxDepth,
std::vector<std::string> &files);
unsigned int addDir(const char *libDir, unsigned int maxDepth = 0);
bool isSignatureValid(IPAModule *ipa) const;
std::vector<IPAModule *> modules_;
#if HAVE_IPA_PUBKEY
static const uint8_t publicKeyData_[];
static const PubKey pubKey_;
#endif
};
} /* namespace libcamera */
#endif /* __LIBCAMERA_INTERNAL_IPA_MANAGER_H__ */
libcamera::IPAManager
Manager for IPA modules.
Definition: ipa_manager.h:23
libcamera::IPAManager::createIPA
static std::unique_ptr< IPAProxy > createIPA(PipelineHandler *pipe, uint32_t maxVersion, uint32_t minVersion)
Create an IPA proxy that matches a given pipeline handler.
Definition: ipa_manager.cpp:256
libcamera::IPAManager::IPAManager
IPAManager()
Construct an IPAManager instance.
Definition: ipa_manager.cpp:104
libcamera::IPAModule
Wrapper around IPA module shared object.
Definition: ipa_module.h:23
libcamera::PipelineHandler
Create and manage cameras based on a set of media devices.
Definition: pipeline_handler.h:59
libcamera::PubKey
Public key wrapper for signature verification.
Definition: pub_key.h:21
ipa_interface.h
Image Processing Algorithm interface.
ipa_module.h
Image Processing Algorithm module.
ipa_module_info.h
Image Processing Algorithm module information.
pipeline_handler.h
Create pipelines and cameras from a set of media devices.
pub_key.h
Public key signature verification.