Adding a processing filter to a UVC compatible camera

[novice question, hw guy]
Hello, I have an UVC compatible USB camera, I want to add an image processing module to be associated with the camera at plug-in that will change the image parameters.
Basically the camera should show to the OS/applications when connected as an imaging device offering the image parameters (size/depth) after being processed and not what the UVC device offers.

Also is there a standard or at least well accepted way to add a configuration channel to a camera device in Windows that is recognized by the programs, I don’t want to go yet to the GenICam route.

What is the best way to (Win 10 safe) to do it and are there any samples/docs of how to implement an USB camera device with image processing either from scratch or based on an exiting UVC transport ?

Many thanks for you help and excuse the newbie question if this is a well known topic, MC

xxxxx@gmail.com wrote:

Hello, I have an UVC compatible USB camera, I want to add an image processing module to be associated with the camera at plug-in that will change the image parameters.
Basically the camera should show to the OS/applications when connected as an imaging device offering the image parameters (size/depth) after being processed and not what the UVC device offers.

Also is there a standard or at least well accepted way to add a configuration channel to a camera device in Windows that is recognized by the programs, I don’t want to go yet to the GenICam route.

No, there is no standard way to do this. Windows abstracts the
hardware. It’s up to applications to decide if they want to do
processing on the output of the device.

Now, if you are building your own camera, and you always want there to
be post-processing, you can do that. You can change the camera to
advertise a custom format by GUID, and then write a DirectShow codec or
MediaFoundation transform to do your manipulations. The applications
that try to use your camera will then load your custom codec automatically.

But if you are trying to add special effects to an existing camera,
there’s no standard way to do that. AmCap will just load the camera and
render the pin. As long as there is a renderer that understands the
format, it will connect directly.

The problem you get into is similar to what happened with audio data
prior to Vista. Every cool engineer thought they could create audio
enhancements and special effects that everyone would want. Pretty soon,
your system had 9 effects filters, and audio performance turned to
crap. That was one of the strong incentives behind the audio system
design in Vista.

What processing do you want to do?

What is the best way to (Win 10 safe) to do it and are there any samples/docs of how to implement an USB camera device with image processing either from scratch or based on an exiting UVC transport ?

To put it succinctly, this is just not the right way to solve this
problem. You can do it in a custom application, but not in the general
case.

Having said that (and repeated it for emphasis), I also have to say that
almost everything is possible. I did a job for a client that wanted to
provide custom special effects on a camera for use with Skype. It was a
significant effort, involving a kernel filter driver, a user-mode
service and a communication protocol to pass the frames. It was about
15,000 lines of code. Because parts of the kernel streaming protocols
are undocumented, it’s probably not a good place for a beginner. If
you’d like to contact me off list, we can talk about possible directions.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.