mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-23 16:45:07 +03:00
The IPA interface needs to support interactions with the pipeline; add interfaces to control the sensor and handling of request ISP parameters and statistics. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
58 lines
1.3 KiB
C++
58 lines
1.3 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;
|
|
std::vector<V4L2ControlList> v4l2controls;
|
|
};
|
|
|
|
class IPAInterface
|
|
{
|
|
public:
|
|
virtual ~IPAInterface() {}
|
|
|
|
virtual int init() = 0;
|
|
|
|
virtual void configure(const std::map<unsigned int, IPAStream> &streamConfig,
|
|
const std::map<unsigned int, V4L2ControlInfoMap> &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__ */
|