ipa: Move vimc to a subdirectory
Give a subdirectory to all IPA modules to make the structure of the source tree more consistent. This will also simplify the implementation of IPA module selection at build time. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
5e8933eeeb
commit
a25533089b
3 changed files with 18 additions and 19 deletions
119
src/ipa/vimc/vimc.cpp
Normal file
119
src/ipa/vimc/vimc.cpp
Normal file
|
@ -0,0 +1,119 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
/*
|
||||
* Copyright (C) 2019, Google Inc.
|
||||
*
|
||||
* ipa_vimc.cpp - Vimc Image Processing Algorithm module
|
||||
*/
|
||||
|
||||
#include <ipa/ipa_vimc.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <ipa/ipa_interface.h>
|
||||
#include <ipa/ipa_module_info.h>
|
||||
|
||||
#include <libipa/ipa_interface_wrapper.h>
|
||||
|
||||
#include "log.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
LOG_DEFINE_CATEGORY(IPAVimc)
|
||||
|
||||
class IPAVimc : public IPAInterface
|
||||
{
|
||||
public:
|
||||
IPAVimc();
|
||||
~IPAVimc();
|
||||
|
||||
int init() 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 {}
|
||||
void unmapBuffers(const std::vector<unsigned int> &ids) override {}
|
||||
void processEvent(const IPAOperationData &event) override {}
|
||||
|
||||
private:
|
||||
void initTrace();
|
||||
void trace(enum IPAOperationCode operation);
|
||||
|
||||
int fd_;
|
||||
};
|
||||
|
||||
IPAVimc::IPAVimc()
|
||||
: fd_(-1)
|
||||
{
|
||||
initTrace();
|
||||
}
|
||||
|
||||
IPAVimc::~IPAVimc()
|
||||
{
|
||||
if (fd_)
|
||||
::close(fd_);
|
||||
}
|
||||
|
||||
int IPAVimc::init()
|
||||
{
|
||||
trace(IPAOperationInit);
|
||||
|
||||
LOG(IPAVimc, Debug) << "initializing vimc IPA!";
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void IPAVimc::initTrace()
|
||||
{
|
||||
struct stat fifoStat;
|
||||
int ret = stat(VIMC_IPA_FIFO_PATH, &fifoStat);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
ret = ::open(VIMC_IPA_FIFO_PATH, O_WRONLY);
|
||||
if (ret < 0) {
|
||||
ret = errno;
|
||||
LOG(IPAVimc, Error) << "Failed to open vimc IPA test FIFO: "
|
||||
<< strerror(ret);
|
||||
return;
|
||||
}
|
||||
|
||||
fd_ = ret;
|
||||
}
|
||||
|
||||
void IPAVimc::trace(enum IPAOperationCode operation)
|
||||
{
|
||||
if (fd_ < 0)
|
||||
return;
|
||||
|
||||
int ret = ::write(fd_, &operation, sizeof(operation));
|
||||
if (ret < 0) {
|
||||
ret = errno;
|
||||
LOG(IPAVimc, Error) << "Failed to write to vimc IPA test FIFO: "
|
||||
<< strerror(ret);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* External IPA module interface
|
||||
*/
|
||||
|
||||
extern "C" {
|
||||
const struct IPAModuleInfo ipaModuleInfo = {
|
||||
IPA_MODULE_API_VERSION,
|
||||
0,
|
||||
"PipelineHandlerVimc",
|
||||
"Dummy IPA for Vimc",
|
||||
LICENSE,
|
||||
};
|
||||
|
||||
struct ipa_context *ipaCreate()
|
||||
{
|
||||
return new IPAInterfaceWrapper(std::make_unique<IPAVimc>());
|
||||
}
|
||||
}
|
||||
|
||||
} /* namespace libcamera */
|
Loading…
Add table
Add a link
Reference in a new issue