Learning Center
Plans & pricing Sign in
Sign Out

Advanced FTP_ or Teaching Fido To Phetch


									Microsoft DirectX Overview
Microsoft Corporation

November 2000

Summary: This article provides a high-level explanation of Microsoft DirectX and the components that

make up the DirectX application programming interfaces (APIs). (16 printed pages)



The Power of DirectX Graphics

    What’s New in DirectX Graphics

The Power of DirectX Audio

    What's New in DirectX Audio

The Power of DirectPlay

    What's New in DirectPlay

The Power of DirectInput

    What's New in DirectInput

The Power of DirectShow

    What's New in DirectShow


Microsoft® DirectX® is a group of technologies designed by Microsoft to make Microsoft® Windows® -

based computers an ideal platform for running and displaying applications like games that are rich in real-

time full-color 3-D graphics, video, interactive music, and surround sound. Built directly into the Windows

family of operating systems, DirectX is an integral part of Microsoft Windows 98, Microsoft Windows

Millennium Edition (Me), and Microsoft Windows 2000, as well as Microsoft Internet Explorer. If required,

DirectX components will also be automatically updated in the operating system by the latest games and

multimedia applications as part of their installation.

DirectX gives software developers a consistent set of APIs (application programming interfaces) that

provides them with improved access to the advanced features of high-performance hardware such as 3-D

graphics accelerators and sound cards. These APIs control what are called “low-level functions,” including

graphics memory management and rendering; support for input devices such as joysticks, keyboards, and

mice; and control of sound mixing and sound output. The low-level functions are grouped into components

that make up DirectX: Microsoft Direct3D®, Microsoft DirectDraw®, Microsoft DirectInput®, Microsoft

DirectMusic®, Microsoft DirectPlay®, Microsoft DirectSound®, and Microsoft DirectShow®.
DirectX provides developers with tools that help them get the best possible performance from the

machines they use. It provides explicit mechanisms for applications to determine the current capabilities

of your system’s hardware so they can enable optimal performance.

Before DirectX, developers creating multimedia applications for PCs had to customize their products so

that the products would work well on the wide variety of hardware devices and configurations available on

Windows machines. DirectX provides a “hardware abstraction layer” (HAL for short) that uses software

drivers to communicate between game software and computer hardware. As a result, developers can use

the single consistent paradigm of DirectX to implement their products across a wide range of hardware

devices and configurations.

The Power of DirectX Graphics

PC graphics technology is advancing more rapidly than any other platform. Microsoft Direct3D enables

computers running Microsoft Windows to display the most advanced interactive 3-D graphics available on

any platform. It enables applications to access the latest hardware accelerated 3-D technologies designed

for rendering such graphics. It allows the quality of graphics experience needed to meet and go beyond

the needs of games ported from any entertainment platform.

Direct3D is a low-level 3-D API that is ideal for developers who need to provide powerful media

experiences like games or high-performance multimedia applications to the Windows operating system.

Other applications such as Web 3-D components, 3-D authoring tools (like modelers and animation

systems), as well as technical applications (like CAD, simulation systems, and scientific visualization)

operate efficiently on PCs.

Direct3D provides excellent game graphics on computers running Windows 95 or later, or Windows 2000.

Direct3D for DX6 added:

        Flexible vertex format for geometry definition

        Vertex buffers for geometry storage

        Multi-Texture rendering

        Automatic texture management

        Switchable depth buffering (using z-buffers or w-buffers).

        Per-pixel environment mapping via BUMPENVMAP for glistening surfaces and water effects

        Full support on Windows 95 and Windows 98.
Direct3D for DirectX 7.0 includes:

        Hardware transform and hardware lighting support

        Environment mapping with cubic environment maps

        Geometry blending

        Improved automatic texture management

        Automatic texture coordinate generation, texture transforms, projected textures, and arbitrary

    clipping planes.

        D3DX utility library

        Full support on Windows 95, Windows 98, Windows Me, and Windows 2000.

        Support for the Intel MMX architecture, Intel Streaming Single-Instruction, Multiple-Data (SIMD)

    Extensions (SSE)®, and AMD® 3DNow® architecture.

