Delphi (Win32) Components

This page lists a set of Delphi component packs. These wrap the AAF sdk and provide a range of functions required for building media applications such as editors, audio players and "Personal Video Recorders".

The set includes components that allow AAF files to be created, edited, loaded and saved, including effects and a range of metadata types, without needing an in-depth knowledge of AAF. There are components for quickly setting up the data required for a legal AAF file and for running a multi-level undo-redo facility, as required by media professionals. The set does not yet include layered tracks or Colour Separation Overlay.

There are components for replay of media files, playing a sequence of media files as a composition with transition and composition effects, displaying a complex multi track audio timeline, detecting shot-changes, pulling a set of key-frames out of a file and calculating and displaying time codes.

The component set can replay mpeg2 files with frame accuracy and with high speed scrub-play, and can maintain audio video synchronisation when playing separate audio and video files.

The AAF parts of the set conform to the AAF Edit Protocol and stand a good chance of being readable by other Edit Protocol conformant applications, provided they are genuine and use version 1.1 or later of the AAF SDK. The implementation is not yet complete, however, but I add to it regularly.

It also includes components for replaying off-air DVB transmissions from a BDS compatible tv tuner, including paused replay and recording and extraction of transmitted programme guide data. They should also do DBS reception but I've not yet tested this.

My components can be compiled in Delphi6, to Delphi10.1 Berlin.

All of the component sets are Open Source. All include source files in the downloads. 

AAFPack  AAF components

This pack contains a translation of the Advanced Authoring Format AAF sdk into Delphi and a class structure that recreates the AAF class model on the Delphi side of the application.

There are also a few basic AAF components, the most important of which assigns a program identification to an AAF file. This is vital information in a professional environment, where work in progress will be handed from one person to another, usually working with applications from different vendors. It is imperative to know what types of application have contributed to a production. The remaining components provide access to media storage within the file and are not recommended since they tie media into a particular production, which is deeply unpopular with users. A far better way is to store media in well known, open and standardised formats and use an AAF file to point to them.

AAF is implemented as a Com Object that exposes interfaces to the software developer. Interfaces can be used more easily in Delphi than in any other development environment but are not something that many Delphi developers are familiar with. This component pack begins with a translation of the AAF interfaces to Delphi, so they can be used by developers who are familiar with them. It then builds a set of TObjects that model the objects used within the AAF implementation; the Delphi developer can then access all parts of the AAF object model.

These components are Open Source and the download includes source files.

BasePack  BasePack components

This pack contains core classes required to compile EditPack, PvrPack, AudioPack and UiPack and components such as player controls and timelines that can be used to control media players, an IniFile wrapper, a sortable grid and some other components that are used in the demonstration applications.

These components are Open Source and the downloads include source files.

UiPack  UiPack components

UiPack (User Interface Pack) provides an assortment of components for building media related applications. These include a component for moving hiding and showing groups of components , creating buttons based on bitmap images where the images differ when the button is clicked or down, a TListView descendent with events to notify that items have been checked, an ImageList with the capability to store about four times as many images than a stock TImageList, a Form Magnet component for locking the outer edge of forms together or confining them to the inside of a main form, a Network Neighbourhood monitor and a component to access a Microsoft Infra Red remote control.

These components are Open Source and the downloads include source files.

EditPack  EditPack components

This pack builds on the set of Objects provided by AAFPack so the Delphi developer can access most parts of the AAF object model without needing to handle an interface. The Pack requires that AAFPack, BasePack and DirectShow9 are also installed.

The pack provides a selection of components useful to people building media players media loggers and editors. The media players provide "scrub-play" through mpeg2 files with rapid image updating, which is essential for professional use. This is done using an index file and optimises the network performance of the player; each seek operation has a precise file offset which avoids searching for a frame start over the network.

The pack includes video editing with a set of 20 built in video effects and audio editing with cross-fade and "fade out and in" effects, together with time varying audio gain settings. This functionality requires my DirectShow editing filters, and frame accurate replay requires either the Moonlight Cordless or Elecard mpeg decoders together with their demultiplexers and indexing filters, or the Open Source FFDShow decoder and my mpeg demultiplexer.

Moonlight (now ceased trading) and Elecard filters are proprietary. They are excellent filters and well worth buying but, in the absence of a reply from Elecard,  I have to assume their interfaces cannot be released. I have provided an interface dll that allows them to be used for media replay and bundled the interfaces for some of my DirectShow filters into it.

PvrPack  PvrPack components

This package provides a selection of components useful to people building television players. The Pack requires that AAFPack, BasePack and DirectShow9 are also installed. It provides control of a BDS capture card, pausable replay, recording to a file and extraction of transmitted programme guide data. It also provides components for managing lists of channels, program guides and networked recording and scheduling of recordings using Windows Task Scheduler. There is also a component that logs the contents of media folders and notifies an application when a new file has been stored or deleted.

AudioPack  AudioPack

This pack provides audio replay from files and CDs, extraction of unique CD Idents suitable for making calls to FreeDB, unique DVD Idents suitable for keeping lists of DVD bookmarks, access to FreeDB to get CD track names and storage of the track names in an Sqlite3 database, without needing sqlite3.dll. The Pack requires that AAFPack, BasePack and DirectShow9 are also installed.

DirectX

Access to the DirectShow API is required for all packages on this page except for AAFPack and UiPack. I have used files from the DSPack project at SOURCEFORGE.   I have used only the DirectX files which I compiled in a package called DirectX. If you already have these files in your development environment you can remove DirectX from my packages and replace it with DirectX9_XXX.dpk. If you have Delphi2010 (and maybe Delphi2009) these files are already included but in early versions, there are no dcus.  Applying the Dec09 update will fix this. Alternatively, you can copy them into a separate folder, build them and add the new source folder to your library list as usual, so your projects can find them. In this case, you need to select a Minimum enum size of Double word in the DirectX project options dialog instead of the default word. This may explain why Embarcadero did not originally include dcus.