QTPlugin implements a moltitude of classes, modules and methods for accessing and using the services featured by the QuickTime multimedia architecture. This document is intended to provide a summary of the technologies offered by the QuickTime APIs that are available into the plugin.
By reading this document, developers can quickly find out if the QuickTime functionalities they need are provided by the QTPlugin.
QTPlugin implements a set of classes that allow to access and modify a multitude of properties of movies, tracks and media, including dimensions, aperture modes, matrix, clipping region, graphics transfer modes, volume, balance, gain, pitch and so on. Also, the plugin lets you deal with characteristics peculiar to specific kinds of media such as text, video, sound, track movie, timecode etc. Furthermore, you can search a movie for specific types of track, deal with track references and alternate tracks, managing edit states (to provide undo capabilities to your applications) and getting or setting meta informations (by using both the old user data mechanism and the new metadata architecture introduced in QuickTime 7).
The plugin provides some additional capabilities to the Realbasic MoviePlayer control such as drag enabling, frame extraction, saving of movie segments and so on.
With a simple and consistent interface you can playback either in window or full screen still images, movies, audio, and effects. Also, the plugin lets you apply real–time adjustements to the played video such as rotation, zoom, shift, image flipping, gamma correction, color discarding, graphics transfer modes, clipping, control of brightness and contrast. Furthermore, you will be able to create a new movie that stores all of the changes you have applied during data playback.
QTPlugin allows to create new movies either in memory or referencing a file on disk and, then, populate them with the following types of tracks (other can be added in future plugin versions):
- video tracks
- sound tracks
- effects tracks
- text tracks (including chapter tracks)
- timecode tracks
- hypertext tracks
- skin tracks
- movie track tracks (that is movies embedded into other movies)
- stream tracks
- sprites tracks
- tweens tracks
- wrapper data tracks (that is tracks that reference to externally stored data without copying or importing them)
Furthermore, the plugin allows you to create another type of movie, known as reference movie, that is a movie file that contains data references to a set of alternate movies as well as information about the criteria by which QuickTime should select one of those alternate movies when that movie file is opened (an alternate movie is any one of a set of movies that contain media data appropriate for a specific characteristic or set of characteristics).
QTPlugin provides access to the effects technology implemented by QuickTime in two ways:
- within movies, by creating effect tracks
- outside movies, by creating animations with no–source effects, by applying filter to still images or by creating transitions between them
Also, the plugin offers different mechanisms to configure effects before using them: you can setup them whether by using the Standard Effects Dialog implemented by QuickTime or programmatically by using the subclasses of the QTPlgEffectDesc class.
You can use the services provided by the Graphics Import Components to open, display, and save graphic images stored using various file formats and compression algorithms.
Use the plugin classes and methods to work with export components in order to export both graphic images and movie data to non–movie formats (i.e. AIFF, WAVE, AVI, MPEG–1, MIDI, MPEG–4, 3GPP, MP3, MPEG–2, H.263, H.264, etc.).
Provide your applications with data acquisition capabilities from analog or digital devices connected to a computer; it is possible to create connection to video, audio and text data sources. The plugin provides you with a rich set of classes to configure and drive the acquisition process, including channels and devices configuration, etc.
QTPlugin lets you to send movies or still images output to external devices. As this is accomplished by using video output components, the plugin features a set of classes that allow you to choose, configure and use such a components
QTPlugin implements the services provided by the Standard Compression Dialog component to compress still images, video sequences and audio. The plugin leverages the enhancements to audio and video compression APIs provided by QuickTime 7 and later. Furthermore the plugin allows you to compress files of any type using the zlib compressor component.
The plugin provides you with a pair of classes designed to perform asynchronous copy of files (stored either locally or remotely) and movie loading. Using these classes you will be able to provide your application with such a capabilities writing two or three lines of code
QTPlugin lets you to read and modify programmatically many global QuickTime settings (those displayed into the QuickTime Preference Pane) such as Streaming, Transport Setup and Media Keys; furthermore you can determine what restrictions are enforced by the currently running version of QuickTime
The plugin implements a rich set of classes to support some of the technologies used by QuickTime to create movies that modify dinamically their content: sprites and tweening.
You can easily create sprites, set up their initial properties and, when appropriate, add ovverride samples that modify them; then you can add animations to movies by creating and adding the sprites samples to it. Also, the QTPlugin API allows to detect clicks in a sprite track and provide some basic interactivity to movies. Finally it is possible to substitute sprite images with video coming from other tracks.
Another mechanism provided by the plugin to modify dinamically movies content is "tweening": using the appropriate set of classes, you can set up the initial and ending values of a tweening operation and then create a , populate it with the tween samples and specify the track whose data have to be modified by the interpolated values. Using this technique it is possible to achieve such effects as fade–in or fade–out of audiovisual data, to dinamically modify the behaviour of sprites contained in a sprite track and so on. Also, it is possible to run tweens and use the interpolated results outside a movie context; for example, you could use the results of an interpolation between two points to dinamically modify the coordinates of a graphic object into a Canvas control.
QTPlugin provides a set of classes that allow developers to both receive and transmit data streams within the Realbasic environment. You can use the receiver technologies provided by QuickTime to view audiovisual streams received from the network and the transmitter technologies (available for MacOS only) to broadcast audiovisual data to other computers on a network. At time, the plugin allows to send data captured by an external device (such as a camcorder) or coming from a movie file.
The plugin implements a set of classes designed to read and display uncompressed images whose data are not handled by QuickTime, such as float images, or are encapsulated in formats not recognized from importers components, such as PGM (Portable Greymap format), PPM (Portable Pixelmap format) and so on. Also, these classes allow to extract statistic informations about distribution of pixel in the image (including image histogram).