1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86</* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2024, Ideas On Board * * ipa_context.h - Mali-C55 IPA Context */ #pragma once #include <libcamera/base/utils.h> #include <libcamera/controls.h> #include "libcamera/internal/bayer_format.h" #include <libipa/fc_queue.h> namespace libcamera { namespace ipa::mali_c55 { struct IPASessionConfiguration { struct { utils::Duration minShutterSpeed; utils::Duration maxShutterSpeed; uint32_t defaultExposure; double minAnalogueGain; double maxAnalogueGain; } agc; struct { BayerFormat::Order bayerOrder; utils::Duration lineDuration; uint32_t blackLevel; } sensor; }; struct IPAActiveState { struct { struct { uint32_t exposure; double sensorGain; double ispGain; } automatic; struct { uint32_t exposure; double sensorGain; double ispGain; } manual; bool autoEnabled; uint32_t constraintMode; uint32_t exposureMode; uint32_t temperatureK; } agc; }; struct IPAFrameContext : public FrameContext { struct { uint32_t exposure; double sensorGain; double ispGain; } agc; }; struct IPAContext { IPAContext(unsigned int frameContextSize) : frameContexts(frameContextSize) { } IPASessionConfiguration configuration; IPAActiveState activeState; FCQueue<IPAFrameContext> frameContexts; ControlInfoMap::Map ctrlMap; }; } /* namespace ipa::mali_c55 */ } /* namespace libcamera*/