Marvin(Fan) Zhang wrote:
I want to develop a virtual camera driver. I find three examples in
DDK refer to camera, one is AVStream , another is TestCap(or USBIntel
example), the other is BDA. Some people said AVStream is new framework
of camera. Could you help me to explain what’s the difference of them?
And which model should I refer?
It’s interesting to think about AVStream as “new”, since it was actually
introduced in the 20th Century.
The three models you mention are related. TestCap uses “kernel
streaming version 1”. It simulates a full TV capture chain, including
tuner, crossbar, video, and VBI streams. It is fairly complicated. It
is also very old; it was dropped from the Vista WDK, so you’d have to go
back to 2003 to find it.
AVStream is “kernel streaming version 2”. It uses the same basic
mechanism, but simplifies much of the tedious boilerplate processing.
Instead of responding to a billion different property requests, you set
up data structures instead, and the KS framework responds to the
boilerplate properties for you.
BDA is a (relatively thin) layer on top of AVStream, designed to
simplify capture devices for HDTV, where the video source can be thought
of as a “network”.
If I were starting a kernel virtual camera driver, I’d go with
AVStream. There are two AVStream samples in the WDK; avshws is probably
the most useful for you.
HOWEVER, you should tell us a bit more about what you are attempting to
do, because you don’t actually need to write a kernel driver at all to
create a virtual camera. You can write a DirectShow source filter in
user mode, and register it as a video capture device. Such a filter
will be seen by all DirectShow applications as a video camera. That’s a
much easier way to go than digging into a kernel driver model.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.