framelinksrc: add (untested) support for multiple boards
This commit is contained in:
parent
17a360b8d2
commit
181607d15c
@ -129,7 +129,7 @@ gst_framelinksrc_class_init (GstFramelinkSrcClass * klass)
|
|||||||
DEFAULT_PROP_NUM_CAPTURE_BUFFERS,
|
DEFAULT_PROP_NUM_CAPTURE_BUFFERS,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
||||||
g_object_class_install_property (gobject_class, PROP_BOARD,
|
g_object_class_install_property (gobject_class, PROP_BOARD,
|
||||||
g_param_spec_uint ("board", "Board", "Board number (0 for auto)", 0, 7,
|
g_param_spec_uint ("board", "Board", "Board number", 0, 7,
|
||||||
DEFAULT_PROP_BOARD,
|
DEFAULT_PROP_BOARD,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
|
||||||
g_object_class_install_property (gobject_class, PROP_CHANNEL,
|
g_object_class_install_property (gobject_class, PROP_CHANNEL,
|
||||||
@ -278,6 +278,8 @@ gst_framelinksrc_start (GstBaseSrc * bsrc)
|
|||||||
GstVideoInfo vinfo;
|
GstVideoInfo vinfo;
|
||||||
int bpp, Bpp;
|
int bpp, Bpp;
|
||||||
VCECLB_CameraDataEx *ci;
|
VCECLB_CameraDataEx *ci;
|
||||||
|
VCECLB_EnumData enumData;
|
||||||
|
HANDLE hDevEnum;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (src, "start");
|
GST_DEBUG_OBJECT (src, "start");
|
||||||
|
|
||||||
@ -328,12 +330,24 @@ gst_framelinksrc_start (GstBaseSrc * bsrc)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: use VCECLB_InitByHandle */
|
/* enumerate devices */
|
||||||
src->grabber = VCECLB_Init ();
|
enumData.cbSize = sizeof (VCECLB_EnumData);
|
||||||
|
hDevEnum = VCECLB_EnumInit ();
|
||||||
|
while (VCECLB_EnumNext (hDevEnum, &enumData) == VCECLB_Err_Success) {
|
||||||
|
GST_DEBUG_OBJECT (src, "Found device: slot #%d, name '%s'",
|
||||||
|
enumData.dwSlot, enumData.pSlotName);
|
||||||
|
|
||||||
|
if (enumData.dwSlot == src->board) {
|
||||||
|
src->grabber = VCECLB_InitByHandle (enumData.pDeviceData, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
VCECLB_EnumClose (hDevEnum);
|
||||||
|
|
||||||
if (src->grabber == NULL) {
|
if (src->grabber == NULL) {
|
||||||
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
|
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
|
||||||
("Failed to initialize grabber (code %d)", VCECLB_CardLastError ()),
|
("Invalid board/device number or failed to initialize grabber (code %d)",
|
||||||
(NULL));
|
VCECLB_CardLastError ()), (NULL));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user