niimaqsrc: minor formatting changes and doc updates

This commit is contained in:
Joshua M. Doe 2010-04-20 14:07:17 -04:00
parent 91a8ce057e
commit bc1b73b0ee

View File

@ -575,7 +575,8 @@ gst_niimaq_create (GstPushSrc * psrc, GstBuffer ** buffer)
data = g_malloc(src->framesize);
GST_INFO_OBJECT(src, "Examining buffer %d", src->cumbufnum);
GST_DEBUG_OBJECT(src, "Requesting to examine IMAQ buffer %d", src->cumbufnum);
rval=imgSessionExamineBuffer2(src->sid, src->cumbufnum, &newval, &bufaddr);
if (rval) {
GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
@ -583,17 +584,22 @@ gst_niimaq_create (GstPushSrc * psrc, GstBuffer ** buffer)
goto error;
}
GST_DEBUG_OBJECT (src, "Examining IMAQ buffer %d", newval);
/* TODO if rows aren't aligned then copy by row */
memcpy (data, (guchar *) bufaddr,
src->framesize);
imgSessionReleaseBuffer(src->sid);
GST_INFO_OBJECT(src, "Releasing buffer %d", newval);
GST_DEBUG_OBJECT (src, "Releasing buffer %d", newval);
*buffer = gst_buffer_new ();
GST_BUFFER_DATA (*buffer) = data;
GST_BUFFER_MALLOCDATA (*buffer) = data;
GST_BUFFER_SIZE (*buffer) = src->framesize;
/* set caps of src pad to buffer */
caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc));
gst_buffer_set_caps (*buffer, caps);
gst_caps_unref (caps);
@ -605,13 +611,15 @@ gst_niimaq_create (GstPushSrc * psrc, GstBuffer ** buffer)
//}
dropped = newval - src->cumbufnum;
if(dropped) {
if (dropped > 0) {
src->n_dropped_frames += dropped;
GST_WARNING_OBJECT (src, "Dropped %d frames (%d total)", dropped, src->n_dropped_frames);
}
/* set cumulative buffer number to get next frame */
src->cumbufnum = newval + 1;
src->n_frames++;
//if (src->rate_numerator != 0) {
// src->running_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
// src->rate_denominator, src->rate_numerator);
@ -625,7 +633,19 @@ error:
}
}
/**
* gst_niimaq_parse_caps:
* caps: #GstCaps
* width:
* height:
* rate_numerator:
* depth:
* bpp:
*
* Parses a given caps and sets critical values
*
* Returns: TRUE on success
*/
static gboolean
gst_niimaq_parse_caps (const GstCaps * caps,
gint * width,
@ -641,20 +661,19 @@ gst_niimaq_parse_caps (const GstCaps * caps,
structure = gst_caps_get_structure (caps, 0);
ret = gst_structure_get_int (structure, "width", width);
ret &= gst_structure_get_int (structure, "height", height);
framerate = gst_structure_get_value (structure, "framerate");
ret &= gst_structure_get_int (structure, "depth", depth);
ret &= gst_structure_get_int (structure, "bpp", bpp);
ret = gst_structure_get (structure,
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"framerate", G_TYPE_VALUE, framerate,
"depth", G_TYPE_INT, depth,
"bpp", G_TYPE_INT, bpp,
NULL);
if (framerate) {
*rate_numerator = gst_value_get_fraction_numerator (framerate);
*rate_denominator = gst_value_get_fraction_denominator (framerate);
} else {
}
else {
ret = FALSE;
}
@ -671,18 +690,33 @@ gst_niimaq_set_caps_color (GstStructure * gs, int bpp, int depth)
gst_structure_set (gs,
"bpp", G_TYPE_INT, bpp,
"depth", G_TYPE_INT, depth, NULL);
if(depth>8)
gst_structure_set(gs, "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,NULL);
if (depth > 8) {
gst_structure_set(gs,
"endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
NULL);
}
return ret;
}
/**
* gst_niimaq_set_caps_framesize:
* gs: #GstStructure
* width: width to set
* height: height to set
*
* Sets the given width and height to the given #GstStructure
*
* Returns: TRUE on success
*/
static gboolean
gst_niimaq_set_caps_framesize (GstStructure * gs, gint width, gint height)
{
gst_structure_set (gs,
"width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
NULL);
return TRUE;
}
@ -750,6 +784,8 @@ gst_niimaq_get_cam_caps (GstNiImaq * src)
rval &= imgGetAttribute(src->iid, IMG_ATTR_ROI_HEIGHT, &val);
height = val;
GST_DEBUG_OBJECT (src, "width=%d, height=%d", width, height);
if (rval) {
GST_ELEMENT_ERROR (src, STREAM, FAILED,
("attempt to read attributes failed"),
@ -788,7 +824,7 @@ gst_niimaq_start (GstBaseSrc * src)
Int32 rval;
int i;
GST_LOG_OBJECT (filter, "Opening camera interface: %s", filter->interface_name);
GST_LOG_OBJECT (filter, "Opening IMAQ interface: %s", filter->interface_name);
filter->iid = 0;
filter->sid = 0;
@ -796,16 +832,16 @@ gst_niimaq_start (GstBaseSrc * src)
rval=imgInterfaceOpen(filter->interface_name,&(filter->iid));
if (rval) {
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open camera interface"),
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open IMAQ interface"),
("Failed to open camera interface %s", filter->interface_name));
goto error;
}
GST_LOG_OBJECT (filter, "Opening camera session: %s", filter->interface_name);
GST_LOG_OBJECT (filter, "Opening IMAQ session: %s", filter->interface_name);
rval=imgSessionOpen(filter->iid, &(filter->sid));
if (rval) {
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open camera session"),
GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to open IMAQ session"),
("Failed to open camera session %d", filter->sid));
goto error;
}
@ -823,18 +859,17 @@ gst_niimaq_start (GstBaseSrc * src)
goto error;
}
//GST_LOG_OBJECT (filter, "Registering callback functions");
//rval=imgSessionWaitSignalAsync2(filter->sid, IMG_SIGNAL_STATUS, IMG_BUF_COMPLETE, IMG_SIGNAL_STATE_RISING, Imaq_BUF_COMPLETE, filter);
//if(rval) {
/*GST_LOG_OBJECT (filter, "Registering callback functions");
rval=imgSessionWaitSignalAsync2(filter->sid, IMG_SIGNAL_STATUS, IMG_BUF_COMPLETE, IMG_SIGNAL_STATE_RISING, Imaq_BUF_COMPLETE, filter);
if(rval) {
// GST_ELEMENT_ERROR (filter, RESOURCE, FAILED, ("Failed to register BUF_COMPLETE callback"),
// ("Failed to register BUF_COMPLETE callback"));
// goto error;
//}
GST_LOG_OBJECT (filter, "Starting acquisition");
}*/
rval=imgSessionStartAcquisition(filter->sid);
/* Try to open the camera several times */
i = 0;
while (rval != 0 && i++ < 5) {
g_usleep (50000);
@ -852,7 +887,7 @@ gst_niimaq_start (GstBaseSrc * src)
goto error;
}
GST_LOG_OBJECT (src, "got transmision status ON");
GST_LOG_OBJECT (filter, "Starting acquisition");
return TRUE;