void CameraOpen() { char name[256]; for (int i=0;;i++) { if (0 != imgInterfaceQueryNames(i, name)) break; dbgprintf("IMAQ interface: %s\n", name); } if (fastCMOS) CameraClose(); imgInterfaceOpen("img0", &ifid); imgSessionOpen(ifid, &session); fastCMOS = new FastCMOS(session); std::string info = fastCMOS->readInfo(); CameraConfigure(); int fps = fastCMOS->getFramerate().fps; dbgprintf("FPS: %d\n", fps); }
/** * gst_niimaqsrc_class_probe_interfaces: * @klass: #GstNiImaqClass * @check: whether to enumerate interfaces * * Probes NI-IMAQ driver for available interfaces * * Returns: TRUE always */ static gboolean gst_niimaqsrc_class_probe_interfaces (GstNiImaqSrcClass * klass, gboolean check) { if (!check) { guint32 n; gchar name[256]; /* clear interface list */ while (interfaces) { gchar *iface = interfaces->data; interfaces = g_list_remove (interfaces, iface); g_free (iface); } GST_LOG_OBJECT (klass, "About to probe for IMAQ interfaces"); /* enumerate interfaces, limiting ourselves to the first 64 */ for (n = 0; n < 64; n++) { guint32 iid; guint32 nports; guint32 port; gchar *iname; uInt32 rval; /* get interface names until there are no more */ if (rval = imgInterfaceQueryNames (n, name) != 0) { gst_niimaqsrc_report_imaq_error (rval); break; } /* ignore NICFGen */ if (g_strcmp0 (name, "NICFGen.iid") == 0) continue; /* try and open the interface */ if (rval = imgInterfaceOpen (name, &iid) != 0) { gst_niimaqsrc_report_imaq_error (rval); continue; } /* find how many ports the interface provides */ rval = imgGetAttribute (iid, IMG_ATTR_NUM_PORTS, &nports); gst_niimaqsrc_report_imaq_error (rval); rval = imgClose (iid, TRUE); gst_niimaqsrc_report_imaq_error (rval); /* iterate over all the available ports */ for (port = 0; port < nports; port++) { /* if the there are multiple ports append the port number */ if (nports > 1) iname = g_strdup_printf ("%s::%d", name, port); else iname = g_strdup (name); /* TODO: should check to see if a camera is actually attached */ interfaces = g_list_append (interfaces, iname); GST_DEBUG_OBJECT (klass, "Adding interface '%s' to list", iname); } } init = TRUE; } klass->interfaces = interfaces; return init; }