W3C

Synchronized Multimedia Integration Language (SMIL 2.0)

W3C Recommendation 07 August 2001

This version:
http://www.w3.org/TR/2001/REC-smil20-20010807/
(Other formats: single HTML file, zip archive)
Latest version:
http://www.w3.org/TR/smil20
Previous version:
http://www.w3.org/TR/2001/PR-smil20-20010605/
Editors:
Jeff Ayars (RealNetworks), Dick Bulterman (Oratrix), Aaron Cohen (Intel), Ken Day (Macromedia), Erik Hodge (RealNetworks), Philipp Hoschka (W3C), Eric Hyche (RealNetworks), Muriel Jourdan (INRIA), Michelle Kim (IBM), Kenichi Kubota (Panasonic), Rob Lanphier (RealNetworks), Nabil Layaïda (INRIA), Thierry Michel (W3C), Debbie Newman (Microsoft), Jacco van Ossenbruggen (CWI), Lloyd Rutledge (CWI), Bridie Saccocio (RealNetworks), Patrick Schmitz (Microsoft), Warner ten Kate (Philips).


Abstract

This document specifies the second version of the Synchronized Multimedia Integration Language (SMIL, pronounced "smile"). SMIL 2.0 has the following two design goals:

Status of this document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.

This is the W3C Recommendation of the Synchronized Multimedia Integration Language (SMIL) 2.0.

This document has been reviewed by W3C Members and other interested parties and has been endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited as a normative reference from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.

This document has been produced by the SYMM Working Group [members only] as part of the W3C Synchronized Multimedia Activity. The goals of the SYMM Working Group are discussed in the SYMM Working Group charter [members only].

The SYMM Working Group considers that all features in the SMIL 2.0 Recommendation have been implemented at least twice in an interoperable way. The SYMM Working Group Charter defines this as the implementations having been developed independently by different organizations and each test in the public SMIL 2.0 test suite has at least two passing implementations. The Implementation results are publicly released and are intended solely to be used as proof of SMIL 2.0 implementability. It is only a snap shot of the actual implementation behaviors at one moment of time, as these implementations may not be immediately available to the public. The interoperability data is not intended to be used for assessing or grading the performance of any individual implementation.

There are patent disclosures and license commitments associated with the SMIL 2.0 Recommendation, these may be found on the SYMM Patent Statement page in conformance with W3C policy.

This version of this document incorporates some editorial changes from earlier versions.

Please report errors in this document to www-smil@w3.org - (public archives).
The list of known errors in this specification is available at http://www.w3.org/2001/07/REC-SMIL20-20010731-errata.

The authors of this document are the SYMM Working Group members. Different parts of the document have different editors.
The W3C staff contact for work on SMIL is Thierry MICHEL.

The English version of this specification is the only normative version. Information about translations of this document is available at http://www.w3.org/AudioVideo/SMIL/translations.

A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.

Quick Table of Contents

Full Table of Contents

1. About SMIL 2.0

Editors
Aaron Cohen (aaron.m.cohen@intel.com), Intel
Thierry Michel (tmichel@w3.org), W3C

1.1 Introduction

This document specifies the second version of the Synchronized Multimedia Integration Language (SMIL, pronounced "smile"). SMIL 2.0 has the following two design goals:

SMIL 2.0 is defined as a set of markup modules, which define the semantics and an XML syntax for certain areas of SMIL functionality.

1.1.1 Relation to SMIL 1.0

SMIL 2.0 deprecates a small amount of SMIL 1.0 syntax in favor of more DOM friendly syntax. Most notable is the change from hyphenated attribute names to mixed case (camel case) attribute names, e.g., clipBegin is introduced in favor of clip-begin. The SMIL 2.0 modules do not require support for these SMIL 1.0 attributes so that integration applications are not burdened with them. SMIL document players, those applications that support playback of "application/smil" documents, and host language conformant document profiles must support the deprecated SMIL 1.0 attribute names as well as the new SMIL 2.0 names.

1.1.2 Content of this Recommendation

This Recommendation is structured as a set of sections, each defining one or more modules:

This Recommendation also defines two profiles that are built using the above SMIL 2.0 modules:

The XHTML+SMIL Profile that appeared in Working Drafts of this Recommendation is published separately, and is not part of the SMIL 2.0 Recommendation. However, one of the implementations used to validate SMIL 2.0 was based on the XHTML+SMIL Profile. All XHTML+SMIL examples in this Recommendation conform to the Profile as of the Working Draft of 06 August 2001. The latest version of this document is also available, see [XHTML+SMIL].

1.2 Acknowledgements

