Source code of Windows XP (NT5)
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

<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.&nbsp;&nbsp; </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.&nbsp; This driver contains sample implementations for almost all of the property sets involved in WDM video capture.&nbsp;&nbsp; </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.&nbsp; 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.&nbsp;&nbsp; </P>
<P>All of the drivers are children of a parent device, either the Rage2 or
Rage128 graphics chip.&nbsp; 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:&nbsp;
&quot;AtiBt829 Capture&quot; and &quot;AtiBt829 Crossbar&quot;.&nbsp; 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.&nbsp;&nbsp;</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.&nbsp; The output streams are labeled Capture, VP (videoport), VPVBI (videoport
VBI) and VBI.&nbsp; The input stream is labeled AnalogVideoIn and represents the
analog video signal to be digitized.&nbsp; 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.&nbsp; As an alternative, the driver could be
force installed by an .inf entry such as:</P>
<P>[ATI_M64.AIW.AddReg]<br>
HKR,&quot;ENUM\Device2&quot;,pnpid,,&quot;atibt829&quot;<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&nbsp;
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.&nbsp; 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.&nbsp; 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.&nbsp; 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 &quot;build -cez&quot;.&nbsp;&nbsp;
</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>&nbsp;</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-&gt;StreamObject-&gt;ReceiveControlPacket) and for streaming data (Srb-&gt;StreamObject-&gt;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>&nbsp;<B>Work items</P>
</B><P>&nbsp;</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>&copy; 1998 Microsoft Corporation</FONT><FONT FACE="Verdana" SIZE=2> </P></FONT></BODY>
</HTML>