<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Slides2HplusT.xsl"?>
<slideset xmlns:t="urn:schemas-microsoft-com:time">
	<info>
        <title>Advancing Multimedia on the Web</title>
        <subtitle>The development of SMIL 2.0 and what comes next</subtitle>
        <event>
			<name>SBMidia 2001</name>
			<location>Florianopolis Brazil</location>
		</event>
        <author>
			<name>Patrick Schmitz</name>
			<email>cogit@ludicrum.org</email>
			<link><a href="http://www.ludicrum.org/plsWork">
					http://www.ludicrum.org</a>
			</link>
		</author>
        <update>8:55 AM PT Oct 15, 2001</update>
        <summary>Title slide for talk at SBMIDIA 2001 in Florianopolis Brazil.</summary>
		<background-img>bg.jpg</background-img>
    </info>

	<style>
	  .demoButtonSet { 
		 position:absolute; bottom:5%; left:0%; z-index:10; 
		 }

	  #simpleBounceFrame { 
		 position:absolute; top:0; left:-10%; width:110%; height:80%; z-index:5; 
		 }

	  #CPBounceFrame { 
		 position:absolute; top:10%; left:0%; width:90%; height:90%; z-index:5; 
		 }

	  #OrbitFrame { 
		 position:absolute; top:0%; left:0%; width:100%; height:100%; z-index:5; 
		 }

	  #cycleDemoSrc{ 
		 position:absolute; top:15%; left:0%; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1.6em; font-weight:bold; color:cyan;
		 }

	  #cycleDemo{ 
		 position:absolute; top:10%; left:0%; width:90%; height:70%; z-index:5; 
		 background-color:white; 
		 }

	  #animDemoSrc{ 
		 position:absolute; top:15%; left:-20px; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1em; font-weight:bold; color:cyan;
		 }

	  #animDemo{ 
		 position:absolute; top:10%; left:0%; width:100%; z-index:5; 
		 background-color:white; font-family:Times New Roman; 
		 }

	  #simpleDemoSrc{ 
		 position:absolute; top:0%; left:-20px; width:90%; z-index:5; 
		 padding:10px;
		 background-color:black; font-size:1em; font-weight:bold; color:cyan;
		 }

	  #simpleDemo2{ 
		 position:absolute; top:10%; left:0%; width:100%; height:50%; z-index:5; 
		 padding:10px;
		 background-color:white; font-family:Times New Roman; font-size:1.5em; color:black;
		 }

	  div.cycleDemo{ 
		 position:relative; 
		 }

	  #cycleDemo h2 { 
		 color:black; 
		 }

	  .big { position: absolute; font-family:Comic Sans MS; font-weight:bold; font-size:72; }

	  input.animCtrlButton { 
		 z-index:10; 
		 }
	</style>

<!-- Part A - Intro and Background -->

    <slide>
		<title>Overview of tutorial</title>
		<pointset>
			<point>What is SMIL?</point>
			<point>Basic Timing and Synchronization</point>
			<point>Animation and Time Manipulations</point>
			<point>Integrating SMIL Timing with XML languages</point>
			<point>Looking ahead</point>
		</pointset>
    </slide>

    <slide>
		<title>What is SMIL?</title>
		<pointset>
		  <point>Synchronized Multimedia Integration Language
			<subpoints>
			  <point>Declarative language for synchronized multimedia</point>
			  <point>Based upon XML - Extensible Markup Language</point>
			</subpoints>
		  </point>
		  <point>SMIL 1.0 Released from W3C June 98
			<subpoints>
			  <point>No HTML/CSS integration</point>
			</subpoints>
		  </point>
		  <point>SMIL 2.0 Released August 2001
			<subpoints>
			  <point>XHTML+SMIL profile approaching last call</point>
			</subpoints>
		  </point>
		</pointset>
    </slide>

    <slide>
		<title>What is SMIL 2?</title>
		<pointset>
		  <point>SMIL 1 vs. SMIL 2
			<subpoints>
			  <point>Lots of new support in modules</point>
			  <point>Multiple language profiles</point>
			</subpoints>
		  </point>
		  <point>Modules of SMIL
			<subpoints>
			  <point>Timing and Sync are the core</point>
			  <point>Media, Animation, Transitions</point>
			  <point>Layout: big difference between SMIL, XHTML+SMIL</point>
			  <point>Misc (but useful) modules</point>
			</subpoints>
		  </point>
		</pointset>
    </slide>

    <slide>
		<title>Why a language vs. an API?</title>
		<pointset>
			<point>Authors are not programmers</point>
			<point>How tools support authoring
				<subpoints>
					<point>Round trip and exchange support</point>
					<point>Iterative authoring</point>
				</subpoints>
			</point>
			<point>Script alternative usually primitive
				<subpoints>
					<point>Stateful, brittle, expensive</point>
				</subpoints>
			</point>
			<point><content>Language <em>does</em> support a DOM</content></point>
		</pointset>
    </slide>