This document has been prepared by the Synchronized Multimedia Working Group (SYMM-WG) of the World Wide Web Consortium. The WG included the following individuals:

Hanan Rosenthal, Canon - Jin Yu, Compaq - Pietro Marchisio, CSELT - Lynda Hardman, CWI - Jacco van Ossenbruggen, CWI - Lloyd Rutledge, CWI - Olivier Avaro, France Telecom - Ted Wugofski, Gateway (Invited Expert) - Masayuki Hiyama, Glocomm - Keisuke Kamimura, Glocomm - Michelle Y. Kim, IBM - Steve Wood, IBM - Jeff Boston, IBM - Nabil Layaïda, INRIA - Muriel Jourdan, INRIA - Aaron Cohen, Intel - Wayne Carr, Intel - Marcel Wong, Ericsson - Ken Day, Macromedia - Daniel Weber, Panasonic - Patrick Schmitz, Microsoft - Debbie Newman, Microsoft - Pablo Fernicola, Microsoft - Aaron Patterson, Microsoft - Kevin Gallo, Microsoft - Paul David, Microsoft - Don Cone, Netscape/AOL - Wo Chang, NIST - Didier Chanut, Nokia - Antti Koivisto, Nokia - Roberto Castagno, Nokia - Jack Jansen, Oratrix - Sjoerd Mullender, Oratrix - Dick Bulterman, Oratrix - Kenichi Kubota, Panasonic - Warner ten Kate, Philips - Ramon Clout, Philips - Jeff Ayars, RealNetworks - Erik Hodge, RealNetworks - Rob Lanphier, RealNetworks - Bridie Saccocio, RealNetworks - Eric Hyche, RealNetworks - Robin Haglund, RealNetworks - Geoff Freed, WGBH - Philipp Hoschka, W3C - Philippe Le Hégaret, W3C - Thierry Michel, W3C.

2. The SMIL 2.0 Modules

Editors:
Warner ten Kate (warner.ten.kate@philips.com), (Philips Electronics)
Aaron Cohen (aaron.m.cohen@intel.com), (Intel)
Philipp Hoschka (ph@w3.org), (W3C)

2.1 Introduction

This section is informative.

Since the publication of SMIL 1.0 [SMIL10], interest in the integration of SMIL concepts with the HTML, the HyperText Markup Language [HTML4], and other XML languages, has grown. Likewise, the W3C HTML Working Group has specified XHTML, the Extensible HyperText Markup Language [XHTML10], in preparation to subset, extend, and integrate it with other languages. The strategy considered for integrating respective functionality with other XML-based languages is based on the concepts of modularization and profiling [SMIL-MOD], [XMOD].

Modularization is an approach in which markup functionality is specified as a set of modules that contain semantically-related XML elements, attributes, and attribute values. Profiling is the creation of an XML-based language through combining these modules, in order to provide the functionality required by a particular application.

Profiling introduces the ability to tailor an XML-based language to specific needs, e.g. to optimize presentation and interaction for the client's capabilities. Profiling also adds the ability for integrating functionality from other markup languages, releasing the language designer from specifying that functionality. Moreover, it provides for consistency in markup through the use of the same model to incorporate a function. Identical constructs ease authoring, while at the user agent side there is a potential for re-use of code. For example, a scheduler supporting SMIL timing and synchronization functionality could be used for SMIL documents, XHTML+SMIL documents, and SVG documents.

Modularization enables language designers to specify dedicated markup intended for integration with other, existing, language profiles. Examples of specifications intended for such integration are MathML and XForms [MathML], [XFORMS].

Modularization and profiling use the extensibility properties of XML, and related technology like XML namespaces and XML Schema [XML10], [XML-NS], [XSCHEMA].

This part of the SMIL 2.0 specification describes the framework on which SMIL modularization and profiling is based, and specifies the SMIL 2.0 Modules, their identifiers, and the requirements for conformance within this framework.

2.1.1 Modularization and Profiling

This section is informative.

The modularization approach used in this specification derives from that set forth in XHTML Modularization [XMOD]. The framework on which SMIL modularization and profiling is based, is informally described here.

A Module is a collection of semantically-related XML elements, attributes, and attribute values that represents a unit of functionality. Modules are defined in coherent sets. This coherency is expressed in that the elements of these modules are associated with the same namespace.

A Language Profile is a combination of modules. Modules are atomic, i.e. they cannot be subset when included in a language profile. Furthermore, a module specification may include a set of integration requirements, to which language profiles that include the module must comply.

Commonly, there is a main language profile that incorporates nearly all the modules associated with a single namespace. For example, the SMIL 2.0 language profile uses most of the SMIL 2.0 modules. Usually, the same name is used to loosely reference both - "SMIL 2.0" in the example. Also, the name "profile" is used to mean "language profile".

