Modern webcams, like Logitech, often have features available through their proprietary software, that I don't see available in DirectShow, or in the interface that shows up, the one that's typically used to setup webcam parameters in software like VirtualDub or OBS.
For example, Logitech Brio has "HDR" and "FOV" switch, and Logitech C930 has an FOV switch also. I assume it must be somehow possible to access these without the proprietary software, right? Or is it ONLY accessible through Logitech's software and there is no way to set it from code otherwise?
Related
I'm playing with the "Capture Source Filter" from http://tmhare.mvps.org/downloads.htm.
After registering the ax driver, I'm trying to understand its compatibility across applications that use video sources.
For example, Skype recognize it while browsers (Edge, Chrome) don't.
I wonder if it's a limitation of the used approach (DirectShow filter) or it's just a matter of configuration.
The purpose of the question is to understand if that approach is still useful or it's better to move on Media Foundation.
I described this here: Applicability of Virtual DirectShow Sources
Your virtual camera and the applications capable to recognize and pick it up are highlighted with green on the figure below.
... if that approach is still useful or it's better to move on Media Foundation.
Media Foundation does not even have a concept of virtual video source. It does not have a compatibility layer to connect to DirectShow video sources. Obviously, in other direction DirectShow applications won't be able to see virtual Media Foundation streams (well, again, because they do not exist in compatible concept in first place).
If you want to expose your video source to all applications, you need a driver for this (see red box on the figure above). Applciations exist out there that implement such concept, even though writing a new one from the ground up is not something compatibly easy with the DirectShow virtual source you referenced in your question.
Further reading on MSDN on Media Foundation: How to register a live media source - media foundation
Though it is technically possible to write a virtual driver that shows up as a capture device, policies will probably prevent this. In Media Foundation, a device must have a certificate to appear as a capture device, and so far only actual hardware devices through the USB video class driver have been certified. Supporting a scheme through a scheme handler, or a file type with a byte stream handler, is the way to expose a new source to applications.
I've been experimenting with two cameras, one is a webcam and another is an evaluation-kit camera that comes with its own drivers, I can run AMCAP.exe (provided from Vimicro) and it will display live streaming from the connected camera (any of the two) although each one uses a different driver.
My question is: Is it safe to assume that AMCAP.exe is only running as a video-stream display program?
In which case, I assume that most camera vendors follow a common standard interface for camera drivers. Could anyone comment on such assumption or explain how AMCAP.exe is able to do that.
I've been able to use both cameras in my c++ based OpenCv applications, but I'm asking because a 3rd company is going to provide me with a usb board-based camera (for evaluation) and they are asking about driver specs. so I suggested that it should work with windows default driver similar to how a webcam would so as to avoid compatibility issues but I'm wondering if there is a better option that I might be missing.
Note I: I've been able to verify that different drivers are being used for each camera by: Start->Devices and Printers->USB 2.0 Camera->Hardware tabe->USB 2.0 camera->Driver->Driver Details. When the webcam is connected, it is using the microsoft provided driver files: ksthunk.sys and usbvideo.sys. When I disconnect the webcam and connect the evaluation camera, I am able to verify that it is using it's own (non-windows) driver.
Note II: Vimicro's AMCAP.exe can be downloaded from: VIMICRO USB PC Camera (VC0303) - CNET Download.com
Note III: Computer is core i7. OS is win7 64bit.
Any help or input on this is truly appreciated and immensely needed.
Best,
Hasan.
Camera drivers must implement the OS-defined interface which isn't different for various devices of the same category (in your case it's USB camera). Default drivers for some devices are bundled with Windows and it's ok to use them. However, they aren't necessary optimal for each and every device. E.g., for cameras they might support only a limited set of supported resolutions or might not be optimal with power saving (just an example, not necessary what really happens!). This is because MS implements only the basic and necessary functionality that must be present in every device and doesn't depend on proprietary HW of various vendors. Dedicated camera driver should provide all the additional functionality - you're the one to decide if it's important for you or not.
So, we've got a little graphical doohickey that needs to run in a server environment without a real video card. All it really needs is framebuffer objects and maybe some vector/font anti-aliasing. It will be slow, I know. It just needs to output single frames.
I see this post about how to force software rendering mode, but it seems to apply to machines that already have OpenGL enabled cards (like NVidia).
So, for fear of trying to install OpenGL on a machine three time zones away with a bunch of live production sites on it-- has anybody tried this and/or know how to "emulate" an OpenGL environment? Unfortunately our dev server HAS a video card, so I can't really show "what I've tried".
The relevant code is all in Cinder, but I think our actual OpenGL utilization is lightweight for this purpose.
This would run on windows server 2008 Standard
I see MS has a software implementation for OGL 1.1, but can't seem to find one for 2.0
Build/find some Mesa DLLs.
It will be slow.
I'm trying to send information like close captioning to a special VGA monitor that can read the RGB data lines during the BVI. The data is used for synchronization with other devices.
I cannot find information regarding any Windows API to do so. Is there any OS that has these services? Is there any support in the standard video boards to do this kind of tweaking?
The closes I get is some DirectX API functions that can parse "Line 21" data from DVD streams but nothing to encode "Line 21" data to be send out of the VGA connector.
You'll need more information about exactly how the monitor is doing this. It may be using some sort of extension to DDC/CI. If so, you may be able to access it reasonably easily (starting with Vista, Windows has some functions for working with DDC, though mostly with the basic, widespread capabilities like adjusting brightness and contrast).
If you need to work with older versions of Windows than Vista, some third party software supports that.
It could also be doing something else entirely -- in which case, it's open to question not only whether Windows will support it, but whether you may need a special video card to use it at all. Windows can only use what the video card's driver (and ultimately, the hardware) support, so unless it is something well known like DDC, chances are pretty good that a generic video card won't support it.
Is it possible to access the camera in a Macbook with REALbasic? I'd like to allow a user to capture an image from the camera.
Found 3 possible solutions:
a free plugin:
CamCapture
This should work for anyone needing an easy method to capture images from the built-in iSight camera. It should also work for other QuickTime capable camera sources. There is an example project but no documentation. FYI- the site and example is in French.
Commercial option, which I wasn't able to try is QTKit from MonkeyBread Software. This option is not free, but is documented and supported, unlike the free option.
realcapture is a free, unsupported RB canvas. It uses declares to access the camera.