WDM Video Streaming Device Drivers

Hi,

I am currently looking into what it will take to get a USB camera developed
by a customer of mine to fit into the new WDM Video Stream Architecture. I
have been reading up on the subject, and have a few questions

My camera has 2 Bulk Endpoints (IN/OUT) and an Interrupt Endpoint. The
camera uses the ISO PIMA 15740 command language. The logic to start the
video stream is as follows.

  1. Host sends start command over Bulk Out
  2. Host receives success response from Bulk IN
  3. As each frame is captured the camera sends an event on the Interrupt
    endpoint
  4. Host receives Interrupt from endpoint and retrieves the frame using Bulk
    OUT to request and Bulk IN to read

Currently we have a custom WDM USB device driver that uses a custom DLL (The
DLL constructs the appropriate commands (PIMA) to be sent to the driver and
to the camera) and provides an interface for a custom Video Viewer
Application. This solution is currently working great, except it does not
work with anything that does not talk directly to the Custom DLL.

NOW FOR MY QUESTIONS !

  1. Based on my reading, I think I have to implement a MINI port driver that
    will fit into the WDM Video Stream architecture, possibly using the USB
    Video Camera class driver. Is this correct ? If I do this will any
    application that uses DirectShow be able to display the images retrieved
    from the camera.

  2. Is it the job of the MINI port driver to take care of all the camera
    specific tasks (Constructing and sending PIMA commands in this case) to the
    camera).

Thanks in advance !

-Chris

Christopher Pane
Software Engineer
Vanteon

2851 Clover Street
Pittsford, NY 14534
Tel: (716) 248-0510 (Ext 232)
Fax: (716) 248-0537

email: xxxxx@vanteon.com
web: www.vanteon.com

> 1. Based on my reading, I think I have to implement a MINI port driver
that

will fit into the WDM Video Stream architecture, possibly using the USB
Video Camera class driver. Is this correct ? If I do this will any
application that uses DirectShow be able to display the images retrieved
from the camera.

Yes.

  1. Is it the job of the MINI port driver to take care of all the camera
    specific tasks (Constructing and sending PIMA commands in this case) to
    the
    camera).

Yes.

There are KS samples in the DDK - even some USB camera.

Max

Thanks for the reply !

I have continued my reseach and have yet another questions.

I am reading the DDK Help files on using the USBCAMD class driver and it
uses isochronous frames for video and Bulk Pipes for still. Since my camera
does not support an isochronous endpoint, can I still use USBCAM.

If not, should I be developing a MINI driver that sits in the STream
architecture along side of where the USBCAM would site. (i.e. since my
hardware does not support ISOC endpoints, I have to do the work of managing
the incoming frames).

As I said in my earlier email, our protocol for frame delivery is one of
recieveing interrupts on an interrupt endpoint, and requesting the frame via
PIMA command for each interrupt. I would need to notifiy the Stream class
driver above me that I have another frame for it to pass up.

Thanks

-Chris

Christopher Pane
Software Engineer
Vanteon

2851 Clover Street
Pittsford, NY 14534
Tel: (716) 248-0510 (Ext 232)
Fax: (716) 248-0537

email: xxxxx@vanteon.com
web: www.vanteon.com

-----Original Message-----
From: Maxim S. Shatskih [mailto:xxxxx@storagecraft.com]
Sent: Thursday, October 12, 2000 6:37 PM
To: NT Developers Interest List
Subject: [ntdev] Re: WDM Video Streaming Device Drivers

> 1. Based on my reading, I think I have to implement a MINI
port driver
that
> will fit into the WDM Video Stream architecture, possibly
using the USB
> Video Camera class driver. Is this correct ? If I do this will any
> application that uses DirectShow be able to display the
images retrieved
> from the camera.

Yes.

> 2. Is it the job of the MINI port driver to take care of
all the camera
> specific tasks (Constructing and sending PIMA commands in
this case) to
the
> camera).

Yes.

There are KS samples in the DDK - even some USB camera.

Max


You are currently subscribed to ntdev as: xxxxx@vanteon.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