Other language profiles can be specified that are subsets of the larger one, or that incorporate a mixture of modules associated with different namespaces. SMIL 2.0 Basic is an example of the first, XHTML+SMIL of the latter.

A special module in a language profile is the so-called Structure Module, in that it contains the root element of the language profile, e.g. <smil> or <html>. Any language profile that incorporates modules associated with a single namespace will include the Structure module associated with that namespace.

Other modules that require special mention are those that characterize the core of the functionality provided by the namespace. This is expressed by the notions of host language and integration set. Both of them relate to a set of conformance requirements for language profiles, which includes the requirement to incorporate at least the core set of modules. The set may be different for a host language and an integration set. A host language must incorporate the Structure module; an integration set need not. There may be other differences as well.

The main purpose of language profile conformance is to enhance interoperability. Preferably, the mandatory modules for host language conformance are defined in such a way that any document interchanged in a conforming language profile will yield a reasonable presentation when the document renderer, while supporting the associated mandatory module set, would ignore all other (unknown) elements and attributes. Here, "reasonable presentation" is to be understood as something intelligible, which is not necessarily a close reflection of the author's original intentions. To achieve the latter, a negotiation would have to be conducted to agree on the specific language profile to be used for the document interchange.

2.2 SMIL 2.0 Modules

This section is normative.

SMIL functionality is partitioned into ten functional areas. Within each functional area a further partitioning is applied into modules. All of these modules, and only these modules, are associated with the SMIL namespace.

The functional areas and their corresponding modules are:

  1. Timing
    1. AccessKeyTiming
    2. BasicInlineTiming
    3. BasicTimeContainers
    4. EventTiming
    5. ExclTimeContainers
    6. FillDefault
    7. MediaMarkerTiming
    8. MinMaxTiming
    9. MultiArcTiming
    10. RepeatTiming
    11. RepeatValueTiming
    12. RestartDefault
    13. RestartTiming
    14. SyncbaseTiming
    15. SyncBehavior
    16. SyncBehaviorDefault
    17. SyncMaster
    18. TimeContainerAttributes
    19. WallclockTiming
  2. Time Manipulations
    1. TimeManipulations
  3. Animation
    1. BasicAnimation
    2. SplineAnimation
  4. Content Control
    1. BasicContentControl
    2. CustomTestAttributes
    3. PrefetchControl
    4. SkipContentControl
  5. Layout
    1. AudioLayout
    2. BasicLayout
    3. HierarchicalLayout
    4. MultiWindowLayout
  6. Linking
    1. BasicLinking
    2. LinkingAttributes
    3. ObjectLinking
  7. Media Objects
    1. BasicMedia
    2. BrushMedia
    3. MediaAccessibility
    4. MediaClipping
    5. MediaClipMarkers
    6. MediaDescription
    7. MediaParam
  8. Metainformation
    1. Metainformation
  9. Structure
    1. Structure
  10. Transitions
    1. BasicTransistions
    2. InlineTransitions
    3. TransitionModifiers

This section is informative.

Each of these modules introduces a set of semantically-related elements, properties, and attributes. Each functional area has a corresponding section in this specification document. Further details on each of the modules is specified within those sections.

The modules may be independent or complementary. For example, the SyncMaster module requires and builds upon the SyncBehavior module, but the PrefetchControl and SkipContentControl modules are independent from each other. In addition, some modules require modules from other functional areas.

Modules specify their integration requirements. When one module requires another module for basic features and as a prerequisite for integration, a language profile must include the second module in order to include the first. The first module is said to be a dependent of the second module. Dependency may be nested, in that a module may be dependent on a module that is dependent itself.

Table 1 presents the SMIL 2.0 modules and the modules they dependent on.