Direct3D enables a low-overhead connection to 3-D hardware. This comes at a price, however. You must

provide explicit calls for transformations and lighting, you must provide all the necessary matrices, and

you must determine what kind of hardware is present and its capabilities.

What's New in DirectX Graphics

Microsoft DirectX 8.0 maintains backward compatibility by exposing and supporting all objects and

interfaces offered by previous releases of DirectX. Beyond that, Direct3D adds many new features and

performance enhancements as part of the new DirectX 8.0 Microsoft Direct3D API interfaces.

Complete integration of DirectDraw and Direct3D
Simplifies application initialization and improves data allocation and management performance, which
reduces memory footprint. Geometry and texture objects can be managed in a consistent way, with a
much more flexible paradigm for defining geometry input streams.

Programmable vertex processing language
Enables developers to write custom shaders for morphing and tweening animations, matrix palette
skinning, user-defined lighting models, general environment mapping, procedural geometry operations, or
any other developer-defined algorithm.

Programmable pixel processing language
Enables programmers to write custom hardware-accelerated shaders for general texture and color
blending expressions, per-pixel lighting (bump mapping), per-pixel environment mapping for photo-real
effects, or any other developer-defined algorithm.

Multisampling rendering support
Enables full-scene anti-aliasing and multisampling effects, such as motion blur and depth-of-field blur.

Point sprite support
Enables high-performance rendering of particle systems for sparks, explosions, rain, snow, and so on.
3-D volumetric textures
Enable flexible texturing of arbitrary geometry, range attenuation in per-pixel lighting and volumetric
atmospheric effects.

Higher-order primitive support
Enhances the appearance of 3-D content by creating smoother geometric shapes, which can also be more
easily imported from major 3-D authoring tools.

Higher-level technologies
Includes 3-D content creation tool plug-ins for export to Direct3D of skinned meshes using a variety of
Direct3D techniques, multiresolution level-of-detail (LOD) geometry, and higher-order primitive surface

Indexed vertex blending
Extends geometry blending support to allow the matrices used for vertex blending to be referred to using
a matrix index.

Expansion of the Direct3DX Utility Library
D3DX contains a wealth of new functionality. The Direct3DX utility library is a helper layer that sits on top
of Direct3D to simplify common tasks encountered by 3-D graphics developers. Includes a skinning
library, support for working with meshes, and functions to assemble vertex and pixel shaders. Note that
the functionality supplied by D3D_OVERLOADS, first introduced with Microsoft DirectX 5.0, has been
moved to the Direct3DX utility library.

The Power of DirectX Audio

DirectX Audio does much more than simply play sounds. It provides a complete system for implementing

a dynamic soundtrack that takes advantage of hardware acceleration, Downloadable Sounds (DLS) DirectX

Media Objects (DMOs) and advanced 3-D positioning effects.

By using the DirectMusic and DirectSound interfaces in your application, you can do the following:

        Load and play sounds from files or resources in MIDI, wave, or DirectMusic Producer run time


        Play from multiple sources simultaneously.

        Schedule the timing of musical events with high precision.

        Send tempo changes, patch changes, and other MIDI events programmatically.

        Use Downloadable Sounds. By using the DLS synthesizer, an application can be sure that

    message-based music sounds the same on all computers. An application can also play an unlimited

    variety of instruments and even produce unique sounds for individual notes and velocities.

        Locate sounds in a 3-D environment.

        Easily apply pitch changes, reverb, and other effects to sounds.

        Use more than 16 MIDI channels. DirectX Audio breaks through the 16-channel limitation and

    makes it possible for any number of voices to be played simultaneously, up to the limits of the

        Play segments on different audiopaths, so that effects or spatialization can be applied individually

    to each sound.

        Capture MIDI data or stream ("thru") it from one port to another.

        Capture wave sounds from a microphone or other input.