Thanks for your reply -

So let me make sure I understand what you are saying as since I posted my
mail I have done some more research into USBCAM.

  1. USB CAM is designed to work with isochronous endpoints when being used to
    capture video streams. Since my camera uses BULK/INTERRUPT endpoints to
    implement video streams I can’t take advantage of what USBCAM has to offer.

If my camera DID use isochronous endpoints I could use USBCAM to
send/recieve frames from the camera, etc. The value add here is that I would
not even have to worry much about talking to USB.

On a side note, I noticed that USBCAM did support a BULK configuration for
Still Frames being sent via a pull model. Is this something I could use, or
is it really only for Still Frames. (I was thinking that really what my
camera is doing is sending me one still frame at a time so maybe there was a
fit here)

  1. What you reccomend I do is implement a KS Mini Driver that will take care
    of all the details of sending the correct camera command to Start/Stop the
    Video Stream. This Mini Port Driver will also make USB calls to the camera,
    much like the first driver I developed for this camera. (Which was a
    complete USB driver that talked to a custom appliaction). This Mini would
    also probobly have to take each frame, and get it into a format supported by
    the video stream class driver. (My camera is currently sending me JPEGS)

  2. Once I implement this Mini Driver, any appliaction that uses the Direct
    Show API (i.e. Net Meeting) will be able to display the Video Capture data
    from my camera.

Again, Thank you very much for your replies

-Chris

USBCAMD is intended for isochronous endpoint streaming devices. It is a
KERNEL DLL that simplifies the job of writing a USB camera driver.
However,
each camera vendor is still responsible for writing the actual STREAM
class
minidriver for their device. The stream class minidriver should have a
set
of pending SRBs that it can fill with data and complete. In your case,
your
minidriver would simply be like any other capture driver in terms of KS
property sets and pins. I would suggest that you look at TESTCAP (in
the
Windows DDK) as a staring point for your efforts.

-----Original Message-----
From: Pane, Chris [mailto:xxxxx@vanteon.com]
Sent: Thursday, October 12, 2000 4:37 PM
To: NT Developers Interest List
Subject: [ntdev] Re: WDM Video Streaming Device Drivers

Thanks for the reply !
I have continued my reseach and have yet another questions.
I am reading the DDK Help files on using the USBCAMD class driver and it
uses isochronous frames for video and Bulk Pipes for still. Since my
camera
does not support an isochronous endpoint, can I still use USBCAM.
If not, should I be developing a MINI driver that sits in the STream
architecture along side of where the USBCAM would site. (i.e. since my
hardware does not support ISOC endpoints, I have to do the work of
managing
the incoming frames).
As I said in my earlier email, our protocol for frame delivery is one of
recieveing interrupts on an interrupt endpoint, and requesting the frame
via
PIMA command for each interrupt. I would need to notifiy the Stream
class
driver above me that I have another frame for it to pass up.
Thanks
* Chris

Christopher Pane
Software Engineer
Vanteon

2851 Clover Street
Pittsford, NY 14534
Tel: (716) 248-0510 (Ext 232)
Fax: (716) 248-0537

email: xxxxx@vanteon.com
web: www.vanteon.com

-----Original Message-----
From: Maxim S. Shatskih [mailto:xxxxx@storagecraft.com]
Sent: Thursday, October 12, 2000 6:37 PM
To: NT Developers Interest List
Subject: [ntdev] Re: WDM Video Streaming Device Drivers

> 1. Based on my reading, I think I have to implement a MINI
port driver
that
> will fit into the WDM Video Stream architecture, possibly
using the USB
> Video Camera class driver. Is this correct ? If I do this will any
> application that uses DirectShow be able to display the
images retrieved
> from the camera.

Yes.

> 2. Is it the job of the MINI port driver to take care of
all the camera
> specific tasks (Constructing and sending PIMA commands in
this case) to
the
> camera).

Yes.

There are KS samples in the DDK - even some USB camera.

Max


You are currently subscribed to ntdev as: xxxxx@vanteon.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)


You are currently subscribed to ntdev as: xxxxx@exchange.microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)