Table 1: The SMIL 2.0 Modules and their Dependencies.
Module Dependencies
AccessKeyTiming NONE
AudioLayout BasicLayout
BasicAnimation BasicInlineTiming
BasicContentControl NONE
BasicInlineTiming NONE
BasicLayout NONE
BasicLinking NONE
BasicMedia NONE
BasicTimeContainers NONE
BasicTransitions NONE
BrushMedia NONE
CustomTestAttributes BasicContentControl
EventTiming NONE
ExclTimeContainers NONE
FillDefault BasicTimeContainers, and/or
ExclTimeContainers, and/or
TimeContainerAttributes
HierarchicalLayout BasicLayout
InlineTransitions NONE
LinkingAttributes NONE
MediaAccessibility MediaDescription
MediaClipMarkers MediaClipping
MediaClipping BasicMedia
MediaDescription NONE
MediaMarkerTiming NONE
MediaParam BasicMedia
MetaInformation NONE
MinMaxTiming NONE
MultiArcTiming AccessKeyTiming, and/or
BasicInlineTiming, and/or
EventTiming, and/or
MediaMarkerTiming, and/or
RepeatValueTiming, and/or
SyncbaseTiming, and/or
WallclockTiming
MultiWindowLayout BasicLayout
ObjectLinking BasicLinking
PrefetchControl NONE
RepeatTiming NONE
RepeatValueTiming NONE
RestartDefault RestartTiming
RestartTiming NONE
SkipContentControl NONE
SplineAnimation BasicAnimation
Structure BasicContentControl, and
BasicInlineTiming, and
BasicLayout, and
BasicLinking, and
BasicMedia, and
BasicTimeContainers, and
SkipContentControl, and
SyncbaseTiming
SyncbaseTiming NONE
SyncBehavior BasicTimeContainers, and/or
ExclTimeContainers, and/or
TimeContainerAttributes
SyncBehaviorDefault SyncBehavior
SyncMaster SyncBehavior
TimeContainerAttributes NONE
TimeManipulations NONE
TransitionModifiers BasicTransitions, and/or
InlineTransitions
WallclockTiming NONE

2.2.1 SMIL DOM

This section is informative.

SMIL is an XML-based language and conforms to the (XML) DOM Core [DOM1], [DOM2]. In  the future, a SMIL-specific DOM recommendation may specify support for timing and synchronization, media integration, and other synchronized multimedia functionality.

A language profile may include DOM support. The granularity of DOM being supported corresponds to the modules being selected in that language profile. As with all modules, required support for the DOM is an option of the language profile.

2.3 Identifiers for SMIL 2.0 Modules and Language Profiles

This section is informative.

This section specifies the identifiers for the SMIL 2.0 namespace and the SMIL 2.0 modules. Each SMIL host language conformant language profile is requested to explicitly state the namespace URI that is to be used to identify it. That namespace URI must comply with the "Requirements on Identifiers for SMIL Host Language Conformant Language Profiles", defined below.

2.3.1 The SMIL Mime Type

This section is normative.

Documents authored in language profiles that include the SMIL Structure module can be associated with the "application/smil" mime type. Documents using the "application/smil" mime type are required to be host language conformant.

2.3.2 XML Namespace Identifier for the SMIL 2.0 Modules

This section is normative.

The XML namespace identifier for the complete set of SMIL 2.0 modules, and the elements and attributes that are contained within is:

http://www.w3.org/2001/SMIL20/

2.3.3 Identifiers for SMIL 2.0 Modules and Features

This section is normative.

Each module in this specification has a unique identifier associated with it. They are intended to uniquely and consistently identify each of them. They should be used as values in a test for whether an implementation includes a specific module, as well as in other circumstances where a need to refer to a specific SMIL 2.0 module is necessary.

Table 2 summarizes the identifiers for SMIL 2.0 modules.

