idsueyesrc: add exposure and framerate properties
These are only suitable for setting values right now, they aren't being updated yet.
This commit is contained in:
parent
87f20146a6
commit
6c62aa3548
@ -60,6 +60,7 @@ static gboolean gst_idsueyesrc_unlock_stop (GstBaseSrc * src);
|
|||||||
|
|
||||||
static GstFlowReturn gst_idsueyesrc_create (GstPushSrc * src, GstBuffer ** buf);
|
static GstFlowReturn gst_idsueyesrc_create (GstPushSrc * src, GstBuffer ** buf);
|
||||||
|
|
||||||
|
static gboolean gst_idsueyesrc_set_framerate_exposure (GstIdsueyeSrc * src);
|
||||||
static gchar *gst_idsueyesrc_get_error_string (GstIdsueyeSrc * src,
|
static gchar *gst_idsueyesrc_get_error_string (GstIdsueyeSrc * src,
|
||||||
INT error_num);
|
INT error_num);
|
||||||
|
|
||||||
@ -69,13 +70,17 @@ enum
|
|||||||
PROP_CAMERA_ID,
|
PROP_CAMERA_ID,
|
||||||
PROP_CONFIG_FILE,
|
PROP_CONFIG_FILE,
|
||||||
PROP_NUM_CAPTURE_BUFFERS,
|
PROP_NUM_CAPTURE_BUFFERS,
|
||||||
PROP_TIMEOUT
|
PROP_TIMEOUT,
|
||||||
|
PROP_EXPOSURE,
|
||||||
|
PROP_FRAMERATE
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_PROP_CAMERA_ID 0
|
#define DEFAULT_PROP_CAMERA_ID 0
|
||||||
#define DEFAULT_PROP_CONFIG_FILE ""
|
#define DEFAULT_PROP_CONFIG_FILE ""
|
||||||
#define DEFAULT_PROP_NUM_CAPTURE_BUFFERS 3
|
#define DEFAULT_PROP_NUM_CAPTURE_BUFFERS 3
|
||||||
#define DEFAULT_PROP_TIMEOUT 1000
|
#define DEFAULT_PROP_TIMEOUT 1000
|
||||||
|
#define DEFAULT_PROP_EXPOSURE 0
|
||||||
|
#define DEFAULT_PROP_FRAMERATE 0
|
||||||
|
|
||||||
/* pad templates */
|
/* pad templates */
|
||||||
|
|
||||||
@ -141,6 +146,16 @@ gst_idsueyesrc_class_init (GstIdsueyeSrcClass * klass)
|
|||||||
g_param_spec_int ("timeout", "Timeout (ms)",
|
g_param_spec_int ("timeout", "Timeout (ms)",
|
||||||
"Timeout in ms (0 to use default)", 0, G_MAXINT, DEFAULT_PROP_TIMEOUT,
|
"Timeout in ms (0 to use default)", 0, G_MAXINT, DEFAULT_PROP_TIMEOUT,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
||||||
|
g_object_class_install_property (gobject_class, PROP_EXPOSURE,
|
||||||
|
g_param_spec_double ("exposure", "Exposure (ms)",
|
||||||
|
"Exposure in ms (0 to max of 1/FPS)", 0, G_MAXDOUBLE,
|
||||||
|
DEFAULT_PROP_EXPOSURE,
|
||||||
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
||||||
|
g_object_class_install_property (gobject_class, PROP_FRAMERATE,
|
||||||
|
g_param_spec_double ("framerate", "Framerate (Hz)",
|
||||||
|
"Framerate in frames per second", 0, G_MAXDOUBLE,
|
||||||
|
DEFAULT_PROP_FRAMERATE,
|
||||||
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -172,6 +187,8 @@ gst_idsueyesrc_init (GstIdsueyeSrc * src)
|
|||||||
src->config_file = g_strdup (DEFAULT_PROP_CONFIG_FILE);
|
src->config_file = g_strdup (DEFAULT_PROP_CONFIG_FILE);
|
||||||
src->num_capture_buffers = DEFAULT_PROP_NUM_CAPTURE_BUFFERS;
|
src->num_capture_buffers = DEFAULT_PROP_NUM_CAPTURE_BUFFERS;
|
||||||
src->timeout = DEFAULT_PROP_TIMEOUT;
|
src->timeout = DEFAULT_PROP_TIMEOUT;
|
||||||
|
src->exposure = DEFAULT_PROP_EXPOSURE;
|
||||||
|
src->framerate = DEFAULT_PROP_FRAMERATE;
|
||||||
|
|
||||||
src->stop_requested = FALSE;
|
src->stop_requested = FALSE;
|
||||||
src->caps = NULL;
|
src->caps = NULL;
|
||||||
@ -201,6 +218,18 @@ gst_idsueyesrc_set_property (GObject * object, guint property_id,
|
|||||||
case PROP_TIMEOUT:
|
case PROP_TIMEOUT:
|
||||||
src->timeout = g_value_get_int (value);
|
src->timeout = g_value_get_int (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_EXPOSURE:
|
||||||
|
src->exposure = g_value_get_double (value);
|
||||||
|
if (src->is_started) {
|
||||||
|
gst_idsueyesrc_set_framerate_exposure (src);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PROP_FRAMERATE:
|
||||||
|
src->framerate = g_value_get_double (value);
|
||||||
|
if (src->is_started) {
|
||||||
|
gst_idsueyesrc_set_framerate_exposure (src);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -229,6 +258,12 @@ gst_idsueyesrc_get_property (GObject * object, guint property_id,
|
|||||||
case PROP_TIMEOUT:
|
case PROP_TIMEOUT:
|
||||||
g_value_set_int (value, src->timeout);
|
g_value_set_int (value, src->timeout);
|
||||||
break;
|
break;
|
||||||
|
case PROP_EXPOSURE:
|
||||||
|
g_value_set_double (value, src->exposure);
|
||||||
|
break;
|
||||||
|
case PROP_FRAMERATE:
|
||||||
|
g_value_set_double (value, src->framerate);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -535,6 +570,8 @@ gst_idsueyesrc_start (GstBaseSrc * bsrc)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gst_idsueyesrc_set_framerate_exposure (src);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -769,6 +806,31 @@ gst_idsueyesrc_create (GstPushSrc * psrc, GstBuffer ** buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gst_idsueyesrc_set_framerate_exposure (GstIdsueyeSrc * src)
|
||||||
|
{
|
||||||
|
INT ret;
|
||||||
|
gboolean success = TRUE;
|
||||||
|
double new_fps;
|
||||||
|
|
||||||
|
ret = is_SetFrameRate (src->hCam, src->framerate, &new_fps);
|
||||||
|
if (ret != IS_SUCCESS) {
|
||||||
|
GST_WARNING_OBJECT (src, "Failed to set framerate to %.3f (error %d)",
|
||||||
|
src->framerate, ret);
|
||||||
|
success = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret =
|
||||||
|
is_Exposure (src->hCam, IS_EXPOSURE_CMD_SET_EXPOSURE, &src->exposure, 8);
|
||||||
|
if (ret != IS_SUCCESS) {
|
||||||
|
GST_WARNING_OBJECT (src, "Failed to set exposure to %.3f (error %d)",
|
||||||
|
src->exposure, ret);
|
||||||
|
success = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
gchar *
|
gchar *
|
||||||
gst_idsueyesrc_get_error_string (GstIdsueyeSrc * src, INT error_num)
|
gst_idsueyesrc_get_error_string (GstIdsueyeSrc * src, INT error_num)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -54,6 +54,8 @@ struct _GstIdsueyeSrc
|
|||||||
gchar *config_file;
|
gchar *config_file;
|
||||||
gint num_capture_buffers;
|
gint num_capture_buffers;
|
||||||
gint timeout;
|
gint timeout;
|
||||||
|
gdouble exposure;
|
||||||
|
gdouble framerate;
|
||||||
|
|
||||||
GstClockTime acq_start_time;
|
GstClockTime acq_start_time;
|
||||||
guint32 last_frame_count;
|
guint32 last_frame_count;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user