If you use source files from DirectMusic Producer or a similar application, you can do much more:

        Control many more aspects of playback at run time, for example by choosing a different set of

    musical variations or altering the chord progression.

        Play music that varies subtly each time it repeats.

        Play waves with variations.

        Map performance channels to audiopaths, so that different parts within the same segment can

    have different effects.

        Compose wholly new pieces of music at run time, not generated algorithmically but based on

    components supplied by a human composer.

        Dynamically compose transitions between existing pieces of music.

        Cue transitions, motifs, and sound effects to occur at specified rhythmic points in the


These capabilities are the ones most often used by mainstream applications. DirectX Audio is designed to

be used easily for the basic tasks, but it also allows low-level access to those who need it. It is also

extensible. Specialized applications can implement new objects at virtually every stage on the audiopath,

such as the following:

        Loaders to parse data in new or proprietary formats.

        Tracks containing any kind of sequenced data.

        Tools to process messages—for example, to intercept notes and apply transpositions, or to

    display lyrics embedded in a segment file.

        Custom sequencer.

        Custom synthesizer.

        Effects filters.

Also part of DirectX Audio is DirectMusic Producer, an application that enables composers to create DLS

collections, chordmaps, styles, and segments—the pieces that let you take full advantage of the power of
DirectMusic. DirectMusic Producer also makes it possible to create playable segments that contain multiple

time-stamped waves. These waves can be in compressed or uncompressed format and can be either

streamed at run time or wholly contained in memory.

As an application developer, you might never use DirectMusic Producer yourself, but it is a good idea to

have a broad understanding of what it does so that you can work effectively with your sound design team.

For an introduction from the application designer's perspective, see Compositional Music Elements in the

help file. For more detail, see the DirectMusic Producer documentation.

DirectX Audio delivers full functionality on Microsoft Windows 95, Microsoft Windows 98, and Microsoft

Windows 2000. However, support for hardware synthesizers is available only on Windows 2000 and

Windows 98 Second Edition.

What's New in DirectX Audio

The audio components of DirectX have undergone a major revision. DirectMusic and DirectSound are now

a more unified API for playing sounds of all kinds, and many new capabilities have been added.

The following list describes some of the new features:

Integration of waves and message-based sounds in a single playback mechanism
Wave files and resources can now be loaded by the DirectMusic loader and played by the DirectMusic
performance. The application no longer needs to parse the wave and copy or stream it to a DirectSound
buffer. The timing of wave playback is based on the DirectMusic master clock, and waves can be
synchronized to musical events and processed by tools just like any other segment.
The DirectSound API continues to be supported, and you can still play waves directly through DirectSound
buffers. DirectSound continues to be the API for wave capture and full duplex.

Special effects
DirectX Media Objects can be attached to sound buffers to add effects. DirectX Audio provides standard
effects such as reverb, chorus, distortion, and equalization and third-party effects can be added.

More flexible and powerful audiopath model
In previous versions of DirectMusic, performance channels were mapped to ports, and each port sent its
output to a single DirectSound buffer. Under the new model, channels in a segment are mapped to
audiopaths that control the data flow from the performance to the final output. Output from the
synthesizer can be sent to multiple playback buffers, each with its own 3-D positioning and effects.
Audiopaths can be created dynamically by the application or authored into segments.

DLS2 Synthesis
The DirectMusic synthesizer is now based on the Downloadable Sounds (DLS) Level 2 standard, providing
higher-quality sound synthesis. New features of the DLS2 synthesizer include six-stage envelopes, support
for stereo waves, layering of voices, release waveforms, and an additional low-frequency oscillator (LFO).
Each voice has an optional low-pass resonant filter.

Audio scripting
Music composers and sound designers can gain greater control over the performance by using scripts. The
application does not handle the details of playback but instead calls into the script. For example, a game
event might trigger a script function. The script author can easily modify the soundtrack's response to the
game event by modifying the function.

