Add fallback for getting device path.
Description
For various software devices i have, the devicePath remains empty upon DShow::Device::EnumVideoDevices(). I have implemented a fallback method for getting the devicepath.
Motivation and Context
I'd like to have device paths for as many devices, software or hardware, as possible.
How Has This Been Tested?
I have run enumDevices, called from my own application, and devicePaths for software devices are now created. DShow::Device.SetVideoConfig() also works fine for a software device with this now non-empty path.
Types of changes
Unclear to me, seems to be a new feature.
Checklist:
- [x] My code has been run through clang-format.
- [x] I have read the contributing document.
- [x] My code is not on the master branch.
- [x] The code has been tested.
- [x] All commit messages are properly formatted and commits squashed where appropriate.
- [x] I have included updates to all appropriate documentation.
Are there specific devices where you ran into issues that we could verify with?
I have observed this with two devices, both https://obsproject.com/forum/resources/obs-virtualcam.949/, and the directshow adapter for Basler machine vision cameras (part of their Pylon runtime)--the latter you can't test without having a Basler camera i think. These are both software devices i guess.
Ping on this one. Its also how ffmpeg's dshow gets their device paths
And sorry to canabalize this PR, but i can't post issues to this repo. Is it being considered to re-apply https://github.com/obsproject/libdshowcapture/commit/8f2ef910bae88163abd904dd0eeaf027fd09c10a? I would love to have this functionality. Anything i can do to help?