[BUG]: EyeToy only checks first Camera Device ( + Solution)
Describe the Bug
If you have more than 1 Camera on your device, the initialization of the Cam fails, if its not the first one in order from your machine. This happens, because it goes through the machines cameras in order, checks if its the one that is configured in the setting, and if not it breaks out of the loop, instead of continuing. (in: cam-windows.cpp - DirectShow::InitializeDevice) I made a personal build and changed the "if (!selectedDevice.empty() && selectedDevice != var.bstrVal){ break;}" to a continue; and everything worked perfectly
Reproduction Steps
Have 2 or more Cameras connected to you pc (or in my case: an Avermedia capture card) and select a cam for EyeToy, that is not first in order. It will fail to initialize the camera.
Expected Behavior
If you have more than 1 camera connected, it should always correctly start the one that has been configured in the settings. Not give up after checking if the first one is the right one
PCSX2 Revision
v2.9.53
Operating System
Windows 11
If Linux - Specify Distro
No response
Logs & Dumps
Log how it is currently: [ 381.1984] EyeToy : configured for MPEG format [ 381.2423] EyeToy : Image width : 320 [ 381.2583] EyeToy : Image height : 240 [ 381.2819] EyeToy : mirroring OFF [ 381.3014] EyeToy : mirroring OFF [ 381.3029] EyeToy : mirroring OFF [ 381.3030] EyeToy : mirroring OFF [ 381.3219] EyeToy : mirroring OFF [ 381.4217] EyeToy : mirroring ON [ 381.4818] EyeToy : Image width : 320 [ 381.4821] EyeToy : Image height : 240 [ 381.5005] EyeToy : configured for MPEG format [ 381.5604] EyeToy : Image width : 320 [ 381.5607] EyeToy : Image height : 240 [ 381.6205] EyeToy : Image width : 320 [ 381.6208] EyeToy : Image height : 240 [ 381.6417] EyeToy : mirroring ON [ 381.6622] EyeToy : initialization done; start the camera [ 381.6625] EyeToy : eyetoy_open(); hw=1, w=320, h=240, fmt=0, mirr=1 [ 381.6726] Camera: 'Elgato Facecam Neo' [ 381.6728] Camera: cannot find 'OBS Virtual Camera' [ 381.6730] (Eyetoy) Failed to open video device
Log with a continue, instead of a break: [ 14.4435] EyeToy : LED : 0 [ 14.4456] EyeToy : mirroring OFF [ 14.4640] EyeToy : mirroring OFF [ 14.4657] EyeToy : mirroring OFF [ 14.4658] EyeToy : mirroring OFF [ 14.4845] EyeToy : mirroring OFF [ 14.5844] EyeToy : mirroring ON [ 14.6448] EyeToy : Image width : 320 [ 14.6451] EyeToy : Image height : 240 [ 14.6632] EyeToy : configured for MPEG format [ 14.7231] EyeToy : Image width : 320 [ 14.7234] EyeToy : Image height : 240 [ 14.7613] EyeToy : mirroring OFF [ 14.7651] EyeToy : mirroring OFF [ 14.7665] EyeToy : mirroring OFF [ 14.7831] EyeToy : mirroring OFF [ 14.7854] EyeToy : mirroring OFF [ 14.8854] EyeToy : mirroring ON [ 14.9631] EyeToy : Image width : 320 [ 14.9633] EyeToy : Image height : 240 [ 14.9647] EyeToy : configured for MPEG format [ 15.0240] EyeToy : Image width : 320 [ 15.0243] EyeToy : Image height : 240 [ 15.0842] EyeToy : Image width : 320 [ 15.0845] EyeToy : Image height : 240 [ 15.1212] EyeToy : mirroring ON [ 15.1261] EyeToy : initialization done; start the camera [ 15.1263] EyeToy : eyetoy_open(); hw=1, w=320, h=240, fmt=0, mirr=1 [ 15.1351] Camera: 'Elgato Facecam Neo' [ 15.1353] Camera: 'DroidCam Source 2' [ 15.1354] Camera: 'OBS Virtual Camera' [ 15.1512] Camera: GetStreamCaps min=320x240 max=320x240, fmt=db6fc9f0 [ 15.1514] Camera: GetStreamCaps min=320x240 max=320x240, fmt=db6fc9f0 [ 15.1515] Camera: GetStreamCaps min=320x240 max=320x240, fmt=db6fc9f0
Source: PCSX2/pcsx2