Greater control over cueing
A composer can set points in a segment that specify where the segment can begin playback, so that the
segment can maintain its relationship to the time signature. Primary segments can contain arbitrary points
where other segments can be cued, allowing greater control than cueing to the nearest measure, beat, or
grid. A new segment cue flag, DMUS_SEGF_SEGMENTEND, causes the segment to play when the current
primary segment finishes playing.

Container object
All components of a DirectMusic Producer project can be kept in a single file, making it easier to find and
load all objects. Containers can also be embedded in segments, so that everything necessary to play a
segment is kept within the segment.

Enhanced MIDI controller support
Curve messages now support RPN (registered parameter number) and NRPN (nonregistered parameter
number) controller changes.

Individual control over segment states
Each playing instance of a segment can have its own audiopath, so parameters such as volume, pan, and
pitch bend can be modified for each segment state individually.

Simplified downloading and unloading of bands
Bands can be downloaded and unloaded with a simple method call on the segment object.

Dynamic track data generation
New track configuration and play flags allow tracks to be recomposed each time the segment is played or
looped. For example, a chordmap track can be configured to establish a new chord progression each time
the segment plays.

Improved run-time control over tracks
Applications can set individual track configurations to disable playback and parameter control. Tracks can
be configured to operate in clock time rather than music time. Tracks in self-controlling segments can be
configured to override parameter tracks in controlling or primary segments.

Notification of impending silence
The performance notification event has a new notification type,
DMUS_NOTIFICATION_MUSICALMOSTEND, which indicates that the last primary segment in the queue is
about to end. This notification gives the application a chance to schedule a new segment.

Infinite repetition of segments
The new DMUS_SEG_REPEAT_INFINITE flag allows a segment to play for an indefinite time.

Improved cache management
Applications can more easily release unused objects that were loaded by other objects.

Lyrics track
Time-stamped text is sent to the performance by a segment containing a lyrics track.

The Power of DirectPlay

The Microsoft DirectPlay API is a media independent networking API that provides networking services at

the transport protocol and session protocol levels. DirectPlay's media independence means that DirectPlay

sessions can be run on TCP/IP networks, IPX networks, and over directly connected modems and serial

cables. DirectPlay's media independence also allows it to be extended in the future to support new

standards and protocols as they become widely deployed, such as IPv6, multicast, or Quality of Service

This means that DirectPlay applications can improve over time, and track evolving network standards,

without additional development by the application developer. For most purposes, your application can

simply use the DirectPlay API, and enable DirectPlay to handle the details of network communication.

DirectPlay provides many features that simplify the process of implementing many aspects of a

multiplayer application, including transport and session level p rotocol services such as:

        Client/Server and Peer to Peer networking sessions

        Peer to Peer host migration

        Player and Group management

        Guaranteed and non-Guaranteed messaging

        Sequenced and non-Sequenced messaging

        Message fragmentation and reassembly

        Traffic throttling / Send queue monitoring

        Message priorities

        Connection statistics (round trip latency, packet loss, etc)

        Session description queries

Additionally, in DirectX version 8.0, DirectPlay has been written with massive scalability of servers in

mind. It uses an asynchronous callback model that allows maximum parallelism, and takes advantage of

Windows 2000 performance features such as I/O completion ports. In version 8.0, DirectPlay is designed

to scale up to the most ambitious massively multiplayer projects.

Also included in DirectPlay are the DirectPlay Lobby APIs that allow applications to register themselves

with DirectPlay, so that other applications can easily launch them and pass them network-addressing

information. This allows you to write games that can be immediately launched by a number of different

matchmaking services and utilities without having to write special code for each launcher.

The DirectPlay Voice API is also included, which provides developers with everything they need to add real

time voice communication to their applications with a minimum of development work while retaining

maximum flexibility. DirectPlay Voice includes extremely low bandwidth codec technology that can be used

royalty free in your applications, as well as many features that allow you very fine grained control over the

voice communication experience. A more detailed list of DirectPlay Voice features is included below.