<!-- Part B - SMIL Timing -->

    <slide>
		<title>What is Timing and Synchronization?</title>
		<pointset>
		  <point style="padding-top:0">Document choreography
			<subpoints>
			  <point>When things begin, how long they last</point>
			  <point>Relationships: holding things together</point>
			  <point>Grouping, constraining, repeating, filling</point>
			</subpoints>
		  </point>
		  <point style="padding-top:0">Semantic model
			<subpoints>
			  <point>Time graph for document</point>
			  <point>Dynamic, not static</point>
			  <point>Dependency relationships</point>
			</subpoints>
		  </point>
		</pointset>
    </slide>

    <slide>
		<title class="time" id="UseCaseTitle">Use cases</title>
		<pointset class="time" timeContainer="seq" speed="5" fill="freeze" >
		  <point id="puc1" class="time" begin="1s" dur="30s" end="puc1.click" 
				timeContainer="par" fill="hold" timeAction="visiblity">
			<content>
				Slide shows <span class="time" begin="3s">- like this one!</span>
			</content>
		  </point>
		  <point id="puc2" class="time" dur="10s"  timeContainer="par" end="puc2.click"
				fill="hold" timeAction="visiblity">
			Audio with synchronized text
			<subpoints class="time" timeContainer="seq" fill="freeze">
			  <point class="time" dur="5s" timeAction="class:highlight">
					Music synced to lyrics</point>
			  <point class="time" dur="5s" timeAction="class:highlight">
					Digital Talking Books</point>
			</subpoints>
		  </point>
		  <point id="puc3" class="time" dur="10s" fill="hold" timeAction="visiblity"
				 end="puc3.click">
			Animation with time manipulations
		  </point>
		  <point id="puc4" class="time" dur="10s" fill="hold" timeAction="visiblity"
				 end="puc4.click">
			TV and Radio enhancement: timed annotations
		  </point>
		</pointset>
		<extra>
			<div class="time demoButtonSet" begin="puc4.end" dur="indefinite" fill="hold" timeAction="visiblity">
				<input class="animCtrlButton" type="button" id="demo1" value="Demo 1"/>
				<input class="animCtrlButton" type="button" id="demo2" value="Demo 2"/>
				<input class="animCtrlButton" type="button" id="demo3" value="Demo 3"/>
			</div>
			<t:excl>
				<t:priorityClass peers="stop" >
					<iframe id="simpleBounceFrame" class="time" begin="demo1.click" dur="indefinite"
						end="demo1.click" fill="remove" restart="whenNotActive"
						src="demos/bounce-anim3i.htm" allowTransparency="true" frameborder="0"
						onbegin='document.frames("simpleBounceFrame").document.body.beginElement()' 
						onend='document.frames("simpleBounceFrame").document.body.endElement()' >
					</iframe>
					<iframe id="CPBounceFrame" class="time" begin="demo2.click" dur="indefinite" 
						end="demo2.click" fill="remove" restart="whenNotActive"
						src="demos/CP-anim-demo.htm"  allowTransparency="true" frameborder="0">
					</iframe>
					<iframe id="OrbitFrame" class="time" begin="demo3.click" dur="indefinite" 
						end="demo3.click" fill="remove" restart="whenNotActive"
						src="demos/orbit2i.htm"  allowTransparency="true" frameborder="0"
						onbegin='document.frames("OrbitFrame").document.body.beginElement()' 
						onend='document.frames("OrbitFrame").document.body.endElement()' >
					</iframe>
				</t:priorityClass>
			</t:excl>
		</extra>
    </slide>

    <slide>
		<title>How does it work?</title>
		<pointset>
			<point>Background concepts</point>
			<point>Basic syntax</point>
			<point>Hierarchic time (tree model)</point>
			<point>Sync-arcs and time dependents</point>
			<point>Mixing scheduled and interactive time</point>
			<point>Handling multiple begin and end conditions</point>
			<point>Managing runtime synchronization</point>
		</pointset>
    </slide>

    <slide>
		<title>Background Concepts</title>
		<pointset>
			<point>Arithmetic with time
				<subpoints>
				  <point><content>End-point exclusive intervals</content></point>
				</subpoints>
			</point>
			<point>Indirection and relative time
				<subpoints>
				  <point><content>Times are computed relative to other times</content></point>
				</subpoints>
			</point>
			<point>Resolved and unresolved time</point>
		</pointset>
    </slide>

    <slide>
		<title>Basic Timing Syntax</title>
		<pointset>
		  <point>Timing attributes
			<subpoints>
			  <point><content><code>begin</code>, <code>dur</code>, <code>end</code>, 
					<code>repeat</code></content></point>
			</subpoints>
		  </point>
		  <point>Time containers (grouping)
			<subpoints>
			  <point>Parallel and sequence groups</point>
			  <point>Exclusive groups and interrupt semantics</point>
			</subpoints>
		  </point>
			<point><content>
				<input type="button" id="simpleDemo1Btn" value="Show Source" />
				<input type="button" id="simpleDemo2Btn" value="Show Demo" />
			</content></point>
		</pointset>
		<extra>
		<div id="simpleDemoSrc" begin="simpleDemo1Btn.click" end="simpleDemo1Btn.click" restart="whenNotActive"
			  class="demo time" timeContainer="par" timeAction="display" >
