# Advanced Authoring Format

The Advanced Authoring Format (AAF) is a file format for professional cross-platform data interchange, designed for the video post-production and authoring environment. It was created by the Advanced Media Workflow Association (AMWA), and is now being standardized through the Society of Motion Picture and Television Engineers (SMPTE).

## History

AAF was originally created by the AMWA, formerly the AAF Association Inc., a trade association created to develop and promote adoption of specifications and technologies, such as AAF, Material Exchange Format (MXF), and Service-oriented architecture (SOA), to facilitate the deployment and operation of efficient media workflows. Technical work of the AMWA is through projects that aim to improve compatibility between AAF, Broadcast Exchange Format (BXF), MXF and XML. The current projects fall into three categories: data models, interface specifications, and application specifications.
AAF was created to help address the problem of multi-vendor, cross-platform interoperability for computer-based digital video production.
The AAF Object Model is now being standardized through SMPTE, including a better definition of the mapping between MXF and AAF essence.

## Usage

Capabilities of AAF include the following:
* Allows complex relationships to be described in terms of an object model.
* Facilitates the interchange of metadata and/or program content.
* Provides a way to track the history of a piece of program content from its source elements through final production.
* Makes downstream rendering possible (with appropriate equipment).
* Provides a convenient way to "wrap" all elements of a project together for archiving.
There are two kinds of data that can be interchanged using AAF:
* Essence Data: Audio (including music), video, image, graphics, text, animation, and other forms of multimedia data. So named because they are the essential data within a multimedia program that can be perceived directly by the audience.
* Metadata: Data that provides information on how to combine or modify individual sections of essence data, or that provides supplementary information about essence data. The metadata in an AAF file can provide the information needed to combine and modify the sections of essence data in the AAF file to produce a complete multimedia program.
By preserving source referencing, and abstracting the creative decisions that are made, AAF tries to improve workflow and simplify project management.
AAF's rich data model combining metadata and various types of essence has led to its use in non-broadcast applications as well. For example, AAF has been adopted by the DoD/IC Motion Imagery Standards Board (MISB) for their Aerial Surveillance and Photogrammetry Applications standard (ASPA).

## Elements of AAF

The core elements of the AAF specification include:
* The AAF Object Specification, which defines the structured container by which AAF stores essence data and metadata using an object-oriented model. It defines the logical contents of the objects and the rules for how the objects relate to each other.
* The AAF Low-Level Container Specification, which describes how each object is stored on disk. It uses Structured Storage, a file storage system developed by Microsoft, to store the objects on disk.
* The AAF API Specification, which defines how software engineers can write applications.
* The AAF Reference Implementation, which implements both these specifications in a completely cross-platform manner.
* The AAF Software Development Kit (SDK), which includes developer utilities and validation test suites.
* The AAF Example software, which demonstrates how to use the AAF SDK to produce AAF files.
* The AAF Example files, created by working AAF implementations.

## Differences from MXF

AAF is designed to be a data representation of works in progress, as compared to Material Exchange Format (MXF), which is for exchanging finished media products. While MXF uses a Key Length Value (KLV) format for storage, AAF uses the Microsoft Structured Storage system.
MXF was developed as a subtype of the AAF data model, under a zero-divergence policy, which allows for workflows that mix AAF and MXF. Specifically, all MXF metadata can be understood by AAF, but not all AAF metadata can be understood by MXF (and would be filtered out during encoding as a result).