|
|
|
|
Intel Realistic Display miXer White Paper
The Intel Realistic Display miXer (RDX) technology provides high-performance, object-based programming support for
interactive multimedia objects (backgrounds, sprites, tiles, grids, audio, video and graphics),
video collision detection, and transformations or effects, in a Windows* 95 environment. It also uses
APIs like DirectSound*, DirectDraw*, and DCI*. This paper briefly
describes the architecture, benefits, features, display model, and general usage model of Intel RDX.
Architecture of the Intel RDX Library
Benefits of the Intel RDX Library
The Intel RDX library provides a number of significant benefits to software developers. These include
ease of use, extensibility, easy display mixing, high performance, coordination of displayable and
non-displayable objects, and support for performance improvements in underlying system components:
Ease of Use. Intel RDX offers an object-based interface for
creating and manipulating multimedia objects and devices. This eliminates the need to deal with
low-level details, leaving you free to concentrate on content creation and application-specific
programming tasks. It can help you get your application to market quickly.
Extensibility. The extensibility in Intel RDX allows you to launch an application-defined function through Intel RDX’s render callback function. It also lets you create user-defined filters to manipulate and control ActiveMovie* streams which are displayed onto an Intel RDX surface.
Display Mixing. In the past, the use of display mixing has been somewhat limited because
video and graphics have been treated as independent entities. As a result, many multimedia Windows
applications have used one data type or the other but not both. Instead of using bit-block transfer (bitblt) and write-raster
operations to perform display mixing, you only need to create a set of objects, define their generic
attributes, map them to a surface, and then draw the surface. Each of these operations is accomplished
by simple, high-level function calls. With Intel RDX, display mixing is software-based, done in
real-time, and requires no special hardware.
High Performance. The Intel RDX library was designed with performance in mind. For example, we
purposely chose to abstract objects at the interface level so that we could implement many functions
in highly tuned assembly language modules and take advantage of hardware acceleration where possible.
We minimized buffer copying during display mixing. Instead of copying video and graphics data to
separate buffers and then mixing them in a third buffer (which can be very time consuming), Intel RDX
puts video and graphics data in the same buffer from the beginning, eliminating a serious
performance bottleneck.
Coordinated Activities. Multimedia applications are primarily based on displayable objects
but they also need audio objects and devices, and the ability to coordinate their interplay easily and
accurately. The Intel RDX library supports these needs in three ways. First, it provides timers and events
to support application scheduling and synchronization. Second, it provides automatic synchronization
between audio and video objects. Third, it allows you to place objects in a group and then perform
certain operations on all the objects in the group with a single function call.
Scalability. In addition to high performance, the Intel RDX library also provides support for
future performance improvements in the underlying hardware and software. For example, MMXTM
technology was added in the 2.1 release.
Features of the Intel RDX library
The Intel RDX library provides the following features:
Predefined object types. These include sprites, backgrounds, tiles, grids, surfaces,
groups, audio tracks, video tracks, and AV objects. We even provide an object that allows you to connect Intel RDX with Active Movie*. These object types help you create
multimedia applications that are powerful, yet flexible.
Generic attributes for all objects. These include view, visibility, draw order, current image,
destination, destination rectangle, transparent color and position. These attributes, common to
all Intel RDX objects, allow you to define the specific characteristics of the objects you create.
Attribute management functions. These functions set, get, and adjust the values of generic
attributes and allow you to modify the characteristics of your objects dynamically.
Object-specific functions. These functions allow you to perform object-specific operations like
creating and deleting objects, associating data with objects, and performing special operations
(pausing and resuming the playback of an AV object, for example).
Surfaces. A surface is a destination to which you map a collection of displayable objects.
Each object’s attributes determine how and when the object is drawn to a surface. A surface can
be mapped to a window for immediate display on the screen, to a memory buffer for later use, or
to another surface if you want to treat the (first) surface as a displayable object.
Groups. A group is a collection of objects. You can get, set, and adjust the value of a specific
attribute for all the objects in a group in a single function call. You can also determine the
number of objects in a group and get a list of the objects.
Effects. An effect is a filter on an object’s data. You can set multiple effects on an object.
At draw time, the effects are applied to the object’s data in the order in which you applied them
and the result is drawn to the object’s surface. Currently supported effects include horizontal
flipping, vertical flipping, horizontal shearing, vertical shearing, smorphing (simple morphing --
applies an application-defined mathematical transformation to an object), full screen display, modeX
display, color mapping, and others.
Timers and Events. Timers and events allow you to schedule and synchronize the activities of
objects. You schedule an event to occur at a specific point in time (or periodically) by creating
the event, creating a timer to go with it, and then associating the two. Currently supported events
include set an attribute, adjust an attribute, draw, and others.
Collision Regions and Hot Spots. Collision regions and hot spots allow you to detect dynamic
interactions between moving objects. A collision region or hot spot is defined by a
bounding rectangle that surrounds a group of pixels (a door, for example). The hot spots can
be embedded in a video stream. The library provides functions that allow you to define bounding
rectangles and detect collisions that occur within those bounds.
Device support. The Intel RDX library provides support for setting and getting values in the hardware
palette register.
Pre-loading and branching. The AV subsystem provides an abstraction called branch tables, which
allow you to pre-load video data in the background for seamless branching between multiple video clips.
Intel RDX Display Model
The general model for display has four phases: Loading source data objects, setting a source data object, setting the destination mixing surface, and finally, setting the output. This display structure allows you to load data into a data object, associate the data object with one or more displayable Intel RDX objects, and reuse it. You can apply different attributes, transformations, or effects to the data object before mapping it onto a mixing surface. Once you map the object, you can select where you want to send the output. The Intel RDX Display Model diagram shows an overview of the flow and some specific examples of how you can use the Intel RDX display features.
Usage Model
The general model for using Intel RDX objects has three phases: Building, managing, and rendering¹. In the
building phase, you associate source data from a buffer in memory or from a file with a source data
object (for example a bitmap), and then associate the source data object with an Intel RDX object such as a
background or sprite. In the managing phase, you manipulate an object in a variety of ways. For
example, you might change some of its attribute values, put it in a group, set effects on it, or use
timers and events to synchronize its activities. In the render phase, you display 2D objects by
drawing the surface to which they are attached. Audio objects are automatically handed to the sound system.
Intel RDX Usage Model
Summary
Intel RDX is an application programming interface that embodies the principles of object-oriented design, frees the developer from unnecessary detail, and provides significant benefits. The primary components of Intel RDX are objects, methods that allow you to manage these objects, and device support for the display and audio. For additional information, refer to the documentation provided with the Intel RDX 2.2 developer’s kit.
¹ We present the phases as if they were discrete and sequential, but in a real application they
overlap.
Legal Stuff © 1997 Intel Corporation
|