<pre class="example">
&lt;t:par begin=&quot;1s&quot; repeatDur=&quot;indefinite&quot;&gt;
  &lt;t:audio src=&quot;media/talk.mp3&quot; syncBehavior=&quot;locked&quot; /&gt;
  &lt;p timeContainer=&quot;seq&quot; &gt;
    &lt;span dur=&quot;2.9s&quot; &gt;
        SMIL Timing syntax consists of a set of &lt;/span&gt;&lt;br&gt;
    &lt;span dur=&quot;3s&quot;  &gt;
        &lt;em&gt;attributes&lt;/em&gt; for controlling the behavior of media, &lt;/span&gt;&lt;br&gt;
    &lt;span dur=&quot;2s&quot;  &gt;
        and several types of &lt;em&gt;time containers&lt;/em&gt; &lt;/span&gt;&lt;br&gt;
    &lt;span dur=&quot;4s&quot;  &gt;
        that group media together for coordinated presentation. &lt;/span&gt;
  &lt;/p&gt;
&lt;/t:par&gt;</pre>
		</div>
		<div id="simpleDemo2" class="demo time" restart="whenNotActive"
			 begin="simpleDemo2Btn.click" end="simpleDemo2Btn.click" timeContainer="par" timeAction="display">
		<t:par begin="1s" dur="13s" repeatDur="indefinite">
		  <p class="time" timeContainer="seq" timeAction="none" fill="remove" >
			<span class="time" dur="2.9s" fill="hold" >
			   SMIL Timing syntax consists of a set of 
			</span><br/>
			<span class="time" dur="3s" fill="hold" >
			   <em>attributes</em> for controlling the behavior of media, 
			</span><br/>
			<span class="time" dur="2s" fill="hold" >
			   and several types of <em>time containers</em>
			</span><br/>
			<span class="time" dur="4s" fill="hold" >
			   that group media together for coordinated presentation.
			</span>
		  </p>

		  <t:audio src="demos/Media/talk.mp3" syncBehavior="locked" />
 
		</t:par> 
		</div>

		</extra>
    </slide>

    <slide>
		<title>Hierarchic Time</title>
		<pointset>
		  <point>Compare to scene graph</point>
		  <point><content>Each time container <em>transforms</em> time.</content>
			<subpoints>
			  <point>Transformed time is basis for all descendents</point>
			  <point><content>Each element sees <em>local time</em></content>
				<subpoints>
				  <point>Element simple time</point>
				  <point>Element active time</point>
				</subpoints>
			  </point>
			  <point>Can convert from one <em>time space</em> to another</point>
			</subpoints>
		  </point>
		</pointset>
    </slide>

    <slide>
		<title>Sync-arcs &amp; time dependents</title>
		<pointset>
		  <point>What is a Sync-arc?
			<subpoints>
			  <point><content>When one element defines a begin or end time relative to the begin or
				  end of another element.
				<br />
						<code> img <strong>begin="foo.begin" end="bar.end"</strong> ...</code>
			  </content></point>
			  <point>Creates an additional 'arc' in the timegraph</point>
			  <point>Defines a time dependency</point>
			  <point>'Short' and 'long' sync arcs</point>
			</subpoints>
		  </point>
		  <point>Define timing, not runtime sync!</point>
		</pointset>
    </slide>

    <slide>
		<title>Scheduled vs. Event timing</title>
		<pointset>
		  <point>SMIL 1 supported scheduled timing</point>
		  <point>SMIL 2 adds interaction
			<subpoints>
			  <point><content><code>begin="foo.click" end="img3.load"</code> 
					</content></point>
			  <point>Leverages concept of unresolved time</point>
			  <point>Exists within scheduled model</point>
			  <point>Converting event times to schedule</point>
			</subpoints>
		  </point>
		  <point>Interactive timing and dynamism
			<subpoints>
			  <point>Propagating changes</point>
			</subpoints>
		  </point>
		</pointset>
    </slide>

    <slide>
		<title><code>begin</code> and <code> end</code> Lists</title>
		<pointset>
		  <point><content>Lists of times for <code> begin</code> and <code> end</code></content>
			<subpoints>
			  <point>Different 'ways' or 'rules'</point>
			  <point><content>Multiple <code>begin</code>/<code>end</code> times</content></point>
			</subpoints>
		  </point>
		  <point>Define intervals for element</point>
		  <point><content>Controlled with <code> restart</code> attribute</content></point>
		  <point>Multiple begins and cyclic timing</point>
		  <point><content>
				<input type="button" id="CycleDemo1" value="Show Source" />
				<input type="button" id="CycleDemo2" value="Show Demo" />
		  </content></point>
		</pointset>
		<extra>
		<div id="cycleDemoSrc" begin="CycleDemo1.click" end="CycleDemo1.click" restart="whenNotActive"
			  class="demo time" timeContainer="par" timeAction="display" >
