mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
9.4 KiB
168 lines
9.4 KiB
<HTML>
|
|
<HEAD>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
|
|
<META NAME="Generator" CONTENT="Microsoft FrontPage 4.0">
|
|
<TITLE>atiwdm</TITLE>
|
|
<META NAME="Template" CONTENT="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
|
|
</HEAD>
|
|
<BODY TEXT="#000000" LINK="#0000ff" VLINK="#800080" BGCOLOR="#ffffff" leftmargin="8">
|
|
|
|
<FONT FACE="Verdana"><H2><A NAME="MYSAMPLE">ATIWDM –</A> WDM Streaming Video Capture Drivers
|
|
for the ATI All-In-Wonder and ATI All-In-Wonder Pro</H2>
|
|
<H3>SUMMARY</H3>
|
|
</FONT><FONT FACE="Verdana" SIZE=2><P>The ATIWDM project creates four separate
|
|
drivers which control the ATI All-In-Wonder video capture hardware. </P>
|
|
|
|
<UL>
|
|
<LI>ATIBT829.sys, the main video capture driver which controls the Brooktree
|
|
BT829 video digitizer </LI>
|
|
<LI>ATIXBar.sys, controls the board level audio and video routing </LI>
|
|
<LI>ATITuneP.sys, controls the TVTuner subsystem </LI>
|
|
<LI>ATITvSnd.sys, controls the TV audio decoder subsystem</LI></UL>
|
|
|
|
<B><P>General</P>
|
|
</B><P>The ATIWDM drivers control the All-In-Wonder (Pro) videoport based
|
|
capture device. This driver contains sample implementations for almost all of the property sets involved in WDM video capture. </P>
|
|
<P>The ATIWDM driver set allows for easy replacement of a single subsystem
|
|
without requiring complete recompilation and redistribution of the entire driver
|
|
set. For example, the supplied TvTuner driver for the Philips FR1236 tuner
|
|
could be replaced by a tuner from another vendor, without affecting the drivers
|
|
for the other hardware components. </P>
|
|
<P>All of the drivers are children of a parent device, either the Rage2 or
|
|
Rage128 graphics chip. The children query their parent for an I2C access
|
|
table and then make calls into the parent to perform I2C I/O operations. </P>
|
|
<B><P>ATIBT829.sys</P>
|
|
</B>
|
|
<blockquote>
|
|
<P>ATIBT829.sys appears as two separate filters in a DirectShow graph:
|
|
"AtiBt829 Capture" and "AtiBt829 Crossbar". Together
|
|
these two filters control all of the functionality present in the Brooktree 829
|
|
chip and control the capture process via the VPE Kernel mode
|
|
transport. </P>
|
|
<P>ATIBT829.sys is a fairly complex driver, in that it supports an input stream
|
|
representing analog video, two capture streams for video and VBI data, and two output connection points for DDraw surface allocation filters (Overlay
|
|
Mixer", and "VBI Surface Allocator". It also supports input selection via "BT829 Crossbar".<br>
|
|
<br>
|
|
The actual capture operation is implemented by an interface to Kernel DirectDraw. Capture buffers are passed to KDDraw, where they are filled
|
|
by a bus master operation.</P>
|
|
<P>The capture filter exposes four output streams and a single input
|
|
stream. The output streams are labeled Capture, VP (videoport), VPVBI (videoport
|
|
VBI) and VBI. The input stream is labeled AnalogVideoIn and represents the
|
|
analog video signal to be digitized. The crossbar portion represents the
|
|
input selection multiplexer built into the Brooktree 829 device.</P>
|
|
<P>The videoport driver is responsible for enumerating this device which causes
|
|
the device driver to be loaded. As an alternative, the driver could be
|
|
force installed by an .inf entry such as:</P>
|
|
<P>[ATI_M64.AIW.AddReg]<br>
|
|
HKR,"ENUM\Device2",pnpid,,"atibt829"<br>
|
|
</P>
|
|
</blockquote>
|
|
<B><P>ATIXBar.sys</P>
|
|
</B>
|
|
<blockquote>
|
|
<p> ATIXBAR is a sample WDM stream class Crossbar driver for the ATI All-In-Wonder and All-In-Wonder PRO devices. It manifests itself in
|
|
a DirectShow graph as "ATI Crossbar", and controls the routing of analog video and audio signals prior to digitization.
|
|
It also handles audio muting. Note that the All-In-Wonder exposes two crossbar filters. One is
|
|
contained with the BT829 video digitizer minidriver (ATIBT829.SYS), and controls video input selection. ATIXBAR controls all of the board
|
|
specific video routing and is a separate crossbar filter.</p>
|
|
<p>The videoport driver is responsible for enumerating this device which causes
|
|
the device driver to be loaded. As an alternative, the driver could be
|
|
force installed by an .inf entry such as::<br>
|
|
<br>
|
|
[ATI_M64.AIW.AddReg]<br>
|
|
HKR,"ENUM\Device3",pnpid,,"atixbar"<br>
|
|
</p>
|
|
</blockquote>
|
|
<p>
|
|
<B>ATITuneP.sys</p>
|
|
</B>
|
|
<blockquote>
|
|
<p> ATITUNEP is a sample WDM stream class TVTuner driver for the ATI All-In-Wonder and All-In-Wonder PRO
|
|
devices. It manifests itself in a DShow graph as "ATI TVTuner". It controls the following tuner
|
|
hardware (and any other hardware/software compatible devices):<br>
|
|
<br>
|
|
FR1236 - Philips FR1200 series TV and FM tuner family, including:<br>
|
|
FI1216 - CCIR B, G System (Western Europe)<br>
|
|
FI1216J - RTMA M+N System (Japan)<br>
|
|
FI1236 - RTMA M+N System (USA)<br>
|
|
FI1246 - CCIR I System (UK, Ireland, SA, H.K.)<br>
|
|
FI1256 - OIRT System (China, Russia, E. Europe)<br>
|
|
FI1216 - CCIR B,G, L, L1 System (W. Europe, SE Asia, OZ, NZ)<br>
|
|
FR1236MK2 - RTMN M+N System + FM (USA)<br>
|
|
</p>
|
|
<p>The videoport driver is responsible for enumerating this device which causes
|
|
the device driver to be loaded. As an alternative, the driver could be
|
|
force installed by an .inf entry such as:<br>
|
|
<br>
|
|
[ATI_M64.AIW.AddReg]<br>
|
|
HKR,"ENUM\Device1",pnpid,,"atitunep"<br>
|
|
</p>
|
|
</blockquote>
|
|
<B><P>ATITvSnd.sys</P>
|
|
</B>
|
|
<blockquote>
|
|
<p> ATITVSND is a sample WDM stream class TVSound driver for the ATI All-In-Wonder and All-In-Wonder PRO
|
|
devices. It manifests itself in a DShow graph as "ATI TVSound". It controls selection of audio
|
|
subchannels (SAP) as well as mono/stereo audio decoding.</p>
|
|
<p>The videoport driver is responsible for enumerating this device which causes
|
|
the device driver to be loaded. As an alternative, the driver could be
|
|
force installed by an .inf entry such as::<br>
|
|
<br>
|
|
[ATI_M64.AIW.AddReg]<br>
|
|
HKR,"ENUM\Device4",pnpid,,"atitvsnd"<br>
|
|
</p>
|
|
</blockquote>
|
|
<B><P>Keywords</B>: Video capture, WDM, stream class, TvTuner, crossbar, driver,
|
|
BT829, ATI.</P>
|
|
</FONT><FONT FACE="Verdana"><H3>BUILDING THE SAMPLE</H3>
|
|
<P><! ---------------- Snip Snip ---------------- ></FONT><FONT FACE="Verdana" SIZE=2>The sample is built with the standard DDK BUILD utility in the standard checked or free DDK build environment.
|
|
To build all drivers, change to the ATIWDM directory and type "build -cez".
|
|
</FONT></P>
|
|
<FONT FACE="Verdana"><H3>RESOURCES</H3>
|
|
</FONT><FONT FACE="Verdana" SIZE=2><P>This driver has been tested with the following applicatons: Graphedt.exe, AMCap.exe, WebTV for Windows.</P>
|
|
<P>This website contains general information on driver and hardware development:</P><DIR>
|
|
<DIR>
|
|
|
|
</FONT><P><A HREF="http://www.microsoft.com/hwdev">http://www.microsoft.com/hwdev</A><FONT FACE="Verdana" SIZE=2> </P></DIR>
|
|
</DIR>
|
|
|
|
<P>This website contains information on DirectShow:</P><DIR>
|
|
<DIR>
|
|
|
|
</FONT><P><A HREF="http://www.microsoft.com/directx">http://www.microsoft.com/directx</A> </P>
|
|
<FONT FACE="Verdana"><H3> </H3></DIR>
|
|
</DIR>
|
|
|
|
<H3>CODE TOUR</H3>
|
|
<H4>File Manifest</H4>
|
|
</FONT><U><PRE>File Description
|
|
</U><FONT FACE="Verdana"> </PRE>
|
|
</FONT><H4>Programming Tour</H4>
|
|
<FONT FACE="Verdana" SIZE=2><P>DriverEntry() is the initial point of entry for the driver. It initializes the hardware initialization structure and registers the secondary entry point functions. </P>
|
|
<P>HwReceivePacket field describes the entry point for receiving SRBs (Stream Request Packet) from stream class driver. Here is a possible sequence of SRBs that this driver may receive.</P>
|
|
<OL>
|
|
|
|
<LI>SRB_INITIALIZE_DEVICE to initialize the device, and called after DriverEntry().</LI>
|
|
<LI>SRB_GET_STREAM_INFO to get supported stream format.</LI>
|
|
<LI>SRB_GET_DATA_INTERSECTION to query a supported format given some key fields.</LI>
|
|
<LI>SRB_OPEN_STREAM to open a stream with supply format from SRB_GET_DATA_INTERSECTION. Two additional entry point functions are register for this stream for controlling the streaming state (Srb->StreamObject->ReceiveControlPacket) and for streaming data (Srb->StreamObject->ReceiveDataPacket). </LI>
|
|
<LI>SRB_CLOSE_STREAM to close the open stream.</LI>
|
|
<LI>SRB_UNINITIALIZE_DEVICE to indicate that a device has been unloaded or removed.</LI></OL>
|
|
|
|
<P>This driver also register entry points for canceling packets (HwCancelPacket) and for notifying if a packet has timeout (HwRequestTimeoutHandler). </P>
|
|
<B><P>Clocks</P>
|
|
</B><P>ATIBT829.sys, like most video capture drivers, does not act as clock source for a filter graph. </P>
|
|
<B><P>Frame rate and dropped frames</P>
|
|
</B><P>Digital cameras support discrete frame rates; however, a client application can request to stream at any rate. It is required by WDM video capture driver to either match or select the next lower frame rate available. Over sampling can cause synchronization problems. </P>
|
|
<P>The dropped frame information is calculated instead of actual count, and it is based on the capture rate and the actual counts of frames captured. </P>
|
|
<P> <B>Work items</P>
|
|
</B><P> </P>
|
|
</FONT><P ALIGN="CENTER"><A HREF="#top"><FONT FACE="Verdana" SIZE=2>Top of page</FONT></A><FONT FACE="Verdana" SIZE=2> </P></FONT>
|
|
<TABLE CELLSPACING=0 BORDER=0 WIDTH=624>
|
|
<TR><TD VALIGN="MIDDLE" BGCOLOR="#00ffff" HEIGHT=2>
|
|
<P></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<FONT FACE="MS Sans Serif" SIZE=1><P>© 1998 Microsoft Corporation</FONT><FONT FACE="Verdana" SIZE=2> </P></FONT></BODY>
|
|
</HTML>
|