about Virtual Camera Driver

Hi guys,

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?

Best Regards.

Marvin

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.

Hi Tim,

Thanks for your nice introduction. I really appreciate your help.
I want to write a virtual camera driver, which can display the user’s
screen.
So user can share his screen to remote people with msn or other
communication tool.

Marvin

2010/11/12 Tim Roberts

> 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.
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Marvin(Fan) Zhang wrote:

Thanks for your nice introduction. I really appreciate your help.
I want to write a virtual camera driver, which can display the user’s
screen.
So user can share his screen to remote people with msn or other
communication tool.

I assume you are aware that there are dozens of products that do this
today, including several that are free. Googling for “screen capture
directshow source” produces nearly a quarter million hits.

This cannot be implemented entirely in kernel mode. A kernel driver
cannot access the desktop. You would need to create a DirectShow source
filter and register it as a video capture device.


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