DirectPlay Voice provides the following services:
        A selection of voice codecs from 64 kbit/sec down to 1.2 kbit/sec.

        Peer to peer, forwarding server, and mixing server topologies

        Completely flexible control of who hears whom within a session

        Automatic voice detection to control network transmission

        Automatic gain control to automatically set the microphone input volume

        Intelligent, configurable, adaptive queuing to automatically adjust to different and changing

    network conditions

        Integration with DirectSound, allowing for the application playback effects on a voice-by-voice

    basis such as 3-D positioning, reverb, etc.

        Capture focus to allow multiple DirectPlay Voice applications at once in the system

        Integration with DirectPlay for session and protocol level services.

What's New in DirectPlay

The networking component of Microsoft DirectX has undergone a major revision. Microsoft DirectPlay

introduces a new set of interfaces that enable games to have more direct access to the hardware,

providing better performance.

The following list describes some of the new DirectPlay features.

Interfaces have been completely rewritten.
The complexity of creating a networked application has been dramatically simplified by separating the
interfaces for creating peer-to-peer and client/server sessions. The interfaces for creating DirectPlay
transport sessions, which are defined in the Dplay8.h header file, are now:
Provides methods for creating peer-to-peer sessions.
Provides methods for creating the client-side portion of a client/server application.
Provides methods for creating the server-side portion of a client/server application.

Lobbying is now independent from the rest of DirectPlay.
DirectPlay has removed the requirement that a lobby client work only with a DirectPlay application. Thi s
will allow for either the lobby service provider or the application to implement DirectPlay without concern
for the other. Lobby implementation is now separated into two simplified interfaces that are defined in the
Dplobby8.h header file.
This interface is used to manage a lobby client and for enumerating and launching lobby-aware
This interface is used to register a lobby launchable application with the system so it can be lobby
launched. It also is used to get the connection information from the lobby to enable game launching
without querying the user.

Voice transmission has been added.
DirectPlay Voice provides a set of interfaces to add real-time voice communication to an application. The
following interfaces are defined in the Dvoice.h header file.
Provides methods to create and manage clients in a DirectPlay Voice session.
Provides methods to host and manage a DirectPlay Voice session.
Used to test DirectPlay Voice audio configurations.

Addressing information has moved from GUID-based data to URL-based data format.
Previous versions of DirectPlay used binary chunks of data with GUID addresses that were difficult to
implement and that humans could not read. In DirectX 8.0, DirectPlay introduces the representation of
addresses in URL format. A set of interfaces, defined in Dpaddr.h, is used to create and manipulate the
new addressing format.
Provides generic addressing methods used to create and manipulate DirectPlay addresses.
Provides IP provider-specific addressing services.

Higher scalability and better memory management have been added.
Increases in consumer bandwidth have dramatically affected network game design and implementation.
Improved DirectPlay thread-pool management makes it easier to for the developer to design scalable,
more robust applications that can support massive multiplayer online applications.

Better support for Firewalls and Network Address Translators has been added.
Writing network games that traverse Network Address Translators (NATs), Firewalls, and other Internet
Connection Sharing (ICS) methods can be difficult, particularly for non-guaranteed (UDP) traffic. Because
DirectPlay 8.0 has been developed with these issues in mind, it will support NAT solutions where possible.
The DirectPlay 8.0 TCP/IP service provider uses a single, developer-selectable UDP port for game data,
making it possible to configure firewalls and NATs appropriately. Additionally, DirectPlay makes use of UDP
so that, for client/server games, clients behind some NATs will be able to connect to games without
additional configuration.

The Power of DirectInput

Apart from providing services for devices not supported by the Microsoft® Win32® API, Microsoft

DirectInput gives faster access to input data by communicating directly with the hardware drivers rather

than relying on Microsoft Windows messages.

DirectInput enables an application to retrieve data from input devices even when the application is in the

background. It also provides full support for any type of input device, as well as for force feedback.

Through action mapping, applications can retrieve input data without needing to know what kind of device

is being used to generate it.

The extended services and improved performance of DirectInput make it a valuable tool for games,

simulations, and other real-time interactive applications running under Windows.

DirectInput does not provide any advantages for applications that use the keyboard for text entry or the