<pre>&lt;p id=&quot;red&quot;   begin=&quot;0; green.end-2s&quot; dur=&quot;4s&quot; .../&gt;
&lt;p id=&quot;blue&quot;  begin=&quot;red.end-2s&quot;      dur=&quot;4s&quot; .../&gt;
&lt;p id=&quot;green&quot; begin=&quot;blue.end-2s&quot;     dur=&quot;4s&quot; .../&gt;</pre>
		</div>
		<div id="cycleDemo" begin="CycleDemo2.click" end="CycleDemo2.click" restart="whenNotActive"
			  class="demo time" timeContainer="par" timeAction="display" >
		<t:excl>
		<div id="cycleDiv" class="time" begin="0" timeContainer="par" timeAction="display" >
			<br /><h2>Using Cyclic timing</h2><br /><hr />
		 <div class="cycleDemo" >
		  <p id="red" begin="0; green.end-2s" timeContainer="par" class="big time" 
			   style="color:red; top:0; left:0">Red
			<t:animateColor attributeName="color" from="white" to="red" dur="2s" 
				accelerate="1" autoReverse="true" />
		  </p>
		  <p id="blue" begin="red.end-2s" timeContainer="par" class="big time" 
			   style="color:blue; top:25; left:130">Blue
			<t:animateColor attributeName="color" from="white" to="blue" dur="2s"
				accelerate="1" autoReverse="true" />
		  </p>
		  <p id="green" begin="blue.end-2s" timeContainer="par" class="big time" 
			   style="color:green; top:75; left:35">Green
			<t:animateColor attributeName="color" from="white" to="green" dur="2s"
				accelerate="1" autoReverse="true" />
		  </p>
		 </div>
		</div>

		<div id="repeatDiv" class="time" begin="cycleDemo.click" timeContainer="par" timeAction="display" >
			<br /><h2>Using Repeat timing</h2><br /><hr />
		 <div class="cycleDemo time" timeContainer="par" repeatDur="indefinite" >
 
		  <p id="red2" begin="0" timeContainer="par" class="big time" 
			   style="color:red; top:0; left:0">Red
			<t:animateColor attributeName="color" from="white" to="red" dur="2s" 
				accelerate="1" autoReverse="true" />
		  </p>
		  <p id="blue2" begin="red2.end-2s" timeContainer="par" class="big time" 
			   style="color:blue; top:25; left:130">Blue
			<t:animateColor attributeName="color" from="white" to="blue" dur="2s"
				accelerate="1" autoReverse="true" />
		  </p>
		  <p id="green2" begin="blue2.end-2s" timeContainer="par" class="big time" 
			   style="color:green; top:75; left:35">Green
			<t:animateColor attributeName="color" from="white" to="green" dur="2s"
				accelerate="1" autoReverse="true" />
		  </p>
		 </div>
		</div>

		</t:excl>

		</div>

		</extra>
    </slide>

    <slide>
		<title>Controlling runtime synchronization behavior</title>
		<pointset>
		  <point>Internet delivery of media is unreliable
			<subpoints>
			  <point>Media may not begin when scheduled</point>
			  <point>Streaming media may hiccup or slew</point>
			</subpoints>
		  </point>
		  <point>Documents are not always monolithic</point>
		  <point>SMIL 2 defines sync scope and sync behavior</point>
		  <point>Includes support to 'own' the clock</point>
		</pointset>
    </slide>

    <slide>
		<title>SMIL Animation</title>
		<pointset>
			<point><content>Animation defined: <em>the time-based
					manipulation of some object property</em></content></point>
			<point>Animation elements support common general cases
				<subpoints>
					<point><content><code>animate</code> supports generic interpolation
							of scalar values</content></point>
					<point><content><code>animateMotion</code> abstracts object 
							motion</content></point>
					<point><content><code>animateColor</code> abstracts color
							interpolation</content></point>
					<point><content><code>set</code> supports simplest discrete
							animation cases</content></point>
				</subpoints>
			</point>
			<point>Animation elements timed like media</point>
		</pointset>
    </slide>

    <slide>
		<title>SMIL Animation model</title>
		<pointset>
			<point><content>Each element has a single <em>target</em></content>
				<subpoints>
					<point><content><code>targetElement</code> references the 
							element</content></point>
					<point><content><code>attributeName</code> references the 
							specific property</content></point>
				</subpoints>
			</point>
			<point>Composition model controls interaction among animations
				<subpoints>
					<point><content>activation (begin) time determines priority</content></point>
					<point><content>each animation can <em>override</em> or 
							<em>add to</em> lower priority animations</content></point>
				</subpoints>
			</point>
			<point>Animations can be cumulative (recursive)</point>
		</pointset>
    </slide>

    <slide>
		<title>SMIL Time Manipulations</title>
		<pointset>
			<point>4 additional attributes applied to timed elements
				<subpoints>
					<point><content><code>speed</code>, <code>accelerate</code> 
						and <code>decelerate</code>, <code>autoReverse</code></content></point>
				</subpoints>
			</point>
			<point>Often uesd to emulate common physical phenomena
				<subpoints>
					<point><content>Gravity, momentum, etc.</content></point>
				</subpoints>
			</point>
			<point><content>Actually control the <em>pace</em> of time</content></point>
			<point><content>
				<input type="button" id="AnimDemo1" value="Show Source" />
				<input type="button" id="AnimDemo2" value="Show Demo" />
			</content></point>
		</pointset>
		<extra>
		<div id="animDemoSrc" begin="AnimDemo1.click" end="AnimDemo1.click" restart="whenNotActive"
			  class="demo time" timeContainer="par" timeAction="display" >
