niimaqsrc: Refactor pointer to GstNiImaqSrc to niimaqsrc
This commit is contained in:
parent
666edbe598
commit
763b869063
256
sys/gstniimaq.c
256
sys/gstniimaq.c
@ -456,26 +456,26 @@ gst_niimaqsrc_class_init (GstNiImaqSrcClass * klass)
|
|||||||
* Initialize this instance of #GstNiImaq
|
* Initialize this instance of #GstNiImaq
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
gst_niimaqsrc_init (GstNiImaqSrc * src, GstNiImaqSrcClass * g_class)
|
gst_niimaqsrc_init (GstNiImaqSrc * niimaqsrc, GstNiImaqSrcClass * g_class)
|
||||||
{
|
{
|
||||||
GstPad *srcpad = GST_BASE_SRC_PAD (src);
|
GstPad *srcpad = GST_BASE_SRC_PAD (niimaqsrc);
|
||||||
|
|
||||||
/* set source as live (no preroll) */
|
/* set source as live (no preroll) */
|
||||||
gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
|
gst_base_src_set_live (GST_BASE_SRC (niimaqsrc), TRUE);
|
||||||
|
|
||||||
/* initialize member variables */
|
/* initialize member variables */
|
||||||
src->timestamp_offset = 0;
|
niimaqsrc->timestamp_offset = 0;
|
||||||
src->caps = NULL;
|
niimaqsrc->caps = NULL;
|
||||||
src->bufsize = 10;
|
niimaqsrc->bufsize = 10;
|
||||||
src->n_frames = 0;
|
niimaqsrc->n_frames = 0;
|
||||||
src->cumbufnum = 0;
|
niimaqsrc->cumbufnum = 0;
|
||||||
src->n_dropped_frames = 0;
|
niimaqsrc->n_dropped_frames = 0;
|
||||||
src->buflist = 0;
|
niimaqsrc->buflist = 0;
|
||||||
src->sid = 0;
|
niimaqsrc->sid = 0;
|
||||||
src->iid = 0;
|
niimaqsrc->iid = 0;
|
||||||
src->camera_name = g_strdup (DEFAULT_PROP_INTERFACE);
|
niimaqsrc->camera_name = g_strdup (DEFAULT_PROP_INTERFACE);
|
||||||
src->interface_name = g_strdup (DEFAULT_PROP_INTERFACE);
|
niimaqsrc->interface_name = g_strdup (DEFAULT_PROP_INTERFACE);
|
||||||
src->session_started = FALSE;
|
niimaqsrc->session_started = FALSE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -488,13 +488,13 @@ gst_niimaqsrc_init (GstNiImaqSrc * src, GstNiImaqSrcClass * g_class)
|
|||||||
static void
|
static void
|
||||||
gst_niimaqsrc_dispose (GObject * object)
|
gst_niimaqsrc_dispose (GObject * object)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc *src = GST_NIIMAQSRC (object);
|
GstNiImaqSrc *niimaqsrc = GST_NIIMAQSRC (object);
|
||||||
|
|
||||||
/* free memory allocated */
|
/* free memory allocated */
|
||||||
g_free (src->camera_name);
|
g_free (niimaqsrc->camera_name);
|
||||||
src->camera_name = NULL;
|
niimaqsrc->camera_name = NULL;
|
||||||
g_free (src->interface_name);
|
g_free (niimaqsrc->interface_name);
|
||||||
src->interface_name = NULL;
|
niimaqsrc->interface_name = NULL;
|
||||||
|
|
||||||
/* chain dispose fuction of parent class */
|
/* chain dispose fuction of parent class */
|
||||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||||
@ -504,23 +504,23 @@ static void
|
|||||||
gst_niimaqsrc_set_property (GObject * object, guint prop_id,
|
gst_niimaqsrc_set_property (GObject * object, guint prop_id,
|
||||||
const GValue * value, GParamSpec * pspec)
|
const GValue * value, GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc *src = GST_NIIMAQSRC (object);
|
GstNiImaqSrc *niimaqsrc = GST_NIIMAQSRC (object);
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_INTERFACE:
|
case PROP_INTERFACE:
|
||||||
if (src->interface_name)
|
if (niimaqsrc->interface_name)
|
||||||
g_free (src->interface_name);
|
g_free (niimaqsrc->interface_name);
|
||||||
src->interface_name = g_strdup (g_value_get_string (value));
|
niimaqsrc->interface_name = g_strdup (g_value_get_string (value));
|
||||||
|
|
||||||
if (src->camera_name)
|
if (niimaqsrc->camera_name)
|
||||||
g_free (src->camera_name);
|
g_free (niimaqsrc->camera_name);
|
||||||
src->camera_name = g_strdup (g_value_get_string (value));
|
niimaqsrc->camera_name = g_strdup (g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
case PROP_TIMESTAMP_OFFSET:
|
case PROP_TIMESTAMP_OFFSET:
|
||||||
src->timestamp_offset = g_value_get_int64 (value);
|
niimaqsrc->timestamp_offset = g_value_get_int64 (value);
|
||||||
break;
|
break;
|
||||||
case PROP_BUFSIZE:
|
case PROP_BUFSIZE:
|
||||||
src->bufsize = g_value_get_int (value);
|
niimaqsrc->bufsize = g_value_get_int (value);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -530,17 +530,17 @@ static void
|
|||||||
gst_niimaqsrc_get_property (GObject * object, guint prop_id, GValue * value,
|
gst_niimaqsrc_get_property (GObject * object, guint prop_id, GValue * value,
|
||||||
GParamSpec * pspec)
|
GParamSpec * pspec)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc *src = GST_NIIMAQSRC (object);
|
GstNiImaqSrc *niimaqsrc = GST_NIIMAQSRC (object);
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_INTERFACE:
|
case PROP_INTERFACE:
|
||||||
g_value_set_string (value, src->interface_name);
|
g_value_set_string (value, niimaqsrc->interface_name);
|
||||||
break;
|
break;
|
||||||
case PROP_TIMESTAMP_OFFSET:
|
case PROP_TIMESTAMP_OFFSET:
|
||||||
g_value_set_int64 (value, src->timestamp_offset);
|
g_value_set_int64 (value, niimaqsrc->timestamp_offset);
|
||||||
break;
|
break;
|
||||||
case PROP_BUFSIZE:
|
case PROP_BUFSIZE:
|
||||||
g_value_set_int (value, src->bufsize);
|
g_value_set_int (value, niimaqsrc->bufsize);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
@ -551,16 +551,16 @@ gst_niimaqsrc_get_property (GObject * object, guint prop_id, GValue * value,
|
|||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_niimaqsrc_get_caps (GstBaseSrc * bsrc)
|
gst_niimaqsrc_get_caps (GstBaseSrc * bsrc)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc *gsrc = GST_NIIMAQSRC (bsrc);
|
GstNiImaqSrc *niimaqsrc = GST_NIIMAQSRC (bsrc);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (bsrc, "Entering function get_caps");
|
GST_DEBUG_OBJECT (bsrc, "Entering function get_caps");
|
||||||
|
|
||||||
/* return template caps if we don't know the actual camera caps */
|
/* return template caps if we don't know the actual camera caps */
|
||||||
if (!gsrc->caps) {
|
if (!niimaqsrc->caps) {
|
||||||
return gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (gsrc)));
|
return gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (niimaqsrc)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return gst_caps_copy (gsrc->caps);
|
return gst_caps_copy (niimaqsrc->caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -569,30 +569,30 @@ gst_niimaqsrc_set_caps (GstBaseSrc * bsrc, GstCaps * caps)
|
|||||||
{
|
{
|
||||||
|
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstNiImaqSrc *niimaq;
|
GstNiImaqSrc *niimaqsrc;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
gint bpp, depth;
|
gint bpp, depth;
|
||||||
|
|
||||||
niimaq = GST_NIIMAQSRC (bsrc);
|
niimaqsrc = GST_NIIMAQSRC (bsrc);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (bsrc, "Entering function set_caps");
|
GST_DEBUG_OBJECT (bsrc, "Entering function set_caps");
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (caps, "are the caps being set");
|
GST_DEBUG_OBJECT (caps, "are the caps being set");
|
||||||
|
|
||||||
if (niimaq->caps) {
|
if (niimaqsrc->caps) {
|
||||||
gst_caps_unref (niimaq->caps);
|
gst_caps_unref (niimaqsrc->caps);
|
||||||
niimaq->caps = gst_caps_copy (caps);
|
niimaqsrc->caps = gst_caps_copy (caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
res = gst_niimaqsrc_parse_caps (niimaq->caps, &width, &height, &depth, &bpp);
|
res = gst_niimaqsrc_parse_caps (niimaqsrc->caps, &width, &height, &depth, &bpp);
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
/* looks ok here */
|
/* looks ok here */
|
||||||
niimaq->width = width;
|
niimaqsrc->width = width;
|
||||||
niimaq->height = height;
|
niimaqsrc->height = height;
|
||||||
niimaq->depth = depth;
|
niimaqsrc->depth = depth;
|
||||||
niimaq->bpp = bpp;
|
niimaqsrc->bpp = bpp;
|
||||||
niimaq->framesize = width * height * (depth/8);
|
niimaqsrc->framesize = width * height * (depth/8);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@ -624,7 +624,7 @@ gst_niimaqsrc_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
|
|||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_niimaqsrc_create (GstPushSrc * psrc, GstBuffer ** buffer)
|
gst_niimaqsrc_create (GstPushSrc * psrc, GstBuffer ** buffer)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc *src = GST_NIIMAQSRC (psrc);
|
GstNiImaqSrc *niimaqsrc = GST_NIIMAQSRC (psrc);
|
||||||
gpointer data;
|
gpointer data;
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
GstFlowReturn res = GST_FLOW_OK;
|
GstFlowReturn res = GST_FLOW_OK;
|
||||||
@ -636,63 +636,63 @@ gst_niimaqsrc_create (GstPushSrc * psrc, GstBuffer ** buffer)
|
|||||||
uInt32 dropped;
|
uInt32 dropped;
|
||||||
|
|
||||||
/* start the IMAQ acquisition session if we haven't done so yet */
|
/* start the IMAQ acquisition session if we haven't done so yet */
|
||||||
if (!src->session_started) {
|
if (!niimaqsrc->session_started) {
|
||||||
GST_DEBUG_OBJECT (src, "Starting acquisition");
|
GST_DEBUG_OBJECT (niimaqsrc, "Starting acquisition");
|
||||||
|
|
||||||
/* try to open the camera five times */
|
/* try to open the camera five times */
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
rval = imgSessionStartAcquisition (src->sid);
|
rval = imgSessionStartAcquisition (niimaqsrc->sid);
|
||||||
if (rval == 0) {
|
if (rval == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_LOG_OBJECT (src, "camera is still off , wait 50ms and retry");
|
GST_LOG_OBJECT (niimaqsrc, "camera is still off , wait 50ms and retry");
|
||||||
g_usleep (50000);
|
g_usleep (50000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we tried five times and failed, so we error */
|
/* we tried five times and failed, so we error */
|
||||||
if (i >= 5) {
|
if (i >= 5) {
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED,
|
||||||
("Camera doesn't seem to want to turn on!"),
|
("Camera doesn't seem to want to turn on!"),
|
||||||
("Camera doesn't seem to want to turn on!"));
|
("Camera doesn't seem to want to turn on!"));
|
||||||
|
|
||||||
if (src->sid) {
|
if (niimaqsrc->sid) {
|
||||||
rval = imgClose (src->sid,TRUE);
|
rval = imgClose (niimaqsrc->sid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
src->sid = 0;
|
niimaqsrc->sid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->iid) {
|
if (niimaqsrc->iid) {
|
||||||
rval = imgClose (src->iid,TRUE);
|
rval = imgClose (niimaqsrc->iid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
src->iid = 0;
|
niimaqsrc->iid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
src->session_started = TRUE;
|
niimaqsrc->session_started = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
data = g_malloc(src->framesize);
|
data = g_malloc(niimaqsrc->framesize);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT(src, "Copying IMAQ buffer %d", src->cumbufnum);
|
GST_DEBUG_OBJECT(niimaqsrc, "Copying IMAQ buffer %d", niimaqsrc->cumbufnum);
|
||||||
|
|
||||||
rval = imgSessionCopyBufferByNumber (src->sid, src->cumbufnum, data,
|
rval = imgSessionCopyBufferByNumber (niimaqsrc->sid, niimaqsrc->cumbufnum, data,
|
||||||
IMG_OVERWRITE_GET_OLDEST, &copied_number, &copied_index);
|
IMG_OVERWRITE_GET_OLDEST, &copied_number, &copied_index);
|
||||||
if (rval) {
|
if (rval) {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED,
|
||||||
("failed to copy buffer %d", src->cumbufnum),
|
("failed to copy buffer %d", niimaqsrc->cumbufnum),
|
||||||
("failed to copy buffer %d, IMAQ error: \"%s\"", src->cumbufnum));
|
("failed to copy buffer %d, IMAQ error: \"%s\"", niimaqsrc->cumbufnum));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
*buffer = gst_buffer_new ();
|
*buffer = gst_buffer_new ();
|
||||||
GST_BUFFER_DATA (*buffer) = data;
|
GST_BUFFER_DATA (*buffer) = data;
|
||||||
GST_BUFFER_MALLOCDATA (*buffer) = data;
|
GST_BUFFER_MALLOCDATA (*buffer) = data;
|
||||||
GST_BUFFER_SIZE (*buffer) = src->framesize;
|
GST_BUFFER_SIZE (*buffer) = niimaqsrc->framesize;
|
||||||
|
|
||||||
/* set caps of src pad to buffer */
|
/* set caps of src pad to buffer */
|
||||||
caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc));
|
caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc));
|
||||||
@ -705,17 +705,17 @@ gst_niimaqsrc_create (GstPushSrc * psrc, GstBuffer ** buffer)
|
|||||||
src->rate_denominator, src->rate_numerator);
|
src->rate_denominator, src->rate_numerator);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
dropped = copied_number - src->cumbufnum;
|
dropped = copied_number - niimaqsrc->cumbufnum;
|
||||||
if (dropped > 0) {
|
if (dropped > 0) {
|
||||||
src->n_dropped_frames += dropped;
|
niimaqsrc->n_dropped_frames += dropped;
|
||||||
GST_WARNING_OBJECT (src, "Asked to copy buffer %d but was given %d",
|
GST_WARNING_OBJECT (niimaqsrc, "Asked to copy buffer %d but was given %d",
|
||||||
src->cumbufnum, copied_number);
|
niimaqsrc->cumbufnum, copied_number);
|
||||||
GST_WARNING_OBJECT (src, "Dropped %d frames (%d total)", dropped, src->n_dropped_frames);
|
GST_WARNING_OBJECT (niimaqsrc, "Dropped %d frames (%d total)", dropped, niimaqsrc->n_dropped_frames);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set cumulative buffer number to get next frame */
|
/* set cumulative buffer number to get next frame */
|
||||||
src->cumbufnum = copied_number + 1;
|
niimaqsrc->cumbufnum = copied_number + 1;
|
||||||
src->n_frames++;
|
niimaqsrc->n_frames++;
|
||||||
|
|
||||||
/*if (src->rate_numerator != 0) {
|
/*if (src->rate_numerator != 0) {
|
||||||
src->running_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
|
src->running_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
|
||||||
@ -827,7 +827,7 @@ gst_niimaqsrc_set_caps_framesize (GstStructure * gs, gint width, gint height)
|
|||||||
* Returns: the #GstCaps of the src pad. Unref the caps when you no longer need it.
|
* Returns: the #GstCaps of the src pad. Unref the caps when you no longer need it.
|
||||||
*/
|
*/
|
||||||
GstCaps *
|
GstCaps *
|
||||||
gst_niimaqsrc_get_cam_caps (GstNiImaqSrc * src)
|
gst_niimaqsrc_get_cam_caps (GstNiImaqSrc * niimaqsrc)
|
||||||
{
|
{
|
||||||
GstCaps *gcaps = NULL;
|
GstCaps *gcaps = NULL;
|
||||||
Int32 rval;
|
Int32 rval;
|
||||||
@ -837,28 +837,28 @@ gst_niimaqsrc_get_cam_caps (GstNiImaqSrc * src)
|
|||||||
|
|
||||||
gcaps = gst_caps_new_empty ();
|
gcaps = gst_caps_new_empty ();
|
||||||
|
|
||||||
if (!src->iid) {
|
if (!niimaqsrc->iid) {
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Camera interface not open"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Camera interface not open"),
|
||||||
("Camera interface not open"));
|
("Camera interface not open"));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* retrieve caps from IMAQ interface */
|
/* retrieve caps from IMAQ interface */
|
||||||
rval = imgGetAttribute (src->iid, IMG_ATTR_BITSPERPIXEL, &val);
|
rval = imgGetAttribute (niimaqsrc->iid, IMG_ATTR_BITSPERPIXEL, &val);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
bpp = val;
|
bpp = val;
|
||||||
rval &= imgGetAttribute (src->iid, IMG_ATTR_BYTESPERPIXEL, &val);
|
rval &= imgGetAttribute (niimaqsrc->iid, IMG_ATTR_BYTESPERPIXEL, &val);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
depth = val*8;
|
depth = val*8;
|
||||||
rval &= imgGetAttribute (src->iid, IMG_ATTR_ROI_WIDTH, &val);
|
rval &= imgGetAttribute (niimaqsrc->iid, IMG_ATTR_ROI_WIDTH, &val);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
width = val;
|
width = val;
|
||||||
rval &= imgGetAttribute (src->iid, IMG_ATTR_ROI_HEIGHT, &val);
|
rval &= imgGetAttribute (niimaqsrc->iid, IMG_ATTR_ROI_HEIGHT, &val);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
height = val;
|
height = val;
|
||||||
|
|
||||||
if (rval) {
|
if (rval) {
|
||||||
GST_ELEMENT_ERROR (src, STREAM, FAILED,
|
GST_ELEMENT_ERROR (niimaqsrc, STREAM, FAILED,
|
||||||
("attempt to read attributes failed"),
|
("attempt to read attributes failed"),
|
||||||
("attempt to read attributes failed"));
|
("attempt to read attributes failed"));
|
||||||
goto error;
|
goto error;
|
||||||
@ -868,7 +868,7 @@ gst_niimaqsrc_get_cam_caps (GstNiImaqSrc * src)
|
|||||||
gs = gst_structure_empty_new ("video");
|
gs = gst_structure_empty_new ("video");
|
||||||
if (!gst_niimaqsrc_set_caps_color (gs, bpp, depth) ||
|
if (!gst_niimaqsrc_set_caps_color (gs, bpp, depth) ||
|
||||||
!gst_niimaqsrc_set_caps_framesize (gs, width, height)) {
|
!gst_niimaqsrc_set_caps_framesize (gs, width, height)) {
|
||||||
GST_ELEMENT_ERROR (src, STREAM, FAILED,
|
GST_ELEMENT_ERROR (niimaqsrc, STREAM, FAILED,
|
||||||
("attempt to set caps %dx%dx%d (%d) failed", width, height, depth, bpp),
|
("attempt to set caps %dx%dx%d (%d) failed", width, height, depth, bpp),
|
||||||
("attempt to set caps %dx%dx%d (%d) failed", width, height, depth, bpp));
|
("attempt to set caps %dx%dx%d (%d) failed", width, height, depth, bpp));
|
||||||
goto error;
|
goto error;
|
||||||
@ -911,60 +911,60 @@ error:
|
|||||||
static gboolean
|
static gboolean
|
||||||
gst_niimaqsrc_start (GstBaseSrc * src)
|
gst_niimaqsrc_start (GstBaseSrc * src)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc* filter = GST_NIIMAQSRC(src);
|
GstNiImaqSrc* niimaqsrc = GST_NIIMAQSRC(src);
|
||||||
Int32 rval;
|
Int32 rval;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
filter->iid = 0;
|
niimaqsrc->iid = 0;
|
||||||
filter->sid = 0;
|
niimaqsrc->sid = 0;
|
||||||
|
|
||||||
GST_LOG_OBJECT (filter, "Opening IMAQ interface: %s", filter->interface_name);
|
GST_LOG_OBJECT (niimaqsrc, "Opening IMAQ interface: %s", niimaqsrc->interface_name);
|
||||||
|
|
||||||
/* open IMAQ interface */
|
/* open IMAQ interface */
|
||||||
rval=imgInterfaceOpen(filter->interface_name,&(filter->iid));
|
rval=imgInterfaceOpen(niimaqsrc->interface_name,&(niimaqsrc->iid));
|
||||||
if (rval) {
|
if (rval) {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open IMAQ interface"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Failed to open IMAQ interface"),
|
||||||
("Failed to open camera interface %s", filter->interface_name));
|
("Failed to open camera interface %s", niimaqsrc->interface_name));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (filter, "Opening IMAQ session: %s", filter->interface_name);
|
GST_LOG_OBJECT (niimaqsrc, "Opening IMAQ session: %s", niimaqsrc->interface_name);
|
||||||
|
|
||||||
/* open IMAQ session */
|
/* open IMAQ session */
|
||||||
rval=imgSessionOpen(filter->iid, &(filter->sid));
|
rval=imgSessionOpen(niimaqsrc->iid, &(niimaqsrc->sid));
|
||||||
if (rval) {
|
if (rval) {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open IMAQ session"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Failed to open IMAQ session"),
|
||||||
("Failed to open camera session %d", filter->sid));
|
("Failed to open IMAQ session %d", niimaqsrc->sid));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter->caps) {
|
if (niimaqsrc->caps) {
|
||||||
gst_caps_unref (filter->caps);
|
gst_caps_unref (niimaqsrc->caps);
|
||||||
filter->caps = NULL;
|
niimaqsrc->caps = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get caps from camera and set to src pad */
|
/* get caps from camera and set to src pad */
|
||||||
filter->caps = gst_niimaqsrc_get_cam_caps (filter);
|
niimaqsrc->caps = gst_niimaqsrc_get_cam_caps (niimaqsrc);
|
||||||
if (filter->caps == NULL) {
|
if (niimaqsrc->caps == NULL) {
|
||||||
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to get caps from IMAQ"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Failed to get caps from IMAQ"),
|
||||||
("Failed to get caps from IMAQ"));
|
("Failed to get caps from IMAQ"));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (filter, "Creating ring with %d buffers", filter->bufsize);
|
GST_LOG_OBJECT (niimaqsrc, "Creating ring with %d buffers", niimaqsrc->bufsize);
|
||||||
|
|
||||||
/* create array of pointers to give to IMAQ for creating internal buffers */
|
/* create array of pointers to give to IMAQ for creating internal buffers */
|
||||||
filter->buflist = g_new (guint32*, filter->bufsize);
|
niimaqsrc->buflist = g_new (guint32*, niimaqsrc->bufsize);
|
||||||
for (i=0; i < filter->bufsize; i++) {
|
for (i=0; i < niimaqsrc->bufsize; i++) {
|
||||||
filter->buflist[i] = 0;
|
niimaqsrc->buflist[i] = 0;
|
||||||
}
|
}
|
||||||
rval=imgRingSetup (filter->sid, filter->bufsize, (void**)(filter->buflist), 0, FALSE);
|
rval=imgRingSetup (niimaqsrc->sid, niimaqsrc->bufsize, (void**)(niimaqsrc->buflist), 0, FALSE);
|
||||||
if (rval) {
|
if (rval) {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to create ring buffer"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Failed to create ring buffer"),
|
||||||
("Failed to create ring buffer with %d buffers", filter->bufsize));
|
("Failed to create ring buffer with %d buffers", niimaqsrc->bufsize));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -981,15 +981,15 @@ gst_niimaqsrc_start (GstBaseSrc * src)
|
|||||||
|
|
||||||
error:
|
error:
|
||||||
/* close IMAQ session and interface */
|
/* close IMAQ session and interface */
|
||||||
if(filter->sid) {
|
if(niimaqsrc->sid) {
|
||||||
rval = imgClose(filter->sid,TRUE);
|
rval = imgClose(niimaqsrc->sid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
filter->sid = 0;
|
niimaqsrc->sid = 0;
|
||||||
}
|
}
|
||||||
if(filter->iid) {
|
if(niimaqsrc->iid) {
|
||||||
rval = imgClose(filter->iid,TRUE);
|
rval = imgClose(niimaqsrc->iid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
filter->iid = 0;
|
niimaqsrc->iid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;;
|
return FALSE;;
|
||||||
@ -1007,36 +1007,36 @@ error:
|
|||||||
static gboolean
|
static gboolean
|
||||||
gst_niimaqsrc_stop (GstBaseSrc * src)
|
gst_niimaqsrc_stop (GstBaseSrc * src)
|
||||||
{
|
{
|
||||||
GstNiImaqSrc* filter = GST_NIIMAQSRC (src);
|
GstNiImaqSrc* niimaqsrc = GST_NIIMAQSRC (src);
|
||||||
Int32 rval;
|
Int32 rval;
|
||||||
|
|
||||||
/* stop IMAQ session */
|
/* stop IMAQ session */
|
||||||
rval = imgSessionStopAcquisition (filter->sid);
|
rval = imgSessionStopAcquisition (niimaqsrc->sid);
|
||||||
if (rval) {
|
if (rval) {
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Unable to stop acquisition"),
|
GST_ELEMENT_ERROR (niimaqsrc, RESOURCE, FAILED, ("Unable to stop acquisition"),
|
||||||
("Unable to stop acquisition"));
|
("Unable to stop acquisition"));
|
||||||
}
|
}
|
||||||
filter->session_started = FALSE;
|
niimaqsrc->session_started = FALSE;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (filter, "Acquisition stopped");
|
GST_DEBUG_OBJECT (niimaqsrc, "Acquisition stopped");
|
||||||
|
|
||||||
/* close IMAQ session and interface */
|
/* close IMAQ session and interface */
|
||||||
if(filter->sid) {
|
if(niimaqsrc->sid) {
|
||||||
rval = imgClose(filter->sid,TRUE);
|
rval = imgClose(niimaqsrc->sid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
filter->sid = 0;
|
niimaqsrc->sid = 0;
|
||||||
}
|
}
|
||||||
if(filter->iid) {
|
if(niimaqsrc->iid) {
|
||||||
rval = imgClose(filter->iid,TRUE);
|
rval = imgClose(niimaqsrc->iid,TRUE);
|
||||||
gst_niimaqsrc_report_imaq_error (rval);
|
gst_niimaqsrc_report_imaq_error (rval);
|
||||||
filter->iid = 0;
|
niimaqsrc->iid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (filter, "IMAQ interface closed");
|
GST_DEBUG_OBJECT (niimaqsrc, "IMAQ interface closed");
|
||||||
|
|
||||||
gst_caps_unref (filter->caps);
|
gst_caps_unref (niimaqsrc->caps);
|
||||||
filter->caps = NULL;
|
niimaqsrc->caps = NULL;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user