14#ifdef PEAK_AFL_DYNAMIC_LOADING
15# define PEAK_AFL_C_ABI_PREFIX peak::afl::dynamic::DynamicLoader::
17# define PEAK_AFL_C_ABI_PREFIX
22#include <peak_ipl/algorithm/peak_ipl_gain.hpp>
23#include <peak_ipl/types/peak_ipl_image.hpp>
24#include <peak/node_map/peak_node_map.hpp>
37#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201703L))
38# define PEAK_AFL_NO_DISCARD [[nodiscard]]
39# define PEAK_AFL_MAYBE_UNUSED [[maybe_unused]]
42# define PEAK_AFL_NO_DISCARD _Check_return_
43# define PEAK_AFL_MAYBE_UNUSED
44# elif defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
45# define PEAK_AFL_NO_DISCARD __attribute__((warn_unused_result))
46# define PEAK_AFL_MAYBE_UNUSED __attribute__((unused))
48# define PEAK_AFL_NO_DISCARD
49# define PEAK_AFL_MAYBE_UNUSED
143 return std::to_string(major) +
"." + std::to_string(
minor) +
"." + std::to_string(
subminor) +
"." + std::to_string(
patch);
151 PEAK_AFL_NO_DISCARD uint32_t
Major()
const
161 PEAK_AFL_NO_DISCARD uint32_t
Minor()
const
180 PEAK_AFL_NO_DISCARD uint32_t
Patch()
const
244PEAK_AFL_NO_DISCARD
inline Version_t
Version();
294 return "PEAK_AFL_STATUS_SUCCESS";
297 return "PEAK_AFL_STATUS_ERROR";
300 return "PEAK_AFL_STATUS_NOT_INITIALIZED";
303 return "PEAK_AFL_STATUS_INVALID_PARAMETER";
306 return "PEAK_AFL_STATUS_ACCESS_DENIED";
309 return "PEAK_AFL_STATUS_BUSY";
312 return "PEAK_AFL_STATUS_BUFFER_TOO_SMALL";
315 return "PEAK_AFL_STATUS_INVALID_IMAGE_FORMAT";
318 return "PEAK_AFL_STATUS_NOT_SUPPORTED";
321 return "PEAK_AFL_STATUS_VALUE_ADJUSTED";
324 return "Unknown Status code";
337class InternalErrorException
344 , Exception(
string,
code)
350 , Exception(
string,
code)
361class NotInitializedException
368 , Exception(
string,
code)
374 , Exception(
string,
code)
388class InvalidParameterException
395 , Exception(
string,
code)
401 , Exception(
string,
code)
413class NotSupportedException
420 , Exception(
string,
code)
426 , Exception(
string,
code)
437class BusyException :
public Exception
442 , Exception(
string,
code)
447 , Exception(
string,
code)
460class InvalidImageFormatException :
public Exception
465 , Exception(
string,
code)
470 , Exception(
string,
code)
481class BadAccessException :
public Exception
486 , Exception(
string,
code)
491 , Exception(
string,
code)
501class BufferTooSmallException :
public Exception
506 , Exception(
string,
code)
511 , Exception(
string,
code)
521class CorruptedDataException :
public Exception
526 , Exception(
string,
code)
531 , Exception(
string,
code)
539class InvalidCastException
546 , Exception(
string,
code)
552 , Exception(
string,
code)
676 inline explicit Manager(
const std::shared_ptr<peak::core::NodeMap>& node_map);
701 inline void AddController(
const std::shared_ptr<Controller>& controller);
715 inline void RemoveController(
const std::shared_ptr<Controller>& controller);
728 inline void Process(
const peak::ipl::Image& image)
const;
777 inline void SetGainIPL(
const peak::ipl::Gain& gain);
792 inline void SetCCM(std::array<float, 9> ccm);
805 PEAK_AFL_NO_DISCARD
inline bool Status()
const;
814 PEAK_AFL_NO_DISCARD
inline std::vector<std::shared_ptr<Controller>>
ControllerList()
const;
850 std::vector<std::shared_ptr<Controller>> m_controllerList;
851 mutable std::mutex m_mutex{};
864template <
typename... ControllerTypes>
866 const std::shared_ptr<peak::core::NodeMap>& node_map, ControllerTypes... types)
868 constexpr int size =
sizeof...(types);
869 constexpr std::array<peak_afl_controllerType, size> controller_types{ types... };
870 std::vector<std::shared_ptr<Controller>> controller{};
872 controller.reserve(size);
874 std::for_each(controller_types.cbegin(), controller_types.cend(),
875 [&manager, &controller](
peak_afl_controllerType type) { controller.emplace_back(manager.CreateController(type)); });
877 return { std::move(manager), std::move(controller) };
888template <typename T, typename std::enable_if_t<std::is_arithmetic<T>::value,
int> = 0>
898using FinishedCallback = std::function<void(
void)>;
899using DataProcessingCallback = std::function<void(
int,
int)>;
901using ComponentCallback = std::function<void(
void)>;
903using RegisterFunction = std::function<PEAK_AFL_API_STATUS(
void*,
void*)>;
904using UnRegisterFunction = std::function<void()>;
983class Controller :
public std::enable_shared_from_this<Controller>
985 friend class Manager;
992 template <
typename R,
typename... Args>
993 Callback(
const std::shared_ptr<peak::afl::Controller>& controller, callback::RegisterFunction register_function,
994 callback::UnRegisterFunction unregister_function, std::function<R(Args...)> callback)
995 : m_unregister_function(std::move(unregister_function))
996 , m_callback(std::move(callback))
998 const auto ret = register_function(
reinterpret_cast<void*
>(&Callback::Func<Args...>),
this);
1001 error::ThrowException(ret);
1003 m_controller = controller;
1008 if (
auto controller = m_controller.lock())
1010 m_unregister_function();
1015 template <
typename... Args>
1016 static void Func(Args... args,
void* ptr)
1018 static_cast<Callback*
>(ptr)->m_callback(args...);
1022 std::weak_ptr<peak::afl::Controller> m_controller{};
1023 callback::UnRegisterFunction m_unregister_function{};
1038 : m_handle(handle) {};
1046 Controller(
const Controller&) =
delete;
1047 Controller(Controller&&) =
delete;
1048 Controller& operator=(
const Controller&) =
delete;
1049 Controller& operator=(Controller&&) =
delete;
1099 PEAK_AFL_NO_DISCARD
inline std::uint32_t
GetSkipFrames()
const;
1287 PEAK_AFL_NO_DISCARD
inline std::tuple<std::uint8_t, std::uint8_t, std::uint8_t>
GetLastAutoAverages()
const;
1325 PEAK_AFL_NO_DISCARD
inline std::uint32_t
GetAutoTarget()
const;
1505 PEAK_AFL_NO_DISCARD
inline std::vector<peak_afl_controller_algorithm>
GetAlgorithmList()
const;
1660 inline void SetWeightedROIs(
const std::vector<peak_afl_weighted_rectangle>& list);
1695 PEAK_AFL_NO_DISCARD
inline std::vector<peak_afl_weighted_rectangle>
GetWeightedROIs()
const;
1780 PEAK_AFL_NO_DISCARD
inline std::uint8_t
GetHysteresis()
const;
2115 using FinishedCallbackType = Callback<callback::FinishedCallback>;
2116 using DataProcessingCallbackType = Callback<callback::DataProcessingCallback>;
2117 using ProcessingCallbackType = Callback<callback::ProcessingCallback>;
2118 using ComponentCallbackType = Callback<callback::ComponentCallback>;
2121 std::unique_ptr<FinishedCallbackType> m_finishedCallback{};
2122 std::unique_ptr<DataProcessingCallbackType> m_dataProcessingCallback{};
2123 std::unique_ptr<ProcessingCallbackType> m_ProcessingCallback{};
2124 std::unique_ptr<ComponentCallbackType> m_finishedExposureCallback{};
2126 std::unique_ptr<ComponentCallbackType> m_finishedGainCallback{};
2128 std::unique_ptr<ComponentCallbackType> m_AnalogGainCallback{};
2129 std::unique_ptr<ComponentCallbackType> m_DigitalGainCallback{};
2130 std::unique_ptr<ComponentCallbackType> m_CombinedGainCallback{};
2131 std::unique_ptr<ComponentCallbackType> m_HostGainCallback{};
2142 error::ThrowException(ret,
false);
2151 error::ThrowException(ret,
false);
2162 error::ThrowException(ret,
false);
2170 std::size_t lastErrorMessageSize;
2176 return "Cannot get last error!";
2179 std::vector<char> text;
2180 text.resize(lastErrorMessageSize);
2185 return "Cannot get last error!";
2188 return { text.begin(), text.end() };
2194 if (node_map ==
nullptr)
2202 error::ThrowException(ret);
2208 if (m_handle !=
nullptr)
2213 std::lock_guard<std::mutex> lck(m_mutex);
2214 for (
auto& c : m_controllerList)
2216 c->m_handle =
nullptr;
2227 m_handle = other.m_handle;
2228 other.m_handle =
nullptr;
2230 std::lock_guard<std::mutex> lck(other.m_mutex);
2231 m_controllerList = std::move(other.m_controllerList);
2234inline Manager& Manager::operator=(Manager&& other)
noexcept
2236 m_handle = other.m_handle;
2237 other.m_handle =
nullptr;
2239 std::lock_guard<std::mutex> lck(other.m_mutex);
2240 m_controllerList = std::move(other.m_controllerList);
2247 std::lock_guard<std::mutex> lck(m_mutex);
2249 auto cnt = std::any_of(
2250 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2260 error::ThrowException(ret);
2263 m_controllerList.emplace_back(controller);
2268 std::lock_guard<std::mutex> lck(m_mutex);
2273 error::ThrowException(ret);
2276 auto it = std::remove_if(
2277 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2279 m_controllerList.erase(it, m_controllerList.end());
2287 error::ThrowException(ret);
2293 std::lock_guard<std::mutex> lck(m_mutex);
2299 error::ThrowException(ret);
2302 auto shared = std::shared_ptr<Controller>(
new Controller(handle));
2303 m_controllerList.emplace_back(shared);
2310 std::lock_guard<std::mutex> lck(m_mutex);
2315 error::ThrowException(ret);
2318 for (
auto& c : m_controllerList)
2320 c->m_handle =
nullptr;
2323 m_controllerList.clear();
2328 std::lock_guard<std::mutex> lck(m_mutex);
2333 error::ThrowException(ret);
2336 auto it = std::remove_if(
2337 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2339 m_controllerList.erase(it, m_controllerList.end());
2341 controller->m_handle =
nullptr;
2349 error::ThrowException(ret);
2358 error::ThrowException(ret);
2364 std::uint8_t status;
2368 error::ThrowException(ret);
2376 std::lock_guard<std::mutex> lck(m_mutex);
2378 std::vector<std::shared_ptr<Controller>> controller{};
2380 std::copy(m_controllerList.begin(), m_controllerList.end(), std::back_inserter(controller));
2387 return m_controllerList.size();
2392 std::lock_guard<std::mutex> lck(m_mutex);
2394 auto it = std::find_if(m_controllerList.cbegin(), m_controllerList.cend(),
2395 [=](
const std::shared_ptr<Controller>& controller) { return type == controller->Type(); });
2397 if (it != m_controllerList.cend())
2413 error::ThrowException(ret);
2426 error::ThrowException(ret);
2429 return std::shared_ptr<Controller>(
new Controller(handle));
2434 if (m_handle !=
nullptr)
2447 error::ThrowException(ret);
2458 error::ThrowException(ret);
2464 std::uint32_t count{};
2468 error::ThrowException(ret);
2480 error::ThrowException(ret);
2492 error::ThrowException(ret);
2503 error::ThrowException(ret);
2513 error::ThrowException(ret);
2524 error::ThrowException(ret);
2535 error::ThrowException(ret);
2545 error::ThrowException(ret);
2556 error::ThrowException(ret);
2566 error::ThrowException(ret);
2577 error::ThrowException(ret);
2588 error::ThrowException(ret);
2598 error::ThrowException(ret);
2609 error::ThrowException(ret);
2617 std::uint8_t average{};
2621 error::ThrowException(ret);
2628 std::uint8_t averageRed{}, averageGreen{}, averageBlue{};
2632 error::ThrowException(ret);
2634 return { averageRed, averageGreen, averageBlue };
2643 error::ThrowException(ret);
2654 error::ThrowException(ret);
2660 std::uint32_t target{};
2664 error::ThrowException(ret);
2675 error::ThrowException(ret);
2686 error::ThrowException(ret);
2697 error::ThrowException(ret);
2703 std::uint32_t tolerance;
2707 error::ThrowException(ret);
2718 error::ThrowException(ret);
2729 error::ThrowException(ret);
2740 error::ThrowException(ret);
2750 error::ThrowException(ret);
2761 error::ThrowException(ret);
2772 error::ThrowException(ret);
2783 error::ThrowException(ret);
2794 error::ThrowException(ret);
2804 error::ThrowException(ret);
2812 std::vector<peak_afl_controller_algorithm> algList{};
2813 std::uint32_t listSize{};
2818 error::ThrowException(ret);
2821 algList.resize(listSize);
2826 error::ThrowException(ret);
2838 error::ThrowException(ret);
2849 error::ThrowException(ret);
2859 error::ThrowException(ret);
2867 std::vector<peak_afl_controller_sharpness_algorithm> algList{};
2868 std::uint32_t listSize{};
2873 error::ThrowException(ret);
2876 algList.resize(listSize);
2881 error::ThrowException(ret);
2889 m_finishedCallback = std::make_unique<FinishedCallbackType>(
2891 [handle = m_handle](
void* ptr,
void* ctx) {
2894 [handle = m_handle] {
2903 m_finishedCallback.reset();
2915 return std::make_unique<ComponentCallbackType>(
2917 [handle = m_handle, component](
void* ptr,
void* ctx) {
2921 [handle = m_handle, component] {
2928 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
2931 m_finishedExposureCallback = registerCallback(component);
2935 m_finishedGainCallback = registerCallback(component);
2939 m_AnalogGainCallback = registerCallback(component);
2943 m_DigitalGainCallback = registerCallback(component);
2947 m_CombinedGainCallback = registerCallback(component);
2951 m_HostGainCallback = registerCallback(component);
2957 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
2962 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
2965 m_finishedExposureCallback.reset();
2969 m_finishedGainCallback.reset();
2973 m_AnalogGainCallback.reset();
2977 m_DigitalGainCallback.reset();
2981 m_CombinedGainCallback.reset();
2985 m_HostGainCallback.reset();
2991 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
2996 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
2997 m_dataProcessingCallback = std::make_unique<DataProcessingCallbackType>(
2999 [handle = m_handle](
void* ptr,
void* ctx) {
3003 [handle = m_handle] {
3008 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
3013 m_ProcessingCallback = std::make_unique<ProcessingCallbackType>(
3015 [handle = m_handle](
void* ptr,
void* ctx) {
3019 [handle = m_handle] {
3028 m_ProcessingCallback.reset();
3033 m_dataProcessingCallback.reset();
3042 error::ThrowException(ret);
3051 m_handle, list.data(),
static_cast<uint32_t
>(list.size()));
3054 error::ThrowException(ret);
3063 error::ThrowException(ret);
3073 error::ThrowException(ret);
3080 std::vector<peak_afl_weighted_rectangle> list;
3081 std::uint32_t listSize{};
3086 error::ThrowException(ret);
3089 list.resize(listSize);
3094 error::ThrowException(ret);
3106 error::ThrowException(ret);
3117 error::ThrowException(ret);
3127 error::ThrowException(ret);
3138 error::ThrowException(ret);
3149 error::ThrowException(ret);
3160 error::ThrowException(ret);
3166 std::uint8_t hysteresis{};
3170 error::ThrowException(ret);
3178 std::uint8_t hysteresis{};
3182 error::ThrowException(ret);
3192 m_handle, &hysteresis.min, &hysteresis.max, &hysteresis.inc);
3195 error::ThrowException(ret);
3207 error::ThrowException(ret);
3220 error::ThrowException(ret);
3232 error::ThrowException(ret);
3243 error::ThrowException(ret);
3255 error::ThrowException(ret);
3266 error::ThrowException(ret);
3281 error::ThrowException(ret);
3291 error::ThrowException(ret);
3303 error::ThrowException(ret);
3318 error::ThrowException(ret);
3328 error::ThrowException(ret);
3340 error::ThrowException(ret);
3355 error::ThrowException(ret);
3365 error::ThrowException(ret);
3377 error::ThrowException(ret);
3392 error::ThrowException(ret);
3402 error::ThrowException(ret);
3414 error::ThrowException(ret);
3429 error::ThrowException(ret);
3439 error::ThrowException(ret);
3451 error::ThrowException(ret);
3462 error::ThrowException(ret);
3472 error::ThrowException(ret);
3484 error::ThrowException(ret);
High-level interface for automatic camera feature control, providing access to algorithms such as aut...
Definition peak_afl.hpp:984
peak_afl_controllerType Type() const
Get the controller type.
Definition peak_afl.hpp:2766
void SetROIPreset(peak_afl_roi_preset preset)
Set the autofeature region of interest preset for a controller.
Definition peak_afl.hpp:2530
void SetBrightnessAlgorithm(peak_afl_controller_brightness_algorithm algorithm)
Set the autofeature brightness algorithm for a controller.
Definition peak_afl.hpp:2583
bool IsAutoPercentileSupported() const
check if auto percentile is supported for a controller.
Definition peak_afl.hpp:2723
bool IsAutoToleranceSupported() const
check if auto tolerance is supported for a controller.
Definition peak_afl.hpp:2680
peak_afl_double_limit GetGainLimit() const
Get autofeature gain limit for a controller.
Definition peak_afl.hpp:3285
void SetGainLimit(peak_afl_double_limit limit)
Set the gain limit for a controller.
Definition peak_afl.hpp:3272
std::uint8_t GetDefaultHysteresis() const
Get the autofeature hysteresis default.
Definition peak_afl.hpp:3176
std::uint8_t GetHysteresis() const
Get the autofeature hysteresis for a controller.
Definition peak_afl.hpp:3164
void SetGainCombinedLimit(peak_afl_double_limit limit)
Set the combined gain limit for a controller.
Definition peak_afl.hpp:3383
void SetMode(peak_afl_controller_automode mode)
Set the autofeature mode for a controller.
Definition peak_afl.hpp:2551
bool IsROISupported() const
Check if setting a region of interest is supported for a controller.
Definition peak_afl.hpp:2486
void SetGainHostLimit(peak_afl_double_limit limit)
Set the host gain limit for a controller.
Definition peak_afl.hpp:3420
void SetWeightedROIs(const std::vector< peak_afl_weighted_rectangle > &list)
Set the autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3048
void UnRegisterFinishedCallback()
Reset the finished callback for a controller.
Definition peak_afl.hpp:2901
peak_afl_double_limit GetGainDigitalLimit() const
Get autofeature digital gain limit for a controller.
Definition peak_afl.hpp:3359
peak_afl_controller_automode BrightnessComponentGetMode(peak_afl_controller_brightness_component component) const
Get the current autofeature mode for a brightness controller component.
Definition peak_afl.hpp:3236
Range< std::uint32_t > GetSkipFramesRange() const
Get range for frames skipped for a controller.
Definition peak_afl.hpp:2474
bool IsROIPresetSupported() const
Check if ROI preset is supported for a controller.
Definition peak_afl.hpp:2518
void BrightnessComponentSetMode(peak_afl_controller_brightness_component component, peak_afl_controller_automode mode)
Set the autofeature mode for a brightness controller component.
Definition peak_afl.hpp:3226
std::uint8_t GetLastAutoAverage() const
Get the last auto average for a controller.
Definition peak_afl.hpp:2615
peak_afl_controller_limit GetLimit() const
Get the autofeature limit for a controller.
Definition peak_afl.hpp:3121
void SetHysteresis(std::uint8_t hysteresis)
Set the autofeature hysteresis for a controller.
Definition peak_afl.hpp:3155
void SetExposureLimit(peak_afl_double_limit limit)
Set the exposure limit for a controller.
Definition peak_afl.hpp:3457
void SetSkipFrames(std::uint32_t count)
Set number of frames skipped for a controller.
Definition peak_afl.hpp:2453
std::vector< peak_afl_controller_sharpness_algorithm > GetSharpnessAlgorithmList() const
Get the list of supported sharpness algorithms for a controller.
Definition peak_afl.hpp:2865
bool IsModeSupported() const
Check if auto mode is supported for a controller.
Definition peak_afl.hpp:2539
Range< std::uint32_t > GetAutoToleranceRange() const
Get the auto tolerance range for a controller.
Definition peak_afl.hpp:2712
void SetGainAnalogLimit(peak_afl_double_limit limit)
Set the analog gain limit for a controller.
Definition peak_afl.hpp:3309
void SetAutoPercentile(double percentile)
Set the auto percentile for a controller.
Definition peak_afl.hpp:2735
void UnRegisterProcessingCallback()
Reset the data callback for a controller.
Definition peak_afl.hpp:3026
peak_afl_rectangle GetROI() const
Get the autofeature region of interest for a controller.
Definition peak_afl.hpp:2507
peak_afl_double_limit GetExposureLimit() const
Get autofeature exposure limit for a controller.
Definition peak_afl.hpp:3466
void UnRegisterDataProcessingCallback()
Reset the data callback for a controller.
Definition peak_afl.hpp:3031
peak_afl_double_limit GetGainCombinedLimitRange() const
Get autofeature combined gain limit range for a controller.
Definition peak_afl.hpp:3408
std::vector< peak_afl_controller_algorithm > GetAlgorithmList() const
Get the list of supported algorithms for a controller.
Definition peak_afl.hpp:2810
~Controller()
Definition peak_afl.hpp:2432
void RegisterDataProcessingCallback(const callback::DataProcessingCallback &callback)
Set the data callback for a controller.
Definition peak_afl.hpp:2994
bool IsSharpnessAlgorithmSupported() const
check setting a sharpness algorithm is supported by a controller.
Definition peak_afl.hpp:2832
void UnRegisterComponentCallback(peak_afl_controller_brightness_component component)
Reset the component callback for a controller.
Definition peak_afl.hpp:2960
std::tuple< std::uint8_t, std::uint8_t, std::uint8_t > GetLastAutoAverages() const
Get the last auto average for a controller.
Definition peak_afl.hpp:2626
std::uint32_t GetAutoTolerance() const
Get the current auto tolerance for a controller.
Definition peak_afl.hpp:2701
void SetAlgorithm(peak_afl_controller_algorithm algorithm)
Set the used algorithm for a controller.
Definition peak_afl.hpp:2789
peak_afl_double_limit GetGainDigitalLimitRange() const
Get autofeature digital gain limit range for a controller.
Definition peak_afl.hpp:3371
void SetROI(peak_afl_rectangle rect)
Set the autofeature region of interest for a controller.
Definition peak_afl.hpp:2498
peak_afl_double_limit GetGainAnalogLimitRange() const
Get autofeature analog gain limit range for a controller.
Definition peak_afl.hpp:3334
bool IsSkipFramesSupported() const
Check if skip frames is supported for a controller.
Definition peak_afl.hpp:2441
peak_afl_controller_limit GetDefaultLimit() const
Get the autofeature default limit.
Definition peak_afl.hpp:3132
bool IsLimitSupported() const
Check if limit is supported for a controller.
Definition peak_afl.hpp:3100
peak_afl_size GetWeightedROIMinSize() const
Get the autofeature minimum size of weighted region of interest for a controller.
Definition peak_afl.hpp:3067
peak_afl_controller_automode GetMode() const
Get the current autofeature mode for a controller.
Definition peak_afl.hpp:2560
static std::shared_ptr< Controller > Create(peak_afl_controllerType type)
Create a new controller.
Definition peak_afl.hpp:2420
void RegisterFinishedCallback(const callback::FinishedCallback &callback)
Set finished callback for a controller.
Definition peak_afl.hpp:2887
peak_afl_controller_algorithm GetAlgorithm() const
Get the used algorithm for a controller.
Definition peak_afl.hpp:2798
bool IsBrightnessAlgorithmSupported() const
Check if auto brightness algorithm is supported for a controller.
Definition peak_afl.hpp:2571
peak_afl_double_limit GetGainCombinedLimit() const
Get autofeature combined gain limit for a controller.
Definition peak_afl.hpp:3396
bool IsGainLimitSupported() const
Check if auto gain limit is supported for a controller.
Definition peak_afl.hpp:3260
peak_afl_double_limit GetGainLimitRange() const
Get autofeature gain limit range for a controller.
Definition peak_afl.hpp:3297
void SetWeightedROI(const peak_afl_weighted_rectangle &rect)
Set single autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3058
std::uint32_t GetSkipFrames() const
Get number of frames skipped for a controller.
Definition peak_afl.hpp:2462
peak_afl_controller_sharpness_algorithm GetSharpnessAlgorithm() const
Get the used sharpness algorithm for a controller.
Definition peak_afl.hpp:2853
peak_afl_controller_status Status() const
Get the status for a controller.
Definition peak_afl.hpp:2603
void SetGainDigitalLimit(peak_afl_double_limit limit)
Set the digital gain limit for a controller.
Definition peak_afl.hpp:3346
bool IsAlgorithmSupported() const
check if setting an algorithm is supported for a controller.
Definition peak_afl.hpp:2777
Range< double > GetAutoPercentileRange() const
Get the auto percentile range for a controller.
Definition peak_afl.hpp:2755
peak_afl_double_limit GetExposureLimitRange() const
Get autofeature exposure limit range for a controller.
Definition peak_afl.hpp:3478
double GetAutoPercentile() const
Get the auto percentile for a controller.
Definition peak_afl.hpp:2744
peak_afl_controller_brightness_algorithm GetBrightnessAlgorithm() const
Get the current autofeature brightness algorithm for a controller.
Definition peak_afl.hpp:2592
peak_afl_double_limit GetGainAnalogLimit() const
Get autofeature analog gain limit for a controller.
Definition peak_afl.hpp:3322
void SetAutoTarget(uint32_t target)
Set the auto target for a controller.
Definition peak_afl.hpp:2649
peak_afl_double_limit GetGainHostLimit() const
Get autofeature host gain limit for a controller.
Definition peak_afl.hpp:3433
void SetAutoTolerance(std::uint32_t tolerance)
Set the auto tolerance for a controller.
Definition peak_afl.hpp:2692
std::uint32_t GetAutoTarget() const
Get the currently set auto target for a controller.
Definition peak_afl.hpp:2658
Range< std::uint32_t > GetAutoTargetRange() const
Get the auto target range for a controller.
Definition peak_afl.hpp:2669
Range< std::uint8_t > GetHysteresisRange() const
Get autofeature hysteresis range for a controller.
Definition peak_afl.hpp:3188
void SetLimit(peak_afl_controller_limit limit)
Set the autofeature limit for a controller.
Definition peak_afl.hpp:3112
bool IsWeightedROISupported() const
Check if weighted region of interest is supported for a controller.
Definition peak_afl.hpp:3036
bool IsHysteresisSupported() const
Check if hysteresis is supported for a controller.
Definition peak_afl.hpp:3143
void RegisterComponentCallback(peak_afl_controller_brightness_component component, const callback::FinishedCallback &callback)
Set component callback for a controller.
Definition peak_afl.hpp:2906
bool IsBrightnessComponentModeSupported() const
Check if auto mode is supported for a brightness controller component.
Definition peak_afl.hpp:3201
peak_afl_controller_status BrightnessComponentStatus(peak_afl_controller_brightness_component component) const
Get the status for a brightness controller component.
Definition peak_afl.hpp:3248
void SetSharpnessAlgorithm(peak_afl_controller_sharpness_algorithm algorithm)
Set the used sharpness algorithm for a controller.
Definition peak_afl.hpp:2844
void RegisterProcessingCallback(const callback::ProcessingCallback &callback)
Set the data callback for a controller.
Definition peak_afl.hpp:3011
peak_afl_double_limit GetGainHostLimitRange() const
Get autofeature host gain limit range for a controller.
Definition peak_afl.hpp:3445
bool IsAutoTargetSupported() const
check if auto target is supported for a controller.
Definition peak_afl.hpp:2637
std::vector< peak_afl_weighted_rectangle > GetWeightedROIs() const
Get the autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3078
bool IsBrightnessComponentUnitSupported(peak_afl_controller_brightness_component component) const
Check if a specific unit is supported for a brightness controller component.
Definition peak_afl.hpp:3213
Central coordination object for automatic camera feature control.
Definition peak_afl.hpp:663
bool IsControllerSupported(peak_afl_controllerType type) const
Get if the given controller type is supported.
Definition peak_afl.hpp:2407
Manager(const std::shared_ptr< peak::core::NodeMap > &node_map)
Create an automanager instance.
Definition peak_afl.hpp:2192
void RemoveController(const std::shared_ptr< Controller > &controller)
Remove a controller from an automanager.
Definition peak_afl.hpp:2266
std::shared_ptr< Controller > GetController(peak_afl_controllerType type) const
Get the controller for a type.
Definition peak_afl.hpp:2390
void DestroyAllController()
Destroy all controllers for a manager.
Definition peak_afl.hpp:2308
void DestroyController(const std::shared_ptr< Controller > &controller)
Destroy a controller.
Definition peak_afl.hpp:2326
std::shared_ptr< Controller > CreateController(peak_afl_controllerType type)
Create a controller and append it to Manager.
Definition peak_afl.hpp:2291
void SetCCM(std::array< float, 9 > ccm)
Set the Color Correction Matrix (CCM)
Definition peak_afl.hpp:2353
size_t ControllerCount() const
Get the list count of the controller associated with the manager.
Definition peak_afl.hpp:2385
bool Status() const
Get the status of a manager.
Definition peak_afl.hpp:2362
~Manager()
Destructor of an automanager instance.
Definition peak_afl.hpp:2206
void SetGainIPL(const peak::ipl::Gain &gain)
Sets the ipl gain.
Definition peak_afl.hpp:2344
std::vector< std::shared_ptr< Controller > > ControllerList() const
Get the list of the controller associated with the manager.
Definition peak_afl.hpp:2374
void AddController(const std::shared_ptr< Controller > &controller)
Add a controller to an automanager.
Definition peak_afl.hpp:2245
void Process(const peak::ipl::Image &image) const
Process an image.
Definition peak_afl.hpp:2282
The exception thrown for signaling an access error.
Definition peak_afl.hpp:482
The exception thrown when the supplied buffer is too small.
Definition peak_afl.hpp:502
The exception thrown for signaling a busy operation.
Definition peak_afl.hpp:438
static std::string translateCode(peak_afl_status status)
Get a string representation for an error code.
Definition peak_afl.hpp:289
peak_afl_status code() const
Get the return code for the failure.
Definition peak_afl.hpp:275
The exception thrown for signaling an unspecified error.
Definition peak_afl.hpp:340
The exception thrown for passing an invalid parameter to a function.
Definition peak_afl.hpp:391
The exception thrown for signaling that the library was not initialized.
Definition peak_afl.hpp:364
The exception thrown when a functionality is not supported.
Definition peak_afl.hpp:416
Base class for all exceptions thrown by the library.
Definition peak_common_exceptions.hpp:36
Thrown when an unexpected internal error occurs.
Definition peak_common_exceptions.hpp:73
Thrown when a cast to an incompatible type is attempted.
Definition peak_common_exceptions.hpp:84
Thrown when a function receives an invalid parameter.
Definition peak_common_exceptions.hpp:49
Thrown when the library is used before proper initialization.
Definition peak_common_exceptions.hpp:97
Thrown when an unsupported operation or feature is used.
Definition peak_common_exceptions.hpp:149
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoPercentile_GetRange(peak_afl_controller_handle controller, double *min, double *max, double *inc)
Get the auto percentile range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoPercentile_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if auto percentile is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoPercentile_Set(peak_afl_controller_handle controller, double percentile)
Set the auto percentile for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoPercentile_Get(peak_afl_controller_handle controller, double *percentile)
Get the auto percentile for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTarget_GetRange(peak_afl_controller_handle controller, uint32_t *min, uint32_t *max, uint32_t *inc)
Get the auto target range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTarget_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if auto target is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTarget_Get(peak_afl_controller_handle controller, uint32_t *target)
Get the currently set auto target for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTarget_Set(peak_afl_controller_handle controller, uint32_t target)
Set the auto target for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTolerance_Set(peak_afl_controller_handle controller, uint32_t tolerance)
Set the auto tolerance for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTolerance_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if auto tolerance is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTolerance_GetRange(peak_afl_controller_handle controller, uint32_t *min, uint32_t *max, uint32_t *inc)
Get the auto tolerance range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_AutoTolerance_Get(peak_afl_controller_handle controller, uint32_t *tolerance)
Get the current auto tolerance for a controller.
peak_afl_controllerType
Auto feature controller types.
Definition peak_afl.h:489
PEAK_AFL_API_STATUS peak_afl_AutoController_Status(peak_afl_controller_handle controller, peak_afl_controller_status *status)
Get the status for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Create(peak_afl_controller_handle *controller, peak_afl_controllerType controllerType)
Create a new auto feature controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Type_Get(peak_afl_controller_handle controller, peak_afl_controllerType *type)
Get the controller type.
PEAK_AFL_API_STATUS peak_afl_AutoController_Destroy(peak_afl_controller_handle controller)
Destroy a standalone controller.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_Create(peak_afl_manager_handle *handle, PEAK_NODE_MAP_HANDLE nodeMapHandle)
Create an automanager instance.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_CreateController(peak_afl_manager_handle handle, peak_afl_controller_handle *controller, peak_afl_controllerType controllerType)
Create a controller and append it to Manager.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_AddController(peak_afl_manager_handle handle, peak_afl_controller_handle controller)
Add a controller to an auto manager instance.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_SetCCM(peak_afl_manager_handle handle, float *ccm, size_t ccm_size)
Set the Color Correction Matrix (CCM) for image processing.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_Process(peak_afl_manager_handle handle, PEAK_IPL_IMAGE_HANDLE imageHandle)
Process an image through the auto feature pipeline.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_DestroyController(peak_afl_manager_handle handle, peak_afl_controller_handle controller)
Destroy a controller from a manager.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_Status(peak_afl_manager_handle handle, peak_afl_BOOL8 *running)
Get the processing status of an auto feature manager.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_Destroy(peak_afl_manager_handle handle)
Destroy an automanager instance.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_DestroyAllController(peak_afl_manager_handle handle)
Destroy all controllers associated with a manager.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_Controller_IsSupported(peak_afl_manager_handle handle, peak_afl_controllerType controllerType, peak_afl_BOOL8 *supported)
Check if a controller type is supported by the manager.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_SetGainIPL(peak_afl_manager_handle handle, PEAK_IPL_GAIN_HANDLE gainHandle)
Set the IPL Gain for image processing.
PEAK_AFL_API_STATUS peak_afl_AutoFeatureManager_RemoveController(peak_afl_manager_handle handle, peak_afl_controller_handle controller)
Remove a controller from an auto feature manager instance.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessAlgorithm_Set(peak_afl_controller_handle controller, peak_afl_controller_brightness_algorithm algorithm)
Set the brightness analysis algorithm for a controller.
peak_afl_controller_brightness_algorithm
Brightness calculation algorithms.
Definition peak_afl.h:772
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessAlgorithm_Get(peak_afl_controller_handle controller, peak_afl_controller_brightness_algorithm *algorithm)
Get the current brightness analysis algorithm for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessAlgorithm_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if brightness algorithm configuration is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Callback_Set(peak_afl_controller_handle controller, peak_afl_controller_brightness_component component, peak_afl_callback_type type, void *funcPtr, void *context)
Set a callback function for a specific brightness component.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Status(peak_afl_controller_handle controller, peak_afl_controller_brightness_component component, peak_afl_controller_status *status)
Get the operational status for a specific brightness component.
peak_afl_controller_brightness_component
Brightness control components.
Definition peak_afl.h:877
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Unit_IsSupported(peak_afl_controller_handle controller, peak_afl_controller_brightness_component unit, peak_afl_BOOL8 *supported)
Check if a specific brightness component unit is supported for a controller.
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_ANALOG_GAIN
Analog gain control.
Definition peak_afl.h:919
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_GAIN
Generic gain control.
Definition peak_afl.h:907
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_COMBINED_GAIN
Combined analog and digital gain.
Definition peak_afl.h:943
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_HOST_GAIN
Host-based software gain.
Definition peak_afl.h:955
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_DIGITAL_GAIN
Digital gain control.
Definition peak_afl.h:931
@ PEAK_AFL_CONTROLLER_BRIGHTNESS_COMPONENT_EXPOSURE
Camera exposure time control.
Definition peak_afl.h:896
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Mode_Get(peak_afl_controller_handle controller, peak_afl_controller_brightness_component component, peak_afl_controller_automode *mode)
Get the current automatic mode for a specific brightness component.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Mode_Set(peak_afl_controller_handle controller, peak_afl_controller_brightness_component component, peak_afl_controller_automode mode)
Set the automatic mode for a specific brightness component.
PEAK_AFL_API_STATUS peak_afl_AutoController_BrightnessComponent_Mode_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if brightness component mode configuration is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GetLastAutoAverage(peak_afl_controller_handle controller, uint8_t *average)
Get the last auto average for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Callback_Set(peak_afl_controller_handle controller, peak_afl_callback_type type, void *funcPtr, void *context)
Set a callback for a controller.
@ PEAK_AFL_CONTROLLER_CALLBACK_FINISHED
Controller operation finished callback.
Definition peak_afl.h:1086
@ PEAK_AFL_CONTROLLER_CALLBACK_PROCESSING_DATA
Legacy processing data callback.
Definition peak_afl.h:1100
@ PEAK_AFL_CONTROLLER_CALLBACK_PROCESSING
Enhanced processing callback.
Definition peak_afl.h:1111
PEAK_AFL_API_STATUS peak_afl_AutoController_Mode_Get(peak_afl_controller_handle controller, peak_afl_controller_automode *mode)
Get the current automatic processing mode for a controller.
peak_afl_controller_automode
Auto feature controller operation modes.
Definition peak_afl.h:543
PEAK_AFL_API_STATUS peak_afl_AutoController_Mode_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if automatic mode configuration is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Mode_Set(peak_afl_controller_handle controller, peak_afl_controller_automode mode)
Set the automatic processing mode for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_ExposureLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set exposure time limits for automatic exposure control.
PEAK_AFL_API_STATUS peak_afl_AutoController_ExposureLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get the current exposure time limits for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_ExposureLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature exposure limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Algorithm_Get(peak_afl_controller_handle controller, peak_afl_controller_algorithm *algorithm)
Get the used algorithm for a controller.
peak_afl_controller_algorithm
Focus search algorithms.
Definition peak_afl.h:695
PEAK_AFL_API_STATUS peak_afl_AutoController_Algorithm_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if setting an algorithm is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Algorithm_GetList(peak_afl_controller_handle controller, peak_afl_controller_algorithm *typeList, uint32_t *listSize)
Get the list of supported algorithms for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Algorithm_Set(peak_afl_controller_handle controller, peak_afl_controller_algorithm algorithm)
Set the used algorithm for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Limit_Default(peak_afl_controller_handle controller, peak_afl_controller_limit *limit)
Get the autofeature default limit.
PEAK_AFL_API_STATUS peak_afl_AutoController_Limit_Get(peak_afl_controller_handle controller, peak_afl_controller_limit *limit)
Get the autofeature limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Limit_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if limit is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Limit_Set(peak_afl_controller_handle controller, peak_afl_controller_limit limit)
Set the autofeature limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainAnalogLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature analog gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainAnalogLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature analog gain limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainAnalogLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set autofeature analog gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainCombinedLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set autofeature combined gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainCombinedLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature combined gain limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainCombinedLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature combined gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainDigitalLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature digital gain limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainDigitalLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature digital gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainDigitalLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set autofeature digital gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainHostLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature host gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainHostLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set autofeature host gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainHostLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature host gain limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainLimit_Set(peak_afl_controller_handle controller, peak_afl_double_limit limit)
Set autofeature gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainLimit_GetRange(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature gain limit range for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainLimit_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if gain limit is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GainLimit_Get(peak_afl_controller_handle controller, peak_afl_double_limit *limit)
Get autofeature gain limit for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Hysteresis_Default(peak_afl_controller_handle controller, uint8_t *hysteresis)
Get the autofeature hysteresis default.
PEAK_AFL_API_STATUS peak_afl_AutoController_Hysteresis_Set(peak_afl_controller_handle controller, uint8_t hysteresis)
Set the autofeature hysteresis for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Hysteresis_Get(peak_afl_controller_handle controller, uint8_t *hysteresis)
Get the autofeature hysteresis for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Hysteresis_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if hysteresis is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Hysteresis_GetRange(peak_afl_controller_handle controller, uint8_t *min, uint8_t *max, uint8_t *inc)
Get autofeature hysteresis range for a controller.
PEAK_AFL_API_STATUS peak_afl_Init(void)
Init the peak_afl auto feature library.
PEAK_AFL_API_STATUS peak_afl_Exit(void)
Exit the peak_afl auto feature library.
PEAK_AFL_API_STATUS peak_afl_GetVersion(uint32_t *majorVersion, uint32_t *minorVersion, uint32_t *subminorVersion, uint32_t *patchVersion)
Query the library version.
PEAK_AFL_API_STATUS peak_afl_GetLastError(peak_afl_status *lastErrorCode, char *lastErrorMessage, size_t *lastErrorMessageSize)
Get the last error message.
peak_afl_roi_preset
Predefined ROI preset configurations.
Definition peak_afl.h:1410
PEAK_AFL_API_STATUS peak_afl_AutoController_ROI_Preset_Set(peak_afl_controller_handle controller, peak_afl_roi_preset roiPreset)
Set a predefined region of interest preset for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_ROI_Preset_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if ROI preset feature is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_ROI_Get(peak_afl_controller_handle controller, peak_afl_rectangle *roi)
Get the current region of interest for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_ROI_Set(peak_afl_controller_handle controller, peak_afl_rectangle roi)
Set the region of interest for automatic feature processing.
PEAK_AFL_API_STATUS peak_afl_AutoController_ROI_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if region of interest (ROI) feature is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SharpnessAlgorithm_GetList(peak_afl_controller_handle controller, peak_afl_controller_sharpness_algorithm *typeList, uint32_t *listSize)
Get the list of supported sharpness algorithms for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SharpnessAlgorithm_Set(peak_afl_controller_handle controller, peak_afl_controller_sharpness_algorithm algorithm)
Set the used sharpness algorithm for a controller.
peak_afl_controller_sharpness_algorithm
Focus sharpness calculation algorithms.
Definition peak_afl.h:808
PEAK_AFL_API_STATUS peak_afl_AutoController_SharpnessAlgorithm_Get(peak_afl_controller_handle controller, peak_afl_controller_sharpness_algorithm *algorithm)
Get the used sharpness algorithm for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SharpnessAlgorithm_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if setting a sharpness algorithm is supported by a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SkipFrames_GetRange(peak_afl_controller_handle controller, uint32_t *min, uint32_t *max, uint32_t *inc)
Get the valid range for skip frames count.
PEAK_AFL_API_STATUS peak_afl_AutoController_SkipFrames_Set(peak_afl_controller_handle controller, uint32_t count)
Set number of frames to skip for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SkipFrames_Get(peak_afl_controller_handle controller, uint32_t *count)
Get the current skip frames count for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_SkipFrames_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if skip frames feature is supported for a controller.
peak_afl_status
Auto feature library status codes.
Definition peak_afl.h:383
peak_afl_controller_status
Controller operational status.
Definition peak_afl.h:589
@ PEAK_AFL_STATUS_SUCCESS
Operation completed successfully.
Definition peak_afl.h:389
@ PEAK_AFL_STATUS_INVALID_IMAGE_FORMAT
Invalid or unsupported image format.
Definition peak_afl.h:457
@ PEAK_AFL_STATUS_VALUE_ADJUSTED
Parameter value was adjusted.
Definition peak_afl.h:475
@ PEAK_AFL_STATUS_ACCESS_DENIED
Access denied to resource.
Definition peak_afl.h:427
@ PEAK_AFL_STATUS_BUSY
Resource is busy.
Definition peak_afl.h:437
@ PEAK_AFL_STATUS_NOT_SUPPORTED
Feature or operation not supported.
Definition peak_afl.h:465
@ PEAK_AFL_STATUS_INVALID_PARAMETER
Invalid parameter provided.
Definition peak_afl.h:419
@ PEAK_AFL_STATUS_BUFFER_TOO_SMALL
Provided buffer is too small.
Definition peak_afl.h:447
@ PEAK_AFL_STATUS_NOT_INITIALIZED
Library not initialized.
Definition peak_afl.h:409
@ PEAK_AFL_STATUS_ERROR
General error occurred.
Definition peak_afl.h:399
#define PEAK_AFL_FALSE
Boolean false value.
Definition peak_afl.h:1646
uint8_t peak_afl_BOOL8
Custom 8-bit boolean type.
Definition peak_afl.h:1628
PEAK_AFL_API_STATUS peak_afl_AutoController_Weighted_ROI_Set(peak_afl_controller_handle controller, const peak_afl_weighted_rectangle *weightedRoiList, uint32_t listSize)
Set the autofeature weighted region of interest for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Weighted_ROI_Get(peak_afl_controller_handle controller, peak_afl_weighted_rectangle *weightedRoiList, uint32_t *listSize)
Get the autofeature weighted region of interest for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Weighted_ROI_Min_Size(peak_afl_controller_handle controller, peak_afl_size *size)
Get the autofeature minimum size for the weighted region of interest for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_Weighted_ROI_IsSupported(peak_afl_controller_handle controller, peak_afl_BOOL8 *supported)
Check if weighted region of interest is supported for a controller.
PEAK_AFL_API_STATUS peak_afl_AutoController_GetLastAutoAverages(peak_afl_controller_handle controller, uint8_t *averageRed, uint8_t *averageGreen, uint8_t *averageBlue)
Get the last auto average for a controller.
std::tuple< Manager, std::vector< std::shared_ptr< Controller > > > CreateManager(const std::shared_ptr< peak::core::NodeMap > &node_map, ControllerTypes... types)
Convenience function to create a manager with the supplied controllers.
Definition peak_afl.hpp:865
std::string GetLastError()
Get the last error message.
Definition peak_afl.hpp:2168
void Exit()
Exit the peak_afl auto feature library.
Definition peak_afl.hpp:2146
void Init()
Init the peak_afl auto feature library.
Definition peak_afl.hpp:2136
Version_t Version()
Query the library version.
Definition peak_afl.hpp:2155
C API interface for automatic camera feature control.
void * peak_afl_controller_handle
Opaque handle for auto feature controllers.
Definition peak_afl.h:357
void * peak_afl_manager_handle
Opaque handle for auto feature managers.
Definition peak_afl.h:369
Generic arithmetic range with inclusive endpoints and a defined step size.
Definition peak_afl.hpp:890
Version information for ids_peak_afl.
Definition peak_afl.hpp:131
uint32_t Subminor() const
Returns the subminor part of the version which is the third part of the version scheme separated by d...
Definition peak_afl.hpp:170
std::string ToString() const
Patch.
Definition peak_afl.hpp:141
uint32_t Major() const
Returns the major part of the version which is the first part of the version scheme separated by dots...
Definition peak_afl.hpp:151
uint32_t Minor() const
Returns the minor part of the version which is the second part of the version scheme separated by dot...
Definition peak_afl.hpp:161
std::uint32_t minor
Major.
Definition peak_afl.hpp:133
std::uint32_t subminor
Minor.
Definition peak_afl.hpp:134
uint32_t Patch() const
Returns the patch part of the version which is the fourth part of the version scheme separated by dot...
Definition peak_afl.hpp:180
std::uint32_t patch
Subminor.
Definition peak_afl.hpp:135
Controller parameter limit range.
Definition peak_afl.h:1569
Floating-point parameter limit range.
Definition peak_afl.h:1599
Generic process data structure.
Definition peak_afl.h:1129
2D rectangle structure
Definition peak_afl.h:1497
2D size structure
Definition peak_afl.h:1435
Weighted region of interest for focus control.
Definition peak_afl.h:1539