<pre class="example">
&lt;h1 style=&quot;position:absolute; top:0; left:0&quot; timeContainer=&quot;par&quot; &gt;
  Bounce
   &lt;t:animateMotion by=&quot;0,100&quot; dur=&quot;3s&quot; accelerate=&quot;1&quot; autoReverse=&quot;true&quot;
                    repeatCount=&quot;indefinite&quot; /&gt;
   &lt;t:animateMotion by=&quot;500,0&quot; additive=&quot;sum&quot; dur=&quot;18s&quot; repeatCount=&quot;indefinite&quot; /&gt;
   &lt;t:animateColor attributeName=&quot;color&quot; from=&quot;white&quot; to=&quot;gold&quot;
      dur=&quot;3s&quot; accelerate=&quot;1&quot; autoReverse=&quot;true&quot; repeatCount=&quot;indefinite&quot; /&gt;
 &lt;/h1&gt;
</pre>
		</div>
		<div id="animDemo" class="demo time" style="height:150" restart="whenNotActive"
			 begin="AnimDemo2.click" end="AnimDemo2.click" timeContainer="par" timeAction="display">
     
		<h1 class="time" style="position:absolute; top:0; left:0; font-size:40px" timeContainer="par" >
		   Bounce
		  <t:animateMotion by="0,100" dur="3s" accelerate="1" autoReverse="true" repeatCount="indefinite" />
		  <t:animateMotion by="500,0" dur="18s" repeatCount="indefinite" />
		  <t:animateColor attributeName="color" from="white" to="red" 
			 dur="3s" accelerate="1" autoReverse="true" repeatCount="indefinite" />
		</h1>
		</div>

		</extra>
    </slide>

    <slide>
		<title>SMIL Time Manipulations - syntax </title>
		<pointset>
			<point><content><code>animate speed='2.5' ...</code></content>
				<subpoints>
					<point>Attribute value is a multiple of normal play speed</point>
				</subpoints>
			</point>
			<point><content><code>animate accelerate='0.5' ...</code></content>
				<subpoints>
					<point>Attribute value is a proportion of simple duration</point>
					<point><code>accelerate</code> and <code>decelerate</code>
							do not affect the duration</point>
				</subpoints>
			</point>
			<point><content><code>animate autoReverse="true"</code></content>
				<subpoints>
					<point>Play forward then backward</point>
				</subpoints>
			</point>
		</pointset>
    </slide>

    <slide>
		<title>SMIL Time Manipulations and structured time</title>
		<pointset>
			<point><content>Time manipulations
					can be applied to time containers</content>
				<subpoints>
					<point>Very useful for animation reuse</point>
					<point>Allows simplified control over complex animations</point>
				</subpoints>
			</point>
			<point>Time is modified for entire subtree</point>
			<point>Only slightly complicates arithmetic
				<subpoints>
					<point>Spec includes pseudo-code algorithms</point>
				</subpoints>
			</point>
		</pointset>
    </slide>

    <slide>
		<title>SMIL Time Manipulations issues</title>
		<pointset>
			<point>Fallback semantics for media
				<subpoints>
					<point>Not all media renderers can handle this</point>
					<point>Time model maintained, but media plays best effort</point>
				</subpoints>
			</point>
			<point>Not appropriate for all presentations!</point>
		</pointset>
    </slide>

