ksvideosrc: only list capture devices
authorAndoni Morales Alastruey <ylatuya@gmail.com>
Tue, 10 Feb 2015 12:32:00 +0000 (13:32 +0100)
committerAndoni Morales Alastruey <ylatuya@gmail.com>
Wed, 8 Apr 2015 16:45:08 +0000 (18:45 +0200)
sys/winks/kshelpers.c

index b6621de..3f7b2d2 100644 (file)
@@ -54,6 +54,7 @@ ks_enumerate_devices (const GUID * category)
   for (i = 0;; i++) {
     BOOL success;
     SP_DEVICE_INTERFACE_DATA if_data = { 0, };
+    SP_DEVICE_INTERFACE_DATA if_alias_data = { 0,};
     SP_DEVICE_INTERFACE_DETAIL_DATA_W *if_detail_data;
     DWORD if_detail_data_size;
     SP_DEVINFO_DATA devinfo_data = { 0, };
@@ -66,6 +67,13 @@ ks_enumerate_devices (const GUID * category)
     if (!success)               /* all devices enumerated? */
       break;
 
+    /* Enumerate only capture devices */
+    if_alias_data.cbSize = sizeof (SP_DEVICE_INTERFACE_DATA);
+    success = SetupDiGetDeviceInterfaceAlias (devinfo, &if_data, &KSCATEGORY_CAPTURE,
+        &if_alias_data);
+    if (!success)
+      continue;
+
     if_detail_data_size = (MAX_PATH - 1) * sizeof (gunichar2);
     if_detail_data = g_malloc0 (if_detail_data_size);
     if_detail_data->cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA_W);