Table 2: The SMIL 2.0 Module Identifiers.
Module name Identifier
AccessKeyTiming http://www.w3.org/2001/SMIL20/AccessKeyTiming
AudioLayout http://www.w3.org/2001/SMIL20/AudioLayout
BasicAnimation http://www.w3.org/2001/SMIL20/BasicAnimation
BasicContentControl http://www.w3.org/2001/SMIL20/BasicContentControl
BasicInlineTiming http://www.w3.org/2001/SMIL20/BasicInlineTiming
BasicLayout http://www.w3.org/2001/SMIL20/BasicLayout
BasicLinking http://www.w3.org/2001/SMIL20/BasicLinking
BasicMedia http://www.w3.org/2001/SMIL20/BasicMedia
BasicTimeContainers http://www.w3.org/2001/SMIL20/BasicTimeContainers
BasicTransitions http://www.w3.org/2001/SMIL20/BasicTransitions
BrushMedia http://www.w3.org/2001/SMIL20/BrushMedia
CustomTestAttributes http://www.w3.org/2001/SMIL20/CustomTestAttributes
EventTiming http://www.w3.org/2001/SMIL20/EventTiming
ExclTimeContainers http://www.w3.org/2001/SMIL20/ExclTimeContainers
FillDefault http://www.w3.org/2001/SMIL20/FillDefault
HierarchicalLayout http://www.w3.org/2001/SMIL20/HierarchicalLayout
InlineTransitions http://www.w3.org/2001/SMIL20/InlineTransitions
LinkingAttributes http://www.w3.org/2001/SMIL20/LinkingAttributes
MediaAccessibility http://www.w3.org/2001/SMIL20/MediaAccessibility
MediaClipMarkers http://www.w3.org/2001/SMIL20/MediaClipMarkers
MediaClipping http://www.w3.org/2001/SMIL20/MediaClipping
MediaDescription http://www.w3.org/2001/SMIL20/MediaDescription
MediaMarkerTiming http://www.w3.org/2001/SMIL20/MediaMarkerTiming
MediaParam http://www.w3.org/2001/SMIL20/MediaParam
Metainformation http://www.w3.org/2001/SMIL20/Metainformation
MinMaxTiming http://www.w3.org/2001/SMIL20/MinMaxTiming
MultiArcTiming http://www.w3.org/2001/SMIL20/MultiArcTiming
MultiWindowLayout http://www.w3.org/2001/SMIL20/MultiWindowLayout
ObjectLinking http://www.w3.org/2001/SMIL20/ObjectLinking
PrefetchControl http://www.w3.org/2001/SMIL20/PrefetchControl
RepeatTiming http://www.w3.org/2001/SMIL20/RepeatTiming
RepeatValueTiming http://www.w3.org/2001/SMIL20/RepeatValueTiming
RestartDefault http://www.w3.org/2001/SMIL20/RestartDefault
RestartTiming http://www.w3.org/2001/SMIL20/RestartTiming
SkipContentControl http://www.w3.org/2001/SMIL20/SkipContentControl
SplineAnimation http://www.w3.org/2001/SMIL20/SplineAnimation
Structure http://www.w3.org/2001/SMIL20/Structure
SyncbaseTiming http://www.w3.org/2001/SMIL20/SyncbaseTiming
SyncBehavior http://www.w3.org/2001/SMIL20/SyncBehavior
SyncBehaviorDefault http://www.w3.org/2001/SMIL20/SyncBehaviorDefault
SyncMaster http://www.w3.org/2001/SMIL20/SyncMaster
TimeContainerAttributes http://www.w3.org/2001/SMIL20/TimeContainerAttributes
TimeManipulations http://www.w3.org/2001/SMIL20/TimeManipulations
TransitionModifiers http://www.w3.org/2001/SMIL20/TransitionModifiers
WallclockTiming http://www.w3.org/2001/SMIL20/WallclockTiming

In addition to the module identifiers above, there may be different features and variances from one language profile to another that may not be expressed as the support or non-support of a particular module. These features may be expressed using the following identifiers:

http://www.w3.org/2001/SMIL20/NestedTimeContainers
Profile allows nesting of the par and seq time containers.
http://www.w3.org/2001/SMIL20/DeprecatedFeatures
Profile supports deprecated SMIL 1.0 features.

Implementations that support the SMIL BasicContentControl module must allow these as identifiers for use with the XML namespace mechanism, and must allow the associated namespace identifier to be used with the systemRequired test attribute. Profiles must identify those attributes for which an implementation must return "true" (this is an integration requirement). Implementations must return "false" for modules or features which are not fully supported.

Modules can also be identified collectively. The following four module collections are defined:

http://www.w3.org/2001/SMIL20/
All the modules specified by the SMIL 2.0 specification.
http://www.w3.org/2001/SMIL20/Language
The modules used by the SMIL 2.0 Language profile.
http://www.w3.org/2001/SMIL20/HostLanguage
The modules required for SMIL Host Language Conformance.
http://www.w3.org/2001/SMIL20/IntegrationSet
The modules required for SMIL Integration Set Conformance.

2.4 SMIL Conformance

This section is informative.

In this section we specify the rules for SMIL host language and SMIL integration set conformance. First, the conformance requirements for host language conformance and integration set conformance are given. The requirements are similar to those set forth for XHTML host language document type conformance and XHTML integration set document type conformance [XMOD]. In a final section the requirements on identifiers for host language conformant language profiles are given.

Currently, there exist three language profiles using SMIL 2.0 Modules. They are the SMIL 2.0 Language Profile, the SMIL 2.0 Basic Language Profile, and the XHTML+SMIL 2.0 Language Profile  [XHTML+SMIL]. The first two are SMIL host language conformant, the third is SMIL integration set conformant.

This section is normative.

The following two tables list names used to collectively reference certain sets of SMIL 2.0 elements and attributes. These are used in the definitions of the minimum support in the two sections below on SMIL host language conformance and SMIL integration set conformance. The term "minimum support" is used to refer to the minimum set of elements that an element can contain, and the minimum set of attributes that can be used on an element.

Table 3: Names of SMIL 2.0 Element Collections.
Element Set Name Elements
TIMING-ELMS par, seq
MEDIA-ELMS ref, animation,