<!-- Part C - Integration with XML -->
	<slide>	
		<title>Timing Integration </title>
        <pointset>
			<point>Motivation for a common model</point>
			<point>Requirements</point>
			<point>Examples: HTML+SMIL, SVG</point>
			<point>Approaches to Integration</point>
			<point>Future work and applications</point>
		</pointset>
	</slide>
	<slide>	
		<title>Motivation</title>
        <pointset>
			<point>Common authoring semantics</point>
			<point>Leverage SMIL in HTML/CSS content</point>
			<point>Provide Time model for XML documents
				<subpoints>
					<point>Well-defined syntax and semantics</point>
					<point>One clock for the whole document</point>
				</subpoints>
			</point>
			<point>Synchronize HTML to TV, Radio, etc.</point>
		</pointset>
	</slide>
	<slide>	
		<title>Requirements</title>
        <pointset>
			<point>Need common, straight-forward authoring models</point>
			<point>Need flexible approach to syntax
				<subpoints>
					<point>Sometimes want inline syntax</point>
					<point>Sometimes want to model like style</point>
					<point>Sometimes need a separate document</point>
				</subpoints>
			</point>
			<point>Need to be able to mix approaches</point>
		</pointset>
	</slide>
	<slide>	
		<title>Integration example: XHTML+SMIL</title>
        <pointset>
			<point>XHTML+SMIL lets Web developers:
				<subpoints>
					<point>Control DHTML properties along a timeline</point>
					<point>Integrate media as part of their page description</point>
					<point>Synchronize media elements and actions in the page</point>
				</subpoints>
			</point>
			<point>Reduces dependency on scripting as a way of 
					controlling animation of properties</point>
		</pointset>
	</slide>
	<slide>	
		<title>Integration example: SVG</title>
        <pointset>
			<point>Adds SMIL Animation elements
				<subpoints>
					<point>Target CSS and SVG properties</point>
				</subpoints>
			</point>
			<point>No direct integration of SMIL timing with SVG elements
				<subpoints>
					<point><content>Cannot simply apply <em>transform</em> 
						over time</content></point>
				</subpoints>
			</point>
			<point>Simplified time graph
				<subpoints>
					<point>No time containers</point>
					<point><content>Does have sync arcs, event timing and multiple 
							<code>begin</code>/<code>end</code> values</content></point>
					<point>No time manipulations</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Demos</title>
        <pointset>
			<point>Simple HTML demos</point>
			<point>Expanding ad images</point>
			<point>Business presentations</point>
		</pointset>
	</slide>
	<slide>	
		<title>XHTML+SMIL Timing and Media Markup</title>
        <pointset>
			<point><content>Media elements: <code>video</code>, <code>audio</code>, et al.</content></point>
			<point><content>Timing elements: <code>par</code>, <code>seq</code>, 
								<code>excl</code></content>
				<subpoints>
					<point><content><code>timeContainer</code> attribute</content></point>
				</subpoints>
			</point>
			<point><content>Timing attributes: <code>begin</code>, 
							<code>end</code>, et al.</content>
				<subpoints>
					<point>Applied to most HTML content</point>
					<point>Includes event-based/interactive declaration</point>
				</subpoints>
			</point>
			<point>Animation support
				<subpoints>
					<point>CSS properties, motion, effects, etc.</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>What does <code>begin</code> mean for <code>div</code> or <code>strong</code>?</title>
        <pointset>
			<point><content><code>timeAction</code> controls semantics of adding timing 
					to HTML elements</content>
				<subpoints>
					<point><content><code>intrinsic</code>: defined for phrasal and presentation 
						elements, reverts to visibility for text, div, etc. 
						Schedules media.</content></point>
					<point><content><code>display</code>, <code>visibility</code> 
									control style</content></point>
					<point><content><code>style</code> controls inline style 
							(CSS/XSL)</content></point>
					<point><content><code>class</code> adds class name to 
								XML class property</content></point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Approaches to Integration</title>
        <pointset>
			<point>Inline syntax
				<subpoints>
					<point>Attributes added to language elements</point>
					<point>Approach used in SMIL, HTML+SMIL</point>
				</subpoints>
			</point>
			<point>Styled Timing
				<subpoints>
					<point>CSS or XSL stylesheets used to apply timing to a language</point>
				</subpoints>
			</point>
			<point>Timesheets
				<subpoints>
					<point>Separate timing from both content and presentation style</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Inline Syntax approach</title>
        <pointset>
			<point>Easy to understand, easy to author</point>
			<point><content>Generalized, extensible semantics with 
					<code>timeAction</code></content></point>
			<point>Better when document structure aligned to timing structure</point>
			<point>May also be used to override or augment styled timing
				<subpoints>
					<point>Requires aligned model of timing properties</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Styled Timing approach</title>
        <pointset>
			<point>Useful when document structure aligns closely with timing structure
				<subpoints>
					<point>Example: sequence of highlights on list</point>
				</subpoints>
			</point>
			<point>CSS changes required to manipulate timing properties
				<subpoints>
					<point>CSS3 may include SMIL module</point>
				</subpoints>
			</point>
			<point>XSLT provides interesting alternative</point>
			<point>General need: filter chain model
				<subpoints>
					<point>Universal cascade and view model</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Issues with Styled Timing</title>
        <pointset>
			<point>Must preclude feedback loops
				<subpoints>
					<point>If timing controls style, and style redefines timing, 
							what should happen?</point>
					<point><content>Possible solution: lock timing properties when applying 
							<code>timeAction</code></content></point>
					<point><content>Alternative solution: Static application of timing 
							properties using XSLT</content></point>
				</subpoints>
			</point>
			<point>Specifying the side-effects
				<subpoints>
					<point>When does the effect of timing ripple through CSS, XSL, etc.???</point>
					<point>General problem common to animation</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Timesheets approach</title>
        <pointset>
			<point>Abstracts timing away from content and presentation style
				<subpoints>
					<point><content>SMIL timing, <code>timeAction</code>, 
							no media</content></point>
					<point><content><em>Animation elements?</em></content></point>
				</subpoints>
			</point>
			<point>Useful when:
				<subpoints>
					<point>document structure and timing structure do not align</point>
					<point>synchronization spans multiple documents</point>
					<point>inline syntax impractical or illegal</point>
					<point>there are Copyright restrictions
					<subpoints>
						<point>Digital Talking Books </point>
					</subpoints>
					</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Issue: Interpreting multiple references to an element</title>
        <pointset>
			<point><content>Multiple orthogonal <code>timeAction</code>s are 
					easy: just do all of them</content></point>
			<point>Multiple instances problematic
				<subpoints>
					<point>Synthesize elements? (No!)</point>
				</subpoints>
			</point>
			<point>Conclusion: model as animation
				<subpoints>
					<point><content>Requires property-based model for 
							<code>timeAction</code></content></point>
					<point><content>Simplified animation <em>"sandwich"</em></content>
						<subpoints>
							<point>Use activation priority, no composition</point>
						</subpoints>
					</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Other Issues</title>
        <pointset>
			<point>How to combine Timesheets with other approaches?
				<subpoints>
					<point>Inline and Styled Timing define a cascade</point>
					<point>Inline markup overrules Styled Timing</point>
					<point>Timesheets define an additive model
						<subpoints>
							<point>Do we need composition tools to combine with 
									other approaches?</point>
						</subpoints>
					</point>
				</subpoints>
			</point>
			<point>Defining sync among documents
				<subpoints>
					<point>ITV model of HTML synced to TV</point>
					<point>Digital Talking Books</point>
				</subpoints>
			</point>
		</pointset>
	</slide>
	<slide>	
		<title>Integration conclusions</title>
        <pointset>
			<point><content>Common model based upon 
					<code>timeAction</code> is essential</content></point>
			<point>Cascade rules combine Styled and Inline Timing approaches</point>
			<point>Models timing as properties a la CSS</point>
			<point>Timesheets layer, rather than override
				<subpoints>
					<point>Timesheets can specify multiple actions, using 
						animation semantics</point>
				</subpoints>
			</point>
			<point>W3C must define filter chain</point>
		</pointset>
	</slide>

	<slide>	
		<title>Future work &amp; Applications</title>
        <pointset>
			<point>Formalize Timesheets
				<subpoints>
					<point>Collaborating with Philips, CWI.</point>
				</subpoints>
			</point>
			<point>Potential customers
				<subpoints>
					<point>DTB, eBooks, multimodal documents</point>
				</subpoints>
			</point>
			<point>Named Timespaces (my recent work at MSR)
				<subpoints>
					<point>Defines sync and interrupt semantics</point>
					<point>Synchronizes XHTML+SMIL to broadcast television, 
							DVD and CD content</point>
					<point>Tool for accessible multimedia?</point>
				</subpoints>
			</point>
		</pointset>
	</slide>

