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);
799 inline void SetCCM(std::array<float, 9> ccm);
812 PEAK_AFL_NO_DISCARD
inline bool Status()
const;
821 PEAK_AFL_NO_DISCARD
inline std::vector<std::shared_ptr<Controller>>
ControllerList()
const;
857 std::vector<std::shared_ptr<Controller>> m_controllerList;
858 mutable std::mutex m_mutex{};
871template <
typename... ControllerTypes>
873 const std::shared_ptr<peak::core::NodeMap>& node_map, ControllerTypes... types)
875 constexpr int size =
sizeof...(types);
876 constexpr std::array<peak_afl_controllerType, size> controller_types{ types... };
877 std::vector<std::shared_ptr<Controller>> controller{};
879 controller.reserve(size);
881 std::for_each(controller_types.cbegin(), controller_types.cend(),
882 [&manager, &controller](
peak_afl_controllerType type) { controller.emplace_back(manager.CreateController(type)); });
884 return { std::move(manager), std::move(controller) };
895template <typename T, typename std::enable_if_t<std::is_arithmetic<T>::value,
int> = 0>
905using FinishedCallback = std::function<void(
void)>;
906using DataProcessingCallback = std::function<void(
int,
int)>;
908using ComponentCallback = std::function<void(
void)>;
910using RegisterFunction = std::function<PEAK_AFL_API_STATUS(
void*,
void*)>;
911using UnRegisterFunction = std::function<void()>;
990class Controller :
public std::enable_shared_from_this<Controller>
992 friend class Manager;
999 template <
typename R,
typename... Args>
1000 Callback(
const std::shared_ptr<peak::afl::Controller>& controller, callback::RegisterFunction register_function,
1001 callback::UnRegisterFunction unregister_function, std::function<R(Args...)> callback)
1002 : m_unregister_function(std::move(unregister_function))
1003 , m_callback(std::move(callback))
1005 const auto ret = register_function(
reinterpret_cast<void*
>(&Callback::Func<Args...>),
this);
1008 error::ThrowException(ret);
1010 m_controller = controller;
1015 if (
auto controller = m_controller.lock())
1017 m_unregister_function();
1022 template <
typename... Args>
1023 static void Func(Args... args,
void* ptr)
1025 static_cast<Callback*
>(ptr)->m_callback(args...);
1029 std::weak_ptr<peak::afl::Controller> m_controller{};
1030 callback::UnRegisterFunction m_unregister_function{};
1045 : m_handle(handle) {};
1053 Controller(
const Controller&) =
delete;
1054 Controller(Controller&&) =
delete;
1055 Controller& operator=(
const Controller&) =
delete;
1056 Controller& operator=(Controller&&) =
delete;
1106 PEAK_AFL_NO_DISCARD
inline std::uint32_t
GetSkipFrames()
const;
1294 PEAK_AFL_NO_DISCARD
inline std::tuple<std::uint8_t, std::uint8_t, std::uint8_t>
GetLastAutoAverages()
const;
1332 PEAK_AFL_NO_DISCARD
inline std::uint32_t
GetAutoTarget()
const;
1512 PEAK_AFL_NO_DISCARD
inline std::vector<peak_afl_controller_algorithm>
GetAlgorithmList()
const;
1667 inline void SetWeightedROIs(
const std::vector<peak_afl_weighted_rectangle>& list);
1702 PEAK_AFL_NO_DISCARD
inline std::vector<peak_afl_weighted_rectangle>
GetWeightedROIs()
const;
1787 PEAK_AFL_NO_DISCARD
inline std::uint8_t
GetHysteresis()
const;
2122 using FinishedCallbackType = Callback<callback::FinishedCallback>;
2123 using DataProcessingCallbackType = Callback<callback::DataProcessingCallback>;
2124 using ProcessingCallbackType = Callback<callback::ProcessingCallback>;
2125 using ComponentCallbackType = Callback<callback::ComponentCallback>;
2128 std::unique_ptr<FinishedCallbackType> m_finishedCallback{};
2129 std::unique_ptr<DataProcessingCallbackType> m_dataProcessingCallback{};
2130 std::unique_ptr<ProcessingCallbackType> m_ProcessingCallback{};
2131 std::unique_ptr<ComponentCallbackType> m_finishedExposureCallback{};
2133 std::unique_ptr<ComponentCallbackType> m_finishedGainCallback{};
2135 std::unique_ptr<ComponentCallbackType> m_AnalogGainCallback{};
2136 std::unique_ptr<ComponentCallbackType> m_DigitalGainCallback{};
2137 std::unique_ptr<ComponentCallbackType> m_CombinedGainCallback{};
2138 std::unique_ptr<ComponentCallbackType> m_HostGainCallback{};
2149 error::ThrowException(ret,
false);
2158 error::ThrowException(ret,
false);
2169 error::ThrowException(ret,
false);
2177 std::size_t lastErrorMessageSize;
2183 return "Cannot get last error!";
2186 std::vector<char> text;
2187 text.resize(lastErrorMessageSize);
2192 return "Cannot get last error!";
2195 return { text.begin(), text.end() };
2201 if (node_map ==
nullptr)
2209 error::ThrowException(ret);
2215 if (m_handle !=
nullptr)
2220 std::lock_guard<std::mutex> lck(m_mutex);
2221 for (
auto& c : m_controllerList)
2223 c->m_handle =
nullptr;
2234 m_handle = other.m_handle;
2235 other.m_handle =
nullptr;
2237 std::lock_guard<std::mutex> lck(other.m_mutex);
2238 m_controllerList = std::move(other.m_controllerList);
2241inline Manager& Manager::operator=(Manager&& other)
noexcept
2243 m_handle = other.m_handle;
2244 other.m_handle =
nullptr;
2246 std::lock_guard<std::mutex> lck(other.m_mutex);
2247 m_controllerList = std::move(other.m_controllerList);
2254 std::lock_guard<std::mutex> lck(m_mutex);
2256 auto cnt = std::any_of(
2257 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2267 error::ThrowException(ret);
2270 m_controllerList.emplace_back(controller);
2275 std::lock_guard<std::mutex> lck(m_mutex);
2280 error::ThrowException(ret);
2283 auto it = std::remove_if(
2284 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2286 m_controllerList.erase(it, m_controllerList.end());
2294 error::ThrowException(ret);
2300 std::lock_guard<std::mutex> lck(m_mutex);
2306 error::ThrowException(ret);
2309 auto shared = std::shared_ptr<Controller>(
new Controller(handle));
2310 m_controllerList.emplace_back(shared);
2317 std::lock_guard<std::mutex> lck(m_mutex);
2322 error::ThrowException(ret);
2325 for (
auto& c : m_controllerList)
2327 c->m_handle =
nullptr;
2330 m_controllerList.clear();
2335 std::lock_guard<std::mutex> lck(m_mutex);
2340 error::ThrowException(ret);
2343 auto it = std::remove_if(
2344 m_controllerList.begin(), m_controllerList.end(), [controller](
const std::shared_ptr<Controller>& c) { return c == controller; });
2346 m_controllerList.erase(it, m_controllerList.end());
2348 controller->m_handle =
nullptr;
2356 error::ThrowException(ret);
2365 error::ThrowException(ret);
2371 std::uint8_t status;
2375 error::ThrowException(ret);
2383 std::lock_guard<std::mutex> lck(m_mutex);
2385 std::vector<std::shared_ptr<Controller>> controller{};
2387 std::copy(m_controllerList.begin(), m_controllerList.end(), std::back_inserter(controller));
2394 return m_controllerList.size();
2399 std::lock_guard<std::mutex> lck(m_mutex);
2401 auto it = std::find_if(m_controllerList.cbegin(), m_controllerList.cend(),
2402 [=](
const std::shared_ptr<Controller>& controller) { return type == controller->Type(); });
2404 if (it != m_controllerList.cend())
2420 error::ThrowException(ret);
2433 error::ThrowException(ret);
2436 return std::shared_ptr<Controller>(
new Controller(handle));
2441 if (m_handle !=
nullptr)
2454 error::ThrowException(ret);
2465 error::ThrowException(ret);
2471 std::uint32_t count{};
2475 error::ThrowException(ret);
2487 error::ThrowException(ret);
2499 error::ThrowException(ret);
2510 error::ThrowException(ret);
2520 error::ThrowException(ret);
2531 error::ThrowException(ret);
2542 error::ThrowException(ret);
2552 error::ThrowException(ret);
2563 error::ThrowException(ret);
2573 error::ThrowException(ret);
2584 error::ThrowException(ret);
2595 error::ThrowException(ret);
2605 error::ThrowException(ret);
2616 error::ThrowException(ret);
2624 std::uint8_t average{};
2628 error::ThrowException(ret);
2635 std::uint8_t averageRed{}, averageGreen{}, averageBlue{};
2639 error::ThrowException(ret);
2641 return { averageRed, averageGreen, averageBlue };
2650 error::ThrowException(ret);
2661 error::ThrowException(ret);
2667 std::uint32_t target{};
2671 error::ThrowException(ret);
2682 error::ThrowException(ret);
2693 error::ThrowException(ret);
2704 error::ThrowException(ret);
2710 std::uint32_t tolerance;
2714 error::ThrowException(ret);
2725 error::ThrowException(ret);
2736 error::ThrowException(ret);
2747 error::ThrowException(ret);
2757 error::ThrowException(ret);
2768 error::ThrowException(ret);
2779 error::ThrowException(ret);
2790 error::ThrowException(ret);
2801 error::ThrowException(ret);
2811 error::ThrowException(ret);
2819 std::vector<peak_afl_controller_algorithm> algList{};
2820 std::uint32_t listSize{};
2825 error::ThrowException(ret);
2828 algList.resize(listSize);
2833 error::ThrowException(ret);
2845 error::ThrowException(ret);
2856 error::ThrowException(ret);
2866 error::ThrowException(ret);
2874 std::vector<peak_afl_controller_sharpness_algorithm> algList{};
2875 std::uint32_t listSize{};
2880 error::ThrowException(ret);
2883 algList.resize(listSize);
2888 error::ThrowException(ret);
2896 m_finishedCallback = std::make_unique<FinishedCallbackType>(
2898 [handle = m_handle](
void* ptr,
void* ctx) {
2901 [handle = m_handle] {
2910 m_finishedCallback.reset();
2922 return std::make_unique<ComponentCallbackType>(
2924 [handle = m_handle, component](
void* ptr,
void* ctx) {
2928 [handle = m_handle, component] {
2935 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
2938 m_finishedExposureCallback = registerCallback(component);
2942 m_finishedGainCallback = registerCallback(component);
2946 m_AnalogGainCallback = registerCallback(component);
2950 m_DigitalGainCallback = registerCallback(component);
2954 m_CombinedGainCallback = registerCallback(component);
2958 m_HostGainCallback = registerCallback(component);
2964 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
2969 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
2972 m_finishedExposureCallback.reset();
2976 m_finishedGainCallback.reset();
2980 m_AnalogGainCallback.reset();
2984 m_DigitalGainCallback.reset();
2988 m_CombinedGainCallback.reset();
2992 m_HostGainCallback.reset();
2998 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
3003 PEAK_AFL_BEGIN_DISABLE_DEPRECATED_WARNINGS
3004 m_dataProcessingCallback = std::make_unique<DataProcessingCallbackType>(
3006 [handle = m_handle](
void* ptr,
void* ctx) {
3010 [handle = m_handle] {
3015 PEAK_AFL_END_DISABLE_DEPRECATED_WARNINGS
3020 m_ProcessingCallback = std::make_unique<ProcessingCallbackType>(
3022 [handle = m_handle](
void* ptr,
void* ctx) {
3026 [handle = m_handle] {
3035 m_ProcessingCallback.reset();
3040 m_dataProcessingCallback.reset();
3049 error::ThrowException(ret);
3058 m_handle, list.data(),
static_cast<uint32_t
>(list.size()));
3061 error::ThrowException(ret);
3070 error::ThrowException(ret);
3080 error::ThrowException(ret);
3087 std::vector<peak_afl_weighted_rectangle> list;
3088 std::uint32_t listSize{};
3093 error::ThrowException(ret);
3096 list.resize(listSize);
3101 error::ThrowException(ret);
3113 error::ThrowException(ret);
3124 error::ThrowException(ret);
3134 error::ThrowException(ret);
3145 error::ThrowException(ret);
3156 error::ThrowException(ret);
3167 error::ThrowException(ret);
3173 std::uint8_t hysteresis{};
3177 error::ThrowException(ret);
3185 std::uint8_t hysteresis{};
3189 error::ThrowException(ret);
3199 m_handle, &hysteresis.min, &hysteresis.max, &hysteresis.inc);
3202 error::ThrowException(ret);
3214 error::ThrowException(ret);
3227 error::ThrowException(ret);
3239 error::ThrowException(ret);
3250 error::ThrowException(ret);
3262 error::ThrowException(ret);
3273 error::ThrowException(ret);
3288 error::ThrowException(ret);
3298 error::ThrowException(ret);
3310 error::ThrowException(ret);
3325 error::ThrowException(ret);
3335 error::ThrowException(ret);
3347 error::ThrowException(ret);
3362 error::ThrowException(ret);
3372 error::ThrowException(ret);
3384 error::ThrowException(ret);
3399 error::ThrowException(ret);
3409 error::ThrowException(ret);
3421 error::ThrowException(ret);
3436 error::ThrowException(ret);
3446 error::ThrowException(ret);
3458 error::ThrowException(ret);
3469 error::ThrowException(ret);
3479 error::ThrowException(ret);
3491 error::ThrowException(ret);
High-level interface for automatic camera feature control, providing access to algorithms such as aut...
Definition peak_afl.hpp:991
peak_afl_controllerType Type() const
Get the controller type.
Definition peak_afl.hpp:2773
void SetROIPreset(peak_afl_roi_preset preset)
Set the autofeature region of interest preset for a controller.
Definition peak_afl.hpp:2537
void SetBrightnessAlgorithm(peak_afl_controller_brightness_algorithm algorithm)
Set the autofeature brightness algorithm for a controller.
Definition peak_afl.hpp:2590
bool IsAutoPercentileSupported() const
check if auto percentile is supported for a controller.
Definition peak_afl.hpp:2730
bool IsAutoToleranceSupported() const
check if auto tolerance is supported for a controller.
Definition peak_afl.hpp:2687
peak_afl_double_limit GetGainLimit() const
Get autofeature gain limit for a controller.
Definition peak_afl.hpp:3292
void SetGainLimit(peak_afl_double_limit limit)
Set the gain limit for a controller.
Definition peak_afl.hpp:3279
std::uint8_t GetDefaultHysteresis() const
Get the autofeature hysteresis default.
Definition peak_afl.hpp:3183
std::uint8_t GetHysteresis() const
Get the autofeature hysteresis for a controller.
Definition peak_afl.hpp:3171
void SetGainCombinedLimit(peak_afl_double_limit limit)
Set the combined gain limit for a controller.
Definition peak_afl.hpp:3390
void SetMode(peak_afl_controller_automode mode)
Set the autofeature mode for a controller.
Definition peak_afl.hpp:2558
bool IsROISupported() const
Check if setting a region of interest is supported for a controller.
Definition peak_afl.hpp:2493
void SetGainHostLimit(peak_afl_double_limit limit)
Set the host gain limit for a controller.
Definition peak_afl.hpp:3427
void SetWeightedROIs(const std::vector< peak_afl_weighted_rectangle > &list)
Set the autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3055
void UnRegisterFinishedCallback()
Reset the finished callback for a controller.
Definition peak_afl.hpp:2908
peak_afl_double_limit GetGainDigitalLimit() const
Get autofeature digital gain limit for a controller.
Definition peak_afl.hpp:3366
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:3243
Range< std::uint32_t > GetSkipFramesRange() const
Get range for frames skipped for a controller.
Definition peak_afl.hpp:2481
bool IsROIPresetSupported() const
Check if ROI preset is supported for a controller.
Definition peak_afl.hpp:2525
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:3233
std::uint8_t GetLastAutoAverage() const
Get the last auto average for a controller.
Definition peak_afl.hpp:2622
peak_afl_controller_limit GetLimit() const
Get the autofeature limit for a controller.
Definition peak_afl.hpp:3128
void SetHysteresis(std::uint8_t hysteresis)
Set the autofeature hysteresis for a controller.
Definition peak_afl.hpp:3162
void SetExposureLimit(peak_afl_double_limit limit)
Set the exposure limit for a controller.
Definition peak_afl.hpp:3464
void SetSkipFrames(std::uint32_t count)
Set number of frames skipped for a controller.
Definition peak_afl.hpp:2460
std::vector< peak_afl_controller_sharpness_algorithm > GetSharpnessAlgorithmList() const
Get the list of supported sharpness algorithms for a controller.
Definition peak_afl.hpp:2872
bool IsModeSupported() const
Check if auto mode is supported for a controller.
Definition peak_afl.hpp:2546
Range< std::uint32_t > GetAutoToleranceRange() const
Get the auto tolerance range for a controller.
Definition peak_afl.hpp:2719
void SetGainAnalogLimit(peak_afl_double_limit limit)
Set the analog gain limit for a controller.
Definition peak_afl.hpp:3316
void SetAutoPercentile(double percentile)
Set the auto percentile for a controller.
Definition peak_afl.hpp:2742
void UnRegisterProcessingCallback()
Reset the data callback for a controller.
Definition peak_afl.hpp:3033
peak_afl_rectangle GetROI() const
Get the autofeature region of interest for a controller.
Definition peak_afl.hpp:2514
peak_afl_double_limit GetExposureLimit() const
Get autofeature exposure limit for a controller.
Definition peak_afl.hpp:3473
void UnRegisterDataProcessingCallback()
Reset the data callback for a controller.
Definition peak_afl.hpp:3038
peak_afl_double_limit GetGainCombinedLimitRange() const
Get autofeature combined gain limit range for a controller.
Definition peak_afl.hpp:3415
std::vector< peak_afl_controller_algorithm > GetAlgorithmList() const
Get the list of supported algorithms for a controller.
Definition peak_afl.hpp:2817
~Controller()
Definition peak_afl.hpp:2439
void RegisterDataProcessingCallback(const callback::DataProcessingCallback &callback)
Set the data callback for a controller.
Definition peak_afl.hpp:3001
bool IsSharpnessAlgorithmSupported() const
check setting a sharpness algorithm is supported by a controller.
Definition peak_afl.hpp:2839
void UnRegisterComponentCallback(peak_afl_controller_brightness_component component)
Reset the component callback for a controller.
Definition peak_afl.hpp:2967
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:2633
std::uint32_t GetAutoTolerance() const
Get the current auto tolerance for a controller.
Definition peak_afl.hpp:2708
void SetAlgorithm(peak_afl_controller_algorithm algorithm)
Set the used algorithm for a controller.
Definition peak_afl.hpp:2796
peak_afl_double_limit GetGainDigitalLimitRange() const
Get autofeature digital gain limit range for a controller.
Definition peak_afl.hpp:3378
void SetROI(peak_afl_rectangle rect)
Set the autofeature region of interest for a controller.
Definition peak_afl.hpp:2505
peak_afl_double_limit GetGainAnalogLimitRange() const
Get autofeature analog gain limit range for a controller.
Definition peak_afl.hpp:3341
bool IsSkipFramesSupported() const
Check if skip frames is supported for a controller.
Definition peak_afl.hpp:2448
peak_afl_controller_limit GetDefaultLimit() const
Get the autofeature default limit.
Definition peak_afl.hpp:3139
bool IsLimitSupported() const
Check if limit is supported for a controller.
Definition peak_afl.hpp:3107
peak_afl_size GetWeightedROIMinSize() const
Get the autofeature minimum size of weighted region of interest for a controller.
Definition peak_afl.hpp:3074
peak_afl_controller_automode GetMode() const
Get the current autofeature mode for a controller.
Definition peak_afl.hpp:2567
static std::shared_ptr< Controller > Create(peak_afl_controllerType type)
Create a new controller.
Definition peak_afl.hpp:2427
void RegisterFinishedCallback(const callback::FinishedCallback &callback)
Set finished callback for a controller.
Definition peak_afl.hpp:2894
peak_afl_controller_algorithm GetAlgorithm() const
Get the used algorithm for a controller.
Definition peak_afl.hpp:2805
bool IsBrightnessAlgorithmSupported() const
Check if auto brightness algorithm is supported for a controller.
Definition peak_afl.hpp:2578
peak_afl_double_limit GetGainCombinedLimit() const
Get autofeature combined gain limit for a controller.
Definition peak_afl.hpp:3403
bool IsGainLimitSupported() const
Check if auto gain limit is supported for a controller.
Definition peak_afl.hpp:3267
peak_afl_double_limit GetGainLimitRange() const
Get autofeature gain limit range for a controller.
Definition peak_afl.hpp:3304
void SetWeightedROI(const peak_afl_weighted_rectangle &rect)
Set single autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3065
std::uint32_t GetSkipFrames() const
Get number of frames skipped for a controller.
Definition peak_afl.hpp:2469
peak_afl_controller_sharpness_algorithm GetSharpnessAlgorithm() const
Get the used sharpness algorithm for a controller.
Definition peak_afl.hpp:2860
peak_afl_controller_status Status() const
Get the status for a controller.
Definition peak_afl.hpp:2610
void SetGainDigitalLimit(peak_afl_double_limit limit)
Set the digital gain limit for a controller.
Definition peak_afl.hpp:3353
bool IsAlgorithmSupported() const
check if setting an algorithm is supported for a controller.
Definition peak_afl.hpp:2784
Range< double > GetAutoPercentileRange() const
Get the auto percentile range for a controller.
Definition peak_afl.hpp:2762
peak_afl_double_limit GetExposureLimitRange() const
Get autofeature exposure limit range for a controller.
Definition peak_afl.hpp:3485
double GetAutoPercentile() const
Get the auto percentile for a controller.
Definition peak_afl.hpp:2751
peak_afl_controller_brightness_algorithm GetBrightnessAlgorithm() const
Get the current autofeature brightness algorithm for a controller.
Definition peak_afl.hpp:2599
peak_afl_double_limit GetGainAnalogLimit() const
Get autofeature analog gain limit for a controller.
Definition peak_afl.hpp:3329
void SetAutoTarget(uint32_t target)
Set the auto target for a controller.
Definition peak_afl.hpp:2656
peak_afl_double_limit GetGainHostLimit() const
Get autofeature host gain limit for a controller.
Definition peak_afl.hpp:3440
void SetAutoTolerance(std::uint32_t tolerance)
Set the auto tolerance for a controller.
Definition peak_afl.hpp:2699
std::uint32_t GetAutoTarget() const
Get the currently set auto target for a controller.
Definition peak_afl.hpp:2665
Range< std::uint32_t > GetAutoTargetRange() const
Get the auto target range for a controller.
Definition peak_afl.hpp:2676
Range< std::uint8_t > GetHysteresisRange() const
Get autofeature hysteresis range for a controller.
Definition peak_afl.hpp:3195
void SetLimit(peak_afl_controller_limit limit)
Set the autofeature limit for a controller.
Definition peak_afl.hpp:3119
bool IsWeightedROISupported() const
Check if weighted region of interest is supported for a controller.
Definition peak_afl.hpp:3043
bool IsHysteresisSupported() const
Check if hysteresis is supported for a controller.
Definition peak_afl.hpp:3150
void RegisterComponentCallback(peak_afl_controller_brightness_component component, const callback::FinishedCallback &callback)
Set component callback for a controller.
Definition peak_afl.hpp:2913
bool IsBrightnessComponentModeSupported() const
Check if auto mode is supported for a brightness controller component.
Definition peak_afl.hpp:3208
peak_afl_controller_status BrightnessComponentStatus(peak_afl_controller_brightness_component component) const
Get the status for a brightness controller component.
Definition peak_afl.hpp:3255
void SetSharpnessAlgorithm(peak_afl_controller_sharpness_algorithm algorithm)
Set the used sharpness algorithm for a controller.
Definition peak_afl.hpp:2851
void RegisterProcessingCallback(const callback::ProcessingCallback &callback)
Set the data callback for a controller.
Definition peak_afl.hpp:3018
peak_afl_double_limit GetGainHostLimitRange() const
Get autofeature host gain limit range for a controller.
Definition peak_afl.hpp:3452
bool IsAutoTargetSupported() const
check if auto target is supported for a controller.
Definition peak_afl.hpp:2644
std::vector< peak_afl_weighted_rectangle > GetWeightedROIs() const
Get the autofeature weighted region of interest for a controller.
Definition peak_afl.hpp:3085
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:3220
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:2414
Manager(const std::shared_ptr< peak::core::NodeMap > &node_map)
Create an automanager instance.
Definition peak_afl.hpp:2199
void RemoveController(const std::shared_ptr< Controller > &controller)
Remove a controller from an automanager.
Definition peak_afl.hpp:2273
std::shared_ptr< Controller > GetController(peak_afl_controllerType type) const
Get the controller for a type.
Definition peak_afl.hpp:2397
void DestroyAllController()
Destroy all controllers for a manager.
Definition peak_afl.hpp:2315
void DestroyController(const std::shared_ptr< Controller > &controller)
Destroy a controller.
Definition peak_afl.hpp:2333
std::shared_ptr< Controller > CreateController(peak_afl_controllerType type)
Create a controller and append it to Manager.
Definition peak_afl.hpp:2298
void SetCCM(std::array< float, 9 > ccm)
Set the Color Correction Matrix (CCM)
Definition peak_afl.hpp:2360
size_t ControllerCount() const
Get the list count of the controller associated with the manager.
Definition peak_afl.hpp:2392
bool Status() const
Get the status of a manager.
Definition peak_afl.hpp:2369
~Manager()
Destructor of an automanager instance.
Definition peak_afl.hpp:2213
void SetGainIPL(const peak::ipl::Gain &gain)
Sets the ipl gain.
Definition peak_afl.hpp:2351
std::vector< std::shared_ptr< Controller > > ControllerList() const
Get the list of the controller associated with the manager.
Definition peak_afl.hpp:2381
void AddController(const std::shared_ptr< Controller > &controller)
Add a controller to an automanager.
Definition peak_afl.hpp:2252
void Process(const peak::ipl::Image &image) const
Process an image.
Definition peak_afl.hpp:2289
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:82
Thrown when a cast to an incompatible type is attempted.
Definition peak_common_exceptions.hpp:93
Thrown when a function receives an invalid parameter.
Definition peak_common_exceptions.hpp:58
Thrown when the library is used before proper initialization.
Definition peak_common_exceptions.hpp:106
Thrown when an unsupported operation or feature is used.
Definition peak_common_exceptions.hpp:158
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_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_AutoFeatureManager_SetCCM(peak_afl_manager_handle handle, float *ccm, size_t ccmSize)
Set the Color Correction Matrix (CCM)
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:872
std::string GetLastError()
Get the last error message.
Definition peak_afl.hpp:2175
void Exit()
Exit the peak_afl auto feature library.
Definition peak_afl.hpp:2153
void Init()
Init the peak_afl auto feature library.
Definition peak_afl.hpp:2143
Version_t Version()
Query the library version.
Definition peak_afl.hpp:2162
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:897
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