kayasrc: add exposure-time property
This commit is contained in:
parent
3e7230e782
commit
e7cdcb426d
@ -83,7 +83,8 @@ enum
|
|||||||
PROP_NUM_CAPTURE_BUFFERS,
|
PROP_NUM_CAPTURE_BUFFERS,
|
||||||
PROP_TIMEOUT,
|
PROP_TIMEOUT,
|
||||||
PROP_PROJECT_FILE,
|
PROP_PROJECT_FILE,
|
||||||
PROP_XML_FILE
|
PROP_XML_FILE,
|
||||||
|
PROP_EXPOSURE_TIME
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_PROP_INTERFACE_INDEX 0
|
#define DEFAULT_PROP_INTERFACE_INDEX 0
|
||||||
@ -92,6 +93,7 @@ enum
|
|||||||
#define DEFAULT_PROP_TIMEOUT 1000
|
#define DEFAULT_PROP_TIMEOUT 1000
|
||||||
#define DEFAULT_PROP_PROJECT_FILE NULL
|
#define DEFAULT_PROP_PROJECT_FILE NULL
|
||||||
#define DEFAULT_PROP_XML_FILE NULL
|
#define DEFAULT_PROP_XML_FILE NULL
|
||||||
|
#define DEFAULT_PROP_EXPOSURE_TIME 0
|
||||||
|
|
||||||
/* pad templates */
|
/* pad templates */
|
||||||
|
|
||||||
@ -176,6 +178,12 @@ gst_kayasrc_class_init (GstKayaSrcClass * klass)
|
|||||||
DEFAULT_PROP_XML_FILE,
|
DEFAULT_PROP_XML_FILE,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
||||||
GST_PARAM_MUTABLE_READY)));
|
GST_PARAM_MUTABLE_READY)));
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (klass),
|
||||||
|
PROP_EXPOSURE_TIME, g_param_spec_float ("exposure-time",
|
||||||
|
"Exposure time (us)",
|
||||||
|
"Sets the exposure time in microseconds",
|
||||||
|
0, G_MAXFLOAT, DEFAULT_PROP_EXPOSURE_TIME,
|
||||||
|
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -226,6 +234,7 @@ gst_kayasrc_init (GstKayaSrc * src)
|
|||||||
src->timeout = DEFAULT_PROP_TIMEOUT;
|
src->timeout = DEFAULT_PROP_TIMEOUT;
|
||||||
src->project_file = DEFAULT_PROP_PROJECT_FILE;
|
src->project_file = DEFAULT_PROP_PROJECT_FILE;
|
||||||
src->xml_file = DEFAULT_PROP_PROJECT_FILE;
|
src->xml_file = DEFAULT_PROP_PROJECT_FILE;
|
||||||
|
src->exposure_time = DEFAULT_PROP_EXPOSURE_TIME;
|
||||||
|
|
||||||
src->queue = g_async_queue_new ();
|
src->queue = g_async_queue_new ();
|
||||||
src->caps = NULL;
|
src->caps = NULL;
|
||||||
@ -236,6 +245,24 @@ gst_kayasrc_init (GstKayaSrc * src)
|
|||||||
gst_kayasrc_cleanup (src);
|
gst_kayasrc_cleanup (src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_kayasrc_get_exposure_time (GstKayaSrc * src)
|
||||||
|
{
|
||||||
|
if (src->cam_handle != INVALID_CAMHANDLE) {
|
||||||
|
src->exposure_time =
|
||||||
|
KYFG_GetCameraValueFloat (src->cam_handle, "ExposureTime");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_kayasrc_set_exposure_time (GstKayaSrc * src)
|
||||||
|
{
|
||||||
|
if (src->cam_handle != INVALID_CAMHANDLE) {
|
||||||
|
KYFG_SetCameraValueFloat (src->cam_handle, "ExposureTime",
|
||||||
|
src->exposure_time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gst_kayasrc_set_property (GObject * object, guint property_id,
|
gst_kayasrc_set_property (GObject * object, guint property_id,
|
||||||
const GValue * value, GParamSpec * pspec)
|
const GValue * value, GParamSpec * pspec)
|
||||||
@ -265,6 +292,10 @@ gst_kayasrc_set_property (GObject * object, guint property_id,
|
|||||||
g_free (src->xml_file);
|
g_free (src->xml_file);
|
||||||
src->xml_file = g_value_dup_string (value);
|
src->xml_file = g_value_dup_string (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_EXPOSURE_TIME:
|
||||||
|
src->exposure_time = g_value_get_float (value);
|
||||||
|
gst_kayasrc_set_exposure_time (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;
|
||||||
@ -299,6 +330,10 @@ gst_kayasrc_get_property (GObject * object, guint property_id,
|
|||||||
case PROP_XML_FILE:
|
case PROP_XML_FILE:
|
||||||
g_value_set_string (value, src->xml_file);
|
g_value_set_string (value, src->xml_file);
|
||||||
break;
|
break;
|
||||||
|
case PROP_EXPOSURE_TIME:
|
||||||
|
gst_kayasrc_get_exposure_time (src);
|
||||||
|
g_value_set_float (value, src->exposure_time);
|
||||||
|
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;
|
||||||
@ -435,6 +470,8 @@ gst_kayasrc_start (GstBaseSrc * bsrc)
|
|||||||
}
|
}
|
||||||
src->cam_handle = cam_handles[src->device_index];
|
src->cam_handle = cam_handles[src->device_index];
|
||||||
|
|
||||||
|
gst_kayasrc_set_exposure_time (src);
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
KYFG_CameraCallbackRegister (src->cam_handle, gst_kayasrc_stream_callback,
|
KYFG_CameraCallbackRegister (src->cam_handle, gst_kayasrc_stream_callback,
|
||||||
src);
|
src);
|
||||||
|
|||||||
@ -32,6 +32,7 @@ G_BEGIN_DECLS
|
|||||||
#define GST_IS_KAYA_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_KAYA_SRC))
|
#define GST_IS_KAYA_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_KAYA_SRC))
|
||||||
#define GST_IS_KAYA_SRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_KAYA_SRC))
|
#define GST_IS_KAYA_SRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_KAYA_SRC))
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GstKayaSrc GstKayaSrc;
|
typedef struct _GstKayaSrc GstKayaSrc;
|
||||||
typedef struct _GstKayaSrcClass GstKayaSrcClass;
|
typedef struct _GstKayaSrcClass GstKayaSrcClass;
|
||||||
|
|
||||||
@ -53,6 +54,7 @@ struct _GstKayaSrc
|
|||||||
gint timeout;
|
gint timeout;
|
||||||
gchar *project_file;
|
gchar *project_file;
|
||||||
gchar *xml_file;
|
gchar *xml_file;
|
||||||
|
gfloat exposure_time;
|
||||||
|
|
||||||
gboolean acquisition_started;
|
gboolean acquisition_started;
|
||||||
gboolean stop_requested;
|
gboolean stop_requested;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user