mouse for navigation.

What's New in DirectInput

The following are some of the new features in Microsoft DirectInput.
Action mapping
Microsoft DirectInput for Microsoft DirectX 8.0 introduces a major new feature: action mapping. Action
mapping enables you to establish a connection between input actions and input devices that does not
depend on the existence of particular device objects (such as specific buttons or axes). Action mapping
simplifies the input loop and reduces the need for custom game drivers, custom device profilers, and
custom configuration user interfaces in games.

New DirectInput object features
The DirectInput object is now represented by the IDirectInput8 interface. A new helper function,
DirectInput8Create creates the object and retrieves this interface. IDirectInput8 has a new CLSID and
cannot be obtained by calling QueryInterface on an interface to objects of the class
CLSID_DirectInput used in earlier DirectX versions.

New keyboard properties
Two keyboard properties have been added: DIPROP_KEYNAME, which retrieves a localized key name, and
DIPROP_SCANCODE, which retrieves the scan code.

Joystick slider data in rglSlider array
Joystick slider data, which was assigned to the Z-axis of a DIJOYSTATE or DIJOYSTATE2 structure under
earlier DirectX versions, will now be found in the rglSlider array of those same structures.

The Power of DirectShow

DirectShow is a media-streaming architecture for the Microsoft Windows platform that enables the high-

quality capture and playback of multimedia streams. The streams can contain video and audio data

compressed in a wide variety of formats, including MPEG, audio-video interleaved (AVI), MPEG-1 Layer 3

(MP3), and WAV files. Capture can be based on either Windows Driver Model (WDM) or legacy Video for

Windows (VFW) devices. DirectShow is integrated with DirectX technologies so that it automatically takes

advantage of any video and audio acceleration hardware to deliver the highest possible performance.

DirectShow is designed to make it as simple as possible to perform basic playback, format conversion, and

capture tasks while at the same time providing access to the underlying stream control architecture for

those applications that require custom solutions. You can even create your own DirectShow components to

support new formats or custom effects.

Examples of the types of applications you can write with DirectShow include: DVD Players, Digital Video

Editors, WAV to ASF Converters; MP3 Players; Digital and Analog Video and Audio Capture applications.

What's New in DirectShow

The following features are what's new in Microsoft DirectShow for Microsoft DirectX 8.0.

Windows Media Format Support
Two new filters enable DirectShow applications to read and write files in Microsoft® Windows Media™
Format. The ASF Reader filter reads and parses Windows Media Format files. The ASF Writer filter
writes Windows Media Format files; it also does the necessary multiplexing and compressing. DirectShow
and the Windows Media Software Development Kit offer complementary solutions for writing applications
that create and playback Windows Media Format stream.

DirectShow Editing Services
DirectShow Editing Services is an API that supports video editing and sequenced video playback. You
can use DES to create a wide range of applications. For example, with just a few method calls, you can
sequence together audio and video clips, add an effect, and play back the result. Or, you c an create a
entire video editing system. DES is built on top of the core DirectShow architecture. It provides a set of
interfaces designed specifically for nonlinear video editing.
DES replaces cutlists, which are no longer supported.

New DVD Support
Two new interfaces, IDVDControl2 and IDVDInfo2 greatly expand the functionality of the DVD
Navigator. The new MSWebDVD ActiveX® control makes this functionality available to script-based
applications. New DVD features include the following, among others:

        Karaoke multichannel audio support.

        AC-3 support for S/PDIF out.

        Audio volume control through the IBasicAudio interface.

        Support for frame stepping and frame-accurate seeking.

        Simplified access to DVD text information strings.

        Improved support for parental management controls.

New MPEG-2 Transport and Program Stream Support
A new filter, the MPEG-2 Demultiplexer, provides support for MPEG-2 transport streams and program
streams in push-mode (for receiving data from live sources).

