Files
external_libcamera/include/libcamera/ipa/raspberrypi.h
Naushir Patuck 2795f333fc pipeline: ipa: raspberrypi: Pass controls to IPA on start
Forward any controls passed into the pipeline handler to the IPA.
The IPA then sets up the Raspberry Pi controller with these settings
appropriately, and passes back any V4L2 sensor controls that need
to be applied.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Tested-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2020-12-08 14:31:50 +02:00

77 lines
2.3 KiB
C++

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019-2020, Raspberry Pi Ltd.
*
* raspberrypi.h - Image Processing Algorithm interface for Raspberry Pi
*/
#ifndef __LIBCAMERA_IPA_INTERFACE_RASPBERRYPI_H__
#define __LIBCAMERA_IPA_INTERFACE_RASPBERRYPI_H__
#include <libcamera/control_ids.h>
#include <libcamera/controls.h>
#ifndef __DOXYGEN__
namespace libcamera {
namespace RPi {
enum ConfigParameters {
IPA_CONFIG_LS_TABLE = (1 << 0),
IPA_CONFIG_STAGGERED_WRITE = (1 << 1),
IPA_CONFIG_SENSOR = (1 << 2),
IPA_CONFIG_DROP_FRAMES = (1 << 3),
IPA_CONFIG_FAILED = (1 << 4),
IPA_CONFIG_STARTUP = (1 << 5),
};
enum Operations {
IPA_ACTION_V4L2_SET_STAGGERED = 1,
IPA_ACTION_V4L2_SET_ISP,
IPA_ACTION_STATS_METADATA_COMPLETE,
IPA_ACTION_RUN_ISP,
IPA_ACTION_EMBEDDED_COMPLETE,
IPA_EVENT_SIGNAL_STAT_READY,
IPA_EVENT_SIGNAL_ISP_PREPARE,
IPA_EVENT_QUEUE_REQUEST,
};
enum BufferMask {
ID = 0x00ffff,
STATS = 0x010000,
EMBEDDED_DATA = 0x020000,
BAYER_DATA = 0x040000,
EXTERNAL_BUFFER = 0x100000,
};
/* Size of the LS grid allocation. */
static constexpr unsigned int MaxLsGridSize = 32 << 10;
/* List of controls handled by the Raspberry Pi IPA */
static const ControlInfoMap Controls = {
{ &controls::AeEnable, ControlInfo(false, true) },
{ &controls::ExposureTime, ControlInfo(0, 999999) },
{ &controls::AnalogueGain, ControlInfo(1.0f, 32.0f) },
{ &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) },
{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },
{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },
{ &controls::ExposureValue, ControlInfo(0.0f, 16.0f) },
{ &controls::AwbEnable, ControlInfo(false, true) },
{ &controls::ColourGains, ControlInfo(0.0f, 32.0f) },
{ &controls::AwbMode, ControlInfo(controls::AwbModeValues) },
{ &controls::Brightness, ControlInfo(-1.0f, 1.0f) },
{ &controls::Contrast, ControlInfo(0.0f, 32.0f) },
{ &controls::Saturation, ControlInfo(0.0f, 32.0f) },
{ &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },
{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },
{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
};
} /* namespace RPi */
} /* namespace libcamera */
#endif /* __DOXYGEN__ */
#endif /* __LIBCAMERA_IPA_INTERFACE_RASPBERRYPI_H__ */