Streaming Drv & A/V network streaming

Hi All,

In my project I need to catch audio/video control and data streams on
Computer1 and convey it to Computer2 on the same network. Pretending that
A/V (Camera, Mic)devices are connected to Computer2.

  1. I’d like the solution to be independent of the particular bus interface
    the A/V source device resides on (e.g. USB, PCI)
  2. I’d like it to work in both directions, i.e. an application on Computer2
    should be able to send data to devices on Computer1.
    So, I considered kernel streaming driver to be a possible solution to this
    maze.

Is there any samples and additional docs on the kernel streaming drivers ?
Am I on the right track here ?
Any help will be greatly appreciated.

Stas,
Powernet.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> In my project I need to catch audio/video control and data streams on

Computer1 and convey it to Computer2 on the same network. Pretending that
A/V (Camera, Mic)devices are connected to Computer2.

  1. I’d like the solution to be independent of the particular bus interface
    the A/V source device resides on (e.g. USB, PCI)
  2. I’d like it to work in both directions, i.e. an application on
    Computer2
    should be able to send data to devices on Computer1.
    So, I considered kernel streaming driver to be a possible solution to this
    maze.

Yup. A kernel streaming driver would do the trick. Kernel streaming drivers
are not trivial pieces of code, however. Especially if you want to support
both video and audio in the same driver. There aren’t any really good
samples out there for AV multiplexed kernel streaming drivers, but there is
a 1394 YUV camera sample in the Win 2000 DDK
\ntddk\src\wdm\videocap\1394dcam. It, however, supports only video and
supplies a major media type of “video” and subtype of UYVY, IYUV or RGB.
Its worth looking at. To add audio, instead of using a major media type of
“video”, you would use a major media type of “interleaved”.

If your AV protocols are “custom” (which they most likely would be) you
would need use a major media type of MEDIATYPE_Interleaved (iavs) and a
custom media subtype (maybe “cavs” for Custom AV Stream"). BTW, how are you
planning on physically connecting the machines together? If you are planning
to use ethernet, you get another whole set of issues…like accessing the
networking stack directly from the kernel streaming driver.

So you would need to do the following:

  1. Develop a kernel streaming driver that generates iavs/cavs samples. The
    ksproxy.ax DirectShow filter will then be able to interface to your kernel
    streaming driver. You would have to work out the low level protocols and
    facilitate the coming and going of the “samples”.

  2. Develop a DirectShow “splitter” filter that would split your “cavs” AV
    samples into video and audio components and media types that other filters
    in the DirectShow filter graph could connect to. For Video, this might be
    MEDIATYPE_Video, subtype YUY2. For Audio, this might be MEDIATYPE_Audio,
    subtype PCMAudio.

  3. Run the filter graph and ‘voila, you should be rockin’ and rollin’.

There are a few others details that you would need to work out ;-), but
these are the large brush strokes.

Thomas “Rick” Tewell
Ligos Corporation


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com