Microsoft TV Technologies (Broadcast Driver Architecture)
Microsoft® TV Technologies includes support for the new Broadcast Driver Architecture (BDA) and the
Microsoft Tuning Model. The Broadcast Driver Architecture defines a framework that supports various
component topologies for receiving digital and analog television. It includes software components for
network configuration and control, demultiplexing, table parsing and IP Data delivery for the main digital
TV standards including DVB and ATSC. The Tuning Model is a set of objects that enables applications to
easily tune across various network types in a simple and uniform manner.

DirectX Video Acceleration
For decoder developers: DirectX Video Acceleration is an Application Programming Interface (API) and a
corresponding Device Driver Interface (DDI) for hardware acceleration of digital video decoding
processing, with support of alpha blending for such purposes as DVD subpicture support. It provides an
interface definition focused on support of MPEG-2 "main profile" video (formally ITU-T H.262 | ISO/IEC
13818-2), but is also intended to support other key video codecs (e.g., ITU-T Recommendations H.263
and H.261, and MPEG-1 and MPEG-4).

New Filters
DirectShow includes several new filters:

        ASF Writer: Writes Windows Media Format files.

        ASF Reader: Reads and parses Windows Media Format files.

        MJPEG Decompressor: Decodes a video stream from motion JPEG to uncompressed video

        MJPEG Compressor: Compresses an uncompressed video stream using motion JPEG

       MPEG-2 Demultiplexer: Demultiplexes MPEG-2 transport and program streams from live


       Null Renderer: Discards samples without displaying or rendering the sample data. Applications

    can use this filter to discard data from a stream.

       Sample Grabber: Retrieves media samples as they move through the filter graph. Applications

    can use this filter to obtain poster frames or other media data.

New Filter Graph Features
The filter graph manager supports several new features:

       Dynamic Graph Building. You can now make changes to the filter graph while the graph is

    running. Previously, to add or remove filters, an application had to stop the graph, which interrupts

    the flow of data. Live Source Synchronization. DirectShow now supports synchronization of live

    sources. For example, a live audio stream can be synchronized with a live video stream.

       Frame Stepping. The filter graph manager exposes the new IVideoFrameStep interface, which

    enables an application to step through a video file one frame at a time.

Changes to the Build Environment

       A new header file, DShow.h, replaces the previous header file, Streams.h

       The filter base classes now appear in the \Samples\BaseClasses directory under the SDK root

    directory. To use them, you must build the base-class library and link to it in your project.

New GraphEdit Features
GraphEdit includes some new features that enhance its use as a testing and debugging tool.

       "Graph Spy": Now GraphEdit can load a filter graph created by an external process. With this

    feature, you can see exactly what filter graph your application builds, with only a minimal amount of

    additional code in your application. Filter Information: When you choose Insert Filters from the

    Graph menu, the list of filters now includes each filter's registration information, including merit,

    number of pins, and the media types registered for each pin. To see this information, click the plus

    (+) symbol next to each filter in the tree view.

DirectX Media Objects
DirectX Media Objects (DMOs) are a new way to write data-streaming components. Like DirectShow
filters, DMOs take input data and use it to produce output data. However, the application programming
interfaces (APIs) for DMOs are much simpler than the corresponding APIs for DirectShow. As a result,
DMOs are easier to create, test, and use than DirectShow filters.
DMOs are fully compatible with DirectShow. You can use a DMO like a filter when you need the services
that DirectShow provides, such as graph synchronization, intelligent connection, automatic handling of
data flow, and thread management. However, DMOs do not require a filter graph, so applications can use
DMOs without using DirectShow.
Media Parameters
Media parameters are a new set of APIs that support run-time changes to an object's properties. They
offer precise control over properties that change rapidly and require both high performance and
repeatability. They enable a property to follow an exact curve, such as a sine wave or inverse-square
curve, in real time.
Using media parameters, data transform objects can support a standard interface for controlling run-time
behavior. They are particularly useful for audio effect DMOs and filters. For example, in an echo effect, the
ratio of wet (processed) signal to dry (unprocessed) signal can follow a smooth curve. This type of
behavior is critical in audio engineering, to avoid introducing artifacts into the recording.

To top