Files
external_libcamera/include/ipa/ipa_interface.h
Laurent Pinchart 5f90d52d6e ipa: Pass ControlInfoMap references to IPAInterface::configure()
The IPAInterface::configure() operation receives a map of ControlInfoMap
instances. Pass const references instead to avoid copies when not
required (the callee can still make manual copies), and to allow for the
future serialization layer to keep references to the original object.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
2019-11-20 21:47:58 +02:00

58 lines
1.2 KiB
C++

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* ipa_interface.h - Image Processing Algorithm interface
*/
#ifndef __LIBCAMERA_IPA_INTERFACE_H__
#define __LIBCAMERA_IPA_INTERFACE_H__
#include <map>
#include <vector>
#include <libcamera/buffer.h>
#include <libcamera/controls.h>
#include <libcamera/geometry.h>
#include <libcamera/signal.h>
#include "v4l2_controls.h"
namespace libcamera {
struct IPAStream {
unsigned int pixelFormat;
Size size;
};
struct IPABuffer {
unsigned int id;
BufferMemory memory;
};
struct IPAOperationData {
unsigned int operation;
std::vector<uint32_t> data;
std::vector<ControlList> controls;
};
class IPAInterface
{
public:
virtual ~IPAInterface() {}
virtual int init() = 0;
virtual void configure(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;
virtual void unmapBuffers(const std::vector<unsigned int> &ids) = 0;
virtual void processEvent(const IPAOperationData &data) = 0;
Signal<unsigned int, const IPAOperationData &> queueFrameAction;
};
} /* namespace libcamera */
#endif /* __LIBCAMERA_IPA_INTERFACE_H__ */