niimaq: add timeout property
This commit is contained in:
parent
f129b56b2a
commit
2b45dea2ed
@ -57,13 +57,15 @@ enum
|
|||||||
PROP_DEVICE,
|
PROP_DEVICE,
|
||||||
PROP_RING_BUFFER_COUNT,
|
PROP_RING_BUFFER_COUNT,
|
||||||
PROP_AVOID_COPY,
|
PROP_AVOID_COPY,
|
||||||
PROP_IS_SIGNED
|
PROP_IS_SIGNED,
|
||||||
|
PROP_TIMEOUT
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_PROP_DEVICE "img0"
|
#define DEFAULT_PROP_DEVICE "img0"
|
||||||
#define DEFAULT_PROP_RING_BUFFER_COUNT 2
|
#define DEFAULT_PROP_RING_BUFFER_COUNT 2
|
||||||
#define DEFAULT_PROP_AVOID_COPY FALSE
|
#define DEFAULT_PROP_AVOID_COPY FALSE
|
||||||
#define DEFAULT_PROP_IS_SIGNED FALSE
|
#define DEFAULT_PROP_IS_SIGNED FALSE
|
||||||
|
#define DEFAULT_PROP_TIMEOUT 0
|
||||||
|
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
@ -287,6 +289,11 @@ gst_niimaqsrc_class_init (GstNiImaqSrcClass * klass)
|
|||||||
g_param_spec_boolean ("is-signed", "Image is signed 16-bit",
|
g_param_spec_boolean ("is-signed", "Image is signed 16-bit",
|
||||||
"Image is signed 16-bit, shift to unsigned 16-bit",
|
"Image is signed 16-bit, shift to unsigned 16-bit",
|
||||||
DEFAULT_PROP_IS_SIGNED, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
DEFAULT_PROP_IS_SIGNED, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (klass),
|
||||||
|
PROP_TIMEOUT, g_param_spec_int ("timeout",
|
||||||
|
"Timeout (ms)",
|
||||||
|
"Timeout in ms (0 to use default)", 0, G_MAXINT,
|
||||||
|
DEFAULT_PROP_TIMEOUT, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
||||||
|
|
||||||
gst_element_class_add_pad_template (gstelement_class,
|
gst_element_class_add_pad_template (gstelement_class,
|
||||||
gst_static_pad_template_get (&src_factory));
|
gst_static_pad_template_get (&src_factory));
|
||||||
@ -326,6 +333,7 @@ gst_niimaqsrc_init (GstNiImaqSrc * src)
|
|||||||
src->interface_name = g_strdup (DEFAULT_PROP_DEVICE);
|
src->interface_name = g_strdup (DEFAULT_PROP_DEVICE);
|
||||||
src->avoid_copy = DEFAULT_PROP_AVOID_COPY;
|
src->avoid_copy = DEFAULT_PROP_AVOID_COPY;
|
||||||
src->is_signed = DEFAULT_PROP_IS_SIGNED;
|
src->is_signed = DEFAULT_PROP_IS_SIGNED;
|
||||||
|
src->timeout = DEFAULT_PROP_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -376,6 +384,9 @@ gst_niimaqsrc_set_property (GObject * object, guint prop_id,
|
|||||||
case PROP_IS_SIGNED:
|
case PROP_IS_SIGNED:
|
||||||
src->is_signed = g_value_get_boolean (value);
|
src->is_signed = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_TIMEOUT:
|
||||||
|
src->timeout = g_value_get_int (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -400,6 +411,9 @@ gst_niimaqsrc_get_property (GObject * object, guint prop_id, GValue * value,
|
|||||||
case PROP_IS_SIGNED:
|
case PROP_IS_SIGNED:
|
||||||
g_value_set_boolean (value, src->is_signed);
|
g_value_set_boolean (value, src->is_signed);
|
||||||
break;
|
break;
|
||||||
|
case PROP_TIMEOUT:
|
||||||
|
g_value_set_int (value, src->timeout);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -779,6 +793,7 @@ gst_niimaqsrc_start (GstBaseSrc * bsrc)
|
|||||||
GstNiImaqSrc *src = GST_NIIMAQSRC (bsrc);
|
GstNiImaqSrc *src = GST_NIIMAQSRC (bsrc);
|
||||||
Int32 rval;
|
Int32 rval;
|
||||||
gint i;
|
gint i;
|
||||||
|
uInt32 timeout;
|
||||||
|
|
||||||
gst_niimaqsrc_reset (src);
|
gst_niimaqsrc_reset (src);
|
||||||
|
|
||||||
@ -850,6 +865,22 @@ gst_niimaqsrc_start (GstBaseSrc * bsrc)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
imgGetAttribute (src->iid, IMG_ATTR_FRAMEWAIT_MSEC, &timeout);
|
||||||
|
if (src->timeout != 0) {
|
||||||
|
rval = imgSetAttribute2 (src->sid, IMG_ATTR_FRAMEWAIT_MSEC, src->timeout);
|
||||||
|
if (rval) {
|
||||||
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
|
GST_WARNING_OBJECT (src, "Failed to change timeout from %d to %d msecs",
|
||||||
|
timeout, src->timeout);
|
||||||
|
} else {
|
||||||
|
GST_DEBUG_OBJECT (src, "Changed timeout from %d to %d msecs", timeout,
|
||||||
|
src->timeout);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
src->timeout = timeout;
|
||||||
|
GST_DEBUG_OBJECT (src, "Current timeout is %d msecs", timeout);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|||||||
@ -54,6 +54,7 @@ struct _GstNiImaqSrc {
|
|||||||
gint bufsize;
|
gint bufsize;
|
||||||
gboolean avoid_copy;
|
gboolean avoid_copy;
|
||||||
gboolean is_signed;
|
gboolean is_signed;
|
||||||
|
guint32 timeout;
|
||||||
|
|
||||||
/* image info */
|
/* image info */
|
||||||
GstVideoFormat format;
|
GstVideoFormat format;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user