Introducing QuickTime 3
Volume Number: 14
Issue Number: 7
Column Tag: Power Graphics
by by Tim Monroe, Apple Computer, Inc.
Edited by the MacTech Editorial Staff
What's new in the latest version of Apple's flagship
multimedia software
On the 30th day of the 3rd month of this year, Apple released QuickTime version 3, the
latest and probably the most eagerly awaited version of its award-winning multimedia
software architecture. QuickTime 3 provides dozens of features that are new or
improved over earlier versions. QuickTime now supports more than 30
industry-standard video and audio file formats, and it provides a host of new
capabilities on both Macintosh and Windows computers. In this article, I'll describe
what I take to be the major enhancements contained in QuickTime 3.
Of course, it would take far more space than is available here to cover all of what's
new in QuickTime 3. Instead, to borrow some terminology from the game of baseball,
I'll focus on the home runs and the extra-base hits; you can investigate the solid
line-drive singles yourself at the QuickTime 3 web site and in the developer
documentation. See the References section at the end of this article for pointers to
those resources.
As you know, QuickTime comprises a number of media technologies, including
synchronized sound and video, still graphics, sprite animation, text, music, virtual
reality, and 3D imaging. QuickTime 3 has added some exciting new capabilities, such as
wired sprites, vector drawing, and video effects, and has enhanced the interoperability
of the existing technologies. Before discussing those innovations, let's begin by
considering what's new in QuickTime 3 for users and content developers, and what's
new in QuickTime 3 for the web. Then we can look at the goodies that QuickTime 3
provides for software developers.
User-Level Software
The typical user's first experience with QuickTime 3 will probably involve one of
three new pieces of software: a revised and expanded MoviePlayer application, an
upgraded image-viewing application called PictureViewer, or the new QuickTime
Plug-In for web browsers. As initially installed on either Macintosh or Windows
computers, these three items are limited to "basic" operations. For example, the basic
MoviePlayer application allows the user to open and view QuickTime movies, but does
not allow editing or saving those movies. The basic PictureViewer application exhibits
similar restrictions: the user can open images and apply various transformations to
them (such as rotate and resize), but cannot save any modified images.
A user can upgrade to QuickTime 3 Pro by registering across the net. Upgrading
involves obtaining a registration number and then entering that number into a panel of
the QuickTime(tm) Settings control panel. Once the registration number is validated,
the MoviePlayer and PictureViewer applications are automatically upgraded to their
Pro versions, which allow editing, saving, and many other operations on movies and
images. Keep in mind that the "basic/Pro" distinction applies only to MoviePlayer,
PictureViewer, and the plug-in: all other software (your QuickTime-savvy
application, for instance) is able to take full advantage of the QuickTime APIs, which
are fully functional even if the user does not upgrade to the Pro version.
For content developers, QuickTime 3 provides a wealth of new capabilities.
MoviePlayer Pro allows the content developer to perform sophisticated movie editing
and to save edited movies using a wide variety of compression formats and special
effects. Apple has partnered with a number of other companies to provide new
compression technologies for both video and sound. On Windows computers, QuickTime
3 provides the Indeo codec from Intel. On both Macintosh and Windows computers,
QuickTime 3 includes the Sorenson Video codec from Sorenson Vision, Inc. (which
provides state-of-the-art compression technology giving extremely good image
quality at a remarkably small data rate). Also included are cross-platform codecs
from QDesign (which provides impressive music fidelity in as little as 1 percent of
the original file size) and QualComm (whose Pure-Voice technology does very good
compression on voice data). Finally, QuickTime 3 includes the Sound Canvas
instrument set for playing MIDI sound files and the GS Format extensions developed by
Roland Corporation.
QuickTime on the Web
QuickTime 3 includes a new, more powerful plug-in for the Netscape Navigator and
Microsoft Internet Explorer web browsers, on both Macintosh and Windows. This
plug-in supports the display and control of all of QuickTime's digital formats directly
in the browser window. The browser plug-in provides several other important new
features, including QuickTime Streaming and automatic selection of media based on the
user's connection speed.
QuickTime Streaming is a feature of the QuickTime Plug-In that allows QuickTime
movies to begin playing before the entire movie has been downloaded to the user's
machine. The plug-in waits until it has enough of the movie downloaded that it is
confident that the remaining movie data will be downloaded by the time it's needed. The
result is that the user spends less time waiting and more time interacting with the
digital content.
QuickTime Streaming also works for non-linear QuickTime media, such as QuickTime
VR panoramas and objects. The only "gotcha" for VR content is that the movie must be
specially flattened for streaming web playback. Content developers will need to install
the QTVR Flattener extension (available at the QuickTime web site) and then export a
flattened movie using MoviePlayer Pro. When exporting flattened VR content, the
developer can include a lower-resolution preview track (or even an arbitrary image
file) that downloads very quickly and provides the user with a passable preview of the
VR movie. If no such preview track is included in a web-flattened VR movie, the
QuickTime Plug-In substitutes a grey-on-black grid (rather like the Star Trek
holodeck background) for any data not yet downloaded.
QuickTime 3 provides a second way to address the web bandwidth problem with its
support for "multiple data rate" movies. Here the idea is to tailor the data to be
downloaded to the user's connection speed (which can be set in the QuickTime(tm)
Settings control panel). The content developer accomplishes this by creating a single
QuickTime reference movie, which contains references to several other QuickTime
movies of varying sizes and resolutions. When a user chooses to view a reference
movie embedded in a web page, the QuickTime Plug-In automatically selects the target
referenced movie best suited for the user's connection speed. For example, if the user
has a LAN or T1 connection to the Internet, the plug-in selects the highest quality
movie referenced in the reference movie. If the user has a slow modem connection, say
14.4KBaud, the plug-in instead chooses a smaller, lower-resolution movie, probably
also with the audio and video compressed to a greater degree (with an attendant loss of
quality). In this way, the QuickTime Plug-In delivers the digital content best suited
for a specific user, automatically and completely transparently to the user.
Of course, the QuickTime Streaming feature works with multiple data rate movies too.
Once the plug-in has decided which referenced QuickTime movie to download, the data
is streamed as described above.
QuickTime Video Effects
QuickTime 3 provides an extensible architecture for applying video effects to single
images or video tracks ("filters"), or to pairs of images or video tracks
("transitions"). QuickTime 3 includes an implementation of the 133 standard
transitions defined by the Society of Motion Picture and Television Engineers
(SMPTE), as well as some additional effects defined by QuickTime. The SMPTE effects
include transitions like a simple explode (where the first image is pushed outward by
the second image) and a radial swipe (where the first image is covered over by the
second image in a clockwise turn). The QuickTime effects include a very nice "cross
fade" or "dissolve" (which uses a smooth alpha blending from the first image to the
second) and a nifty "film noise" filter that makes a video track look like old, faded,
dusty, and scratched film (see Figure 1).
Figure 1. The film noise filter applied to a movie frame.
QuickTime 3 even defines several video effects that operate on no source images or
video tracks at all. For instance, you can use the fire effect to generate a real-looking
fire, and you can use the cloud effect to render a wind-pushed, moving cloud. With
zero-source effects, the idea is that you will want to composite the effect onto some
other image or video track.
What's interesting about all these effects is that they use extremely little data to
achieve the desired visual effect. The data describing an effect is stored in a video
track, and the actual effect itself is generated in real time as the movie that
incorporates the effect is played. For instance, a movie track that specifies the fire
effect is only about 200 bytes in size, but when played generates a real time,
non-repeating, dynamic effect.
Filters and transitions are implemented in the general QuickTime architecture as
image decompressor components. One thing this means is that you can use filters and
transitions anywhere you might use a decompressor, not only in connection with
QuickTime movies. You can just as easily apply a transition between two arbitrary
images (perhaps contained in two offscreen graphics worlds). I've seen this capability
used to add QuickTime video effects as transitions between QuickTime VR nodes. The
default behavior of QuickTime VR is simply to jump from one node to the target node.
It's much nicer to render some video effect, say a nice smooth dissolve, when moving
from node to node.
The fact that effects are implemented as decompressors also means that it's relatively
easy to construct your own custom effects and to make them available to any
applications that support QuickTime. Apple even provides source code for a sample
effect that you can use as a starting point for your own effects development.
QuickTime Vectors
QuickTime 3 provides a pleasant surprise in its support for vector-based drawing.
QuickTime vectors are mathematical descriptions of images, rather like PostScript
images. An image that is described using QuickTime vectors can be resized with no
quality loss in the image. More importantly, the description of an image using
QuickTime vectors is almost always significantly smaller than a bitmap description of
the same image (even when the bitmap is compressed). In addition, QuickTime's
vector-based drawing supports a relatively fast form of antialiasing that determines
the color of antialiased pixels based on the curve calculation itself rather than the
standard technique of drawing the image at higher resolution and scaling it down. For
these reasons, QuickTime vectors provide a welcome and powerful addition to the
QuickTime family of digital media.
A QuickTime vector is roughly the same as a QuickDraw GX path object, which is a
connected series of straight lines and curves. Using paths, you can define pretty much
any geometric shape, from points and lines, to polygons, curves, and arbitrary
concatenations of lines and curves. QuickTime vectors also support the standard
QuickDraw GX drawing styles (for instance, pen widths and joins at corners) and inks
(supporting many color spaces and image transfer modes). Indeed, the correspondence
between GX paths and QuickDraw vectors is so close that you can easily convert
existing GX data into QuickTime vectors using an image transcoder included with
QuickTime 3.
A QuickTime vector image is described by a set of paths, which are ordered series of
atoms in a QuickTime atom container. (This set of paths is called a vector data stream.)
The atom container is stored in a movie file as a media sample in a video track. To
render a path, the QuickTime vector codec traverses the atoms in the atom container,
in the order they appear in the atom container. A particular atom may specify a path
(in which case the vector codec draws the path using the current drawing attributes)
or a drawing attribute (in which case the vector codec sets that attribute as the default
drawing attribute of its type). QuickTime 3 defines a large number of vector atom
types, most of which correspond to QuickDraw GX drawing styles. QuickTime 3 adds