<!-- Part D - Looking ahead - Timing and Fragmentation -->
	<slide>	
		<title>Looking ahead - Timing and Fragmentation</title>
        <pointset>
			<point>Intro to XML Fragment Interchange</point>
			<point>Fragmentation and Annotation on the Semantic Web</point>
			<point>Issues/Questions for SMIL</point>
			<point>Issues for compound documents</point>
		</pointset>
	</slide>

	<slide>	
		<title>XML Fragment Interchange</title>
        <pointset>
			<point>Allows one document to use a portion of another document</point>
			<point>XPointer, XPath specify fragment</point>
			<point>Fragment Context Information provides intelligent context
				<subpoints>
					<point>Represents fragment as part of larger structure</point>
					<point>Includes any necessary(!) semantic context</point>
					<point>Can allow client to access full source document</point>
				</subpoints>
			</point>
			<point>Not the same as XInclude</point>
		</pointset>
	</slide>

	<slide>	
		<title>Fragmentation and Annotation on the Semantic Web</title>
        <pointset>
			<point>Annotations to a document refer to (a fragment of) the document
				<subpoints>
					<point>Segmentation is a form of annotation</point>
					<point>Smart representation uses pointers, not copies</point>
				</subpoints>
			</point>
			<point>Annotations are documents!</point>
			<point>Content authoring will move to annotation</point>
			<point>Semantic web depends upon intelligent fragment references</point>
		</pointset>
	</slide>

	<slide>	
		<title>Issues/Questions for SMIL</title>
        <pointset>
			<point>What will it mean to use fragments of timed documents?
				<subpoints>
					<point>Should the entire (sparse) timegraph be included?</point>
					<point>Can we allow (and patch) 'dangling' sync-arc references?</point>
				</subpoints>
			</point>
			<point>How to define timed annotations of timed documents?</point>
			<point>Can timing and animation be defined that will (better)
					survive document fragmentation (and transformation)?</point>
		</pointset>
	</slide>

	<slide>	
		<title>Issues for compound documents</title>
        <pointset>
			<point>How to deal with ID clash?
				<subpoints>
					<point>We need a concept of ID-spaces, a la namespaces</point>
					<point>Namespace tree allows cross-document references
						<subpoints>
							<point>Including/referencing node is bridge point</point>
							<point>Useful for script/code, for timing, etc.</point>
						</subpoints>
					</point>
				</subpoints>
			</point>
		</pointset>
	</slide>

	<slide>	
		<title>Issues for compound documents</title>
        <pointset>
			<point>Need to represent fragment references as structured document in the DOM
				<subpoints>
					<point>Makes structured ID-spaces possible</point>
					<point>Has precedent in DOM for frames</point>
					<point>Requires smarter User Agents to deal with accessibility, etc.</point>
				</subpoints>
			</point>
		</pointset>
	</slide>


<!-- Part E - Closing, Resources -->
	<slide>	
		<title>Resources</title>
        <pointset>
			<point>
				<content>Specs available at 
					<a href="http://www.w3.org/TR/smil20">
						http://www.w3.org/TR/smil20</a>
				</content>
			</point>
			<point>Early implementation in IE 5.5/IE6 (HTML+TIME)
				<subpoints>
					<point>IE docs/demos at msdn.microsoft.com</point>
				</subpoints>
			</point>
			<point>SMIL Animation in SVG viewers</point>
			<!--
			<point>WWW9 workshop on multimedia
				<subpoints>
					<point><content><a href="http://www.cwi.nl/~lynda/www9/">
							http://www.cwi.nl/~lynda/www9/</a></content></point>
				</subpoints>
			</point>
			 -->
			<point>Time model tutorial available:
				<subpoints>
					<point>research.microsoft.com/scripts/pubs/view.asp?TR_ID=MSR-TR-2001-01</point>
				</subpoints>
			</point>
		</pointset>
	</slide>

</slideset>
