From 856779a95e3f265674d9ec1789619a488cae05eb Mon Sep 17 00:00:00 2001 From: feuer Date: Mon, 11 Mar 2024 10:08:30 +0100 Subject: [PATCH] Add arv_camera_get_frame_rate_enable method. This is corresponding to the arv_camera_set_frame_rate_enable method and includes some camera-specific quirks. --- src/arvcamera.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/arvcamera.h | 3 ++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/arvcamera.c b/src/arvcamera.c index bbe93c89e..aaf2d88a9 100644 --- a/src/arvcamera.c +++ b/src/arvcamera.c @@ -1353,6 +1353,55 @@ arv_camera_set_frame_rate_enable(ArvCamera *camera, gboolean enable, GError **er } } +/** + * arv_camera_get_frame_rate_enable: + * @camera: an #ArvCamera + * @error: a #GError placeholer, %NULL to ignore + * + * Returns: whether the upper frame rate limit is enabled. + * + * Implements vendor specific quirks if needed. + * Since: 0.8.31 + */ + +gboolean arv_camera_get_frame_rate_enable(ArvCamera* camera, GError** error) +{ + ArvCameraPrivate* priv = arv_camera_get_instance_private(camera); + + g_return_val_if_fail(ARV_IS_CAMERA(camera), TRUE); + + switch (priv->vendor) + { + case ARV_CAMERA_VENDOR_POINT_GREY_FLIR: + return arv_camera_get_boolean(camera, + priv->has_acquisition_frame_rate_enabled + ? "AcquisitionFrameRateEnabled" + : "AcquisitionFrameRateEnable", + error); + case ARV_CAMERA_VENDOR_BASLER: + case ARV_CAMERA_VENDOR_DALSA: + case ARV_CAMERA_VENDOR_RICOH: + case ARV_CAMERA_VENDOR_XIMEA: + case ARV_CAMERA_VENDOR_MATRIX_VISION: + case ARV_CAMERA_VENDOR_IMPERX: + case ARV_CAMERA_VENDOR_UNKNOWN: + if (arv_camera_is_feature_available(camera, "AcquisitionFrameRateEnable", error)) + { + if (error != NULL) + { + return TRUE; + } + return arv_camera_get_boolean(camera, "AcquisitionFrameRateEnable", error); + } + case ARV_CAMERA_VENDOR_PROSILICA: + case ARV_CAMERA_VENDOR_TIS: + default: + break; /* No specific frame rate enable code */ + } + + return TRUE; +} + /** * arv_camera_set_trigger: * @camera: a #ArvCamera diff --git a/src/arvcamera.h b/src/arvcamera.h index 745e1ba15..3a3f2083a 100644 --- a/src/arvcamera.h +++ b/src/arvcamera.h @@ -113,7 +113,8 @@ ARV_API ArvAcquisitionMode arv_camera_get_acquisition_mode (ArvCamera *camera, G ARV_API void arv_camera_set_frame_count (ArvCamera *camera, gint64 frame_count, GError **error); ARV_API gint64 arv_camera_get_frame_count (ArvCamera *camera, GError **error); ARV_API void arv_camera_get_frame_count_bounds (ArvCamera *camera, gint64 *min, gint64 *max, GError **error); -ARV_API void arv_camera_set_frame_rate_enable (ArvCamera *camera, gboolean enable, GError **error); +ARV_API gboolean arv_camera_get_frame_rate_enable (ArvCamera *camera, GError **error); +ARV_API void arv_camera_set_frame_rate_enable (ArvCamera *camera, gboolean enable, GError **error); ARV_API gboolean arv_camera_is_frame_rate_available (ArvCamera *camera, GError **error);