4.では,SMIL 2.0内容制御モジュールを定義する。これらのモジュールは,実行時内容選択及び最適化された内容配布を提供する要素及び属性を含む。SMIL内容制御の機能は,次の四つのモジュールにわたって分割される。
すべての内容制御の要素及び属性がモジュールの中で定義されるので,他のマーク付け言語の設計者は,言語の中にメディア内容制御を含める必要がある場合には,モジュールごとにこの機能を再使用できる。
CustomTestAttributesモジュールにおける機能は,BasicContentControlモジュールの機能の上に構築される。そこで,CustomTestAttributesモジュールを実装するプロファイルは,BasicContentControlモジュールも実装しなければならない。PrefetchControlモジュール及びSkipContentControlモジュールは,(その使用に関して)前提条件をもたない。
内容制御のためのモジュール記述の中には,"利用者の好み"の概念が存在してよいものもある。利用者の好みは,通常は,好みを指定するダイアログボックスを使用して再生エンジンによって設定されるが,この規定は,それら好みが利用者からSMILプレーヤまでどのように伝えられるかについて制限しない。
内容制御属性が評価される時点は,実装依存とする。属性は,複数回評価されてもよい。動的な再評価は,許されるが,必須ではない。
SMIL 1.0は,ある条件がtrue(真)の場合に限り要素を処理するために,"試験属性"機構を提供する。この条件とは,例えば,利用者によって指定された言語の好みがメディアオブジェクトのそれと一致する場合などである。一つ以上のテスト属性が,メディアオブジェクト参照又はタイミング構造要素に現われてもよい。ある属性がtrueと評価される場合,(その属性を)含む要素は再生され,属性がfalseと評価される場合,含む要素は無視される。SMIL 1.0は,文書の部分の集合がが代替可能なものの集まりであって,ある条件を満たす最初のものが選ばれることが望ましいということを表現するために,switch要素も提供する。これは,音声ファイルの異なる言語の版が利用可能であって,クライアントがそれらのうちの一つを選択してもよいことを表現するために有用となる。
SMIL 2.0 BasicContentモジュールは,SMIL 1.0からの試験属性機能を含み,新しいシステム試験属性をサポートすることによってそれを拡張する。4.は,定義済みシステム試験属性,switch要素及び試験属性行内配置の使用を記述する。試験属性を拡張するための機構は,CustomTestAttributesモジュールの中で提示される。
この規定は,言語設計者によって許可されるとおりに,言語要素に追加できる試験属性のリストを定義する。SMIL 1.0では,これらの要素は,同期要素及びメディア要素とする。概念的には,これらの属性は,論理値試験を表現する。一つの要素のために指定される試験属性のいずれもがfalseと評価される場合,この属性をもつ要素は無視される。
SMIL 2.0は,SMIL 1.0システム属性の完全な集合をサポートする。SMIL 1.0と互換性のあるシステム試験属性は,次による。
- systemBitrate
- systemCaptions
- systemLanguage
備考 この属性は,非推奨とする。systemCaptions又はsystemOverdubOrSubtitleを使用するほうがよい。- systemRequired
- systemScreenDepth
- systemScreenSize
を除いて,これらの属性の名前は,SMIL 2.0のcamelCase規約(1)を反映するために変更されたことに注意すること。SMIL 1.0のハイフン付けされた名前は,この規定のこの版では非推奨とする。
注1 複数の単語を連結して新たな一つの語を表現する場合に,連結した語の最初の元になる各単語以外の最初のアルファベットを大文字とし,それ以外のアルファベットはすべて小文字とする規約のことをいっている。例えば,"camelCase"は,"camel"+"case"だが,これらを連結する場合に,2番目の元になる単語の"case"の最初のアルファベットである"c"を大文字とし,それ以外は小文字になっている。同様に"systemScreenDepth"では,"system"+"screen"+"depth"だが,2番目及び3番目の元になる単語の最初のアルファベットである"s"及び"d"が大文字となっており,それ以外は小文字となっている。
SMIL 2.0で新しいものは,システム環境の追加的特質を定義するシステム試験属性とする。これらは,次による。
各属性の完全な定義は,属性定義で与えられる。
switch要素は,制作者に,受理可能な要素の最初だけが選択される代替要素の集合を指定することを可能にする。
switchの使用例は,次による。
... <par> <video src="anchor.mpg" ... /> <switch> <audio src="dutchHQ.aiff" systemBitrate="56000" ... /> <audio src="dutchMQ.aiff" systemBitrate="28800" ... /> <audio src="dutchLQ.aiff" ... /> </switch> </par> ...
この例では,一つの音声オブジェクトが,ビデオオブジェクトに伴って選択される。システムビット率が56000以上の場合,オブジェクトdutchHQ.aiffが選択される。システムビット率が少なくとも28800であって56000未満の場合,オブジェクトdutchMQ.aiffが選択される。他のオブジェクトが選択されない場合には,代替のdutchLQ.aiffが選択される。これは,それが試験属性をもたず(したがって,常に受理可能になる。),他の試験属性がtrueと評価されなかったことによる。
制作者は,最も望ましいものから最も望ましくないものへと,代替選択肢を並べることが望ましい。さらに,制作者は,switchの中の最後の項目として相対的に安全装置といえる選択肢を置きたいと思ってもよい。こうすることで,switch内の少なくとも一つの項目が(それが明示的に望まれないのでない限りは)選択される。
幾つかのネットワークプロトコル,例えば,HTTP,RTSPなど,は,内容折衝をサポートすることに注意すること。これは,ある場合には,switch要素の使用の代替となるかもしれない。
システム試験属性値の設定を決定するのは,SMIL 2.0プレーヤの責任とする。それら設定は,構成設定に基づいて静的に決定されてもよいし,動的に決定(又は再評価)されてもよい。これは,プレーヤの実装に依存する。プレーヤは,無作為にswitchのメンバを選択してはならない。
要素選択におけるより多くの柔軟性を可能とするために,試験属性を,switch要素の外部で使用してもよい。
行内試験属性の使用についての次の例では,利用者がキャプションをONにしたい場合だけ,キャプションが表示される。
... <par> <audio src="audio.rm"/> <video src="video.rm"/> <textstream src="stockticker.rt"/> <textstream src="closed-caps.rt" systemCaptions="on"/> </par> ...
行内構成要素によって示される代替選択肢は,switch文の集合として表現できる。しかし,結果として生じるswitchは,サイズが膨大になる可能性がある。行内試験機構を使用するには,適用する内容の指定を簡単にすることが重要となる。特に,多くの独立な代替が存在する場合にはそうである。しかし,試験属性を行内で使用する場合には,(switchの内部にある試験属性なしに要素を定義するなど,)安全装置代替機構が存在しないことには注意すること。
共通的なシナリオにおいて,実装は,要素上のsystemBitrate属性によって,選択を可能にしたいとしてもよい。SMIL 2.0プレーヤは,受理可能なビット率の値を捜して,switch内の要素の各々を一度に一つ評価する。
... <par> <text .../> <switch> <par systemBitrate="40000"> ... </par> <par systemBitrate="24000"> ... </par> <par systemBitrate="10000"> ... </par> </switch> </par> ...
この例では,(移動端末の場合など)システムビット率が10000未満と決定された場合,par構成要素は含まれないことになる。
switch内の要素は,要素の任意の組合せであってもよい。例えば,次のとおりに,代替音声トラックを指定できる。
... <switch> <audio src="joe-audio-better-quality" systemBitrate="16000" /> <audio src="joe-audio" /> </switch> ...
システムビット率が16000未満の場合,標準品質音声が,デフォルトによって提示される。
次の例において,音声資源は,オランダ語及び英語の両方で利用可能になっている。利用者の好む言語に基づいて,プレーヤは,これらの音声資源のうちの一つを選ぶことができる。
... <switch> <audio src="joe-audio-nederlands" systemLanguage="nl"/> <audio src="joe-audio-english" systemLanguage="en"/> </switch> ...
この例では,システム言語設定がオランダ語又は英語以外の場合には,音声は提示されない。ある選択をデフォルトとするためには,その選択をリストの中の最後の項目とし,試験属性を含まないとすることが望ましい。次の例では,英語がデフォルトとして使用されている。
... <switch> <audio src="joe-audio-nederlands" systemLanguage="nl"/> <audio src="joe-audio-english" /> </switch> ...
次の例において,プレゼンテーションは,異なる解像度及びビット深さをもつスクリーン用に設計された代替部分を含む。スクリーンの特定の特質に依存して,プレーヤは,試験属性がtrueと評価されるすべてのうちの最初の代替を使用しなければならない。
... <par> <text .../> <switch> <par systemScreenSize="1024X1280" systemScreenDepth="16"> ... </par> <par systemScreenSize="480X640" systemScreenDepth="32"> ... </par> <par systemScreenSize="480X640" systemScreenDepth="16"> ... </par> </switch> </par> ...
次の例は,0個以上のメディアオブジェクトが付随するビデオを示す。システム言語がオランダ語又は英語のいずれかに設定されている場合,適切な音声オブジェクトが再生される。さらに,システム言語がオランダ語又は英語のいずれかに設定され,systemCaptionsもonに設定された場合,適切なテキストファイルも表示される。
... <par> <video src="anchor.mpg" ... /> <audio src="dutch.aiff" systemLanguage="nl" ... /> <audio src="english.aiff" systemLanguage="en" ... /> <text src="dutch.html" systemLanguage="nl" systemCaption="on"... /> <text src="english.html" systemLanguage="en" systemCaption="on"... /> </par> ...
システム言語がオランダ語又は英語以外に設定される場合,(ビデオ以外)のオブジェクトはレンダリングされない。行内評価のために試験属性を使用する場合には,すべての場合に捕捉される(catch-all)デフォルト機構が存在しないことに注意すること。
次の例において,フランス語の映画は,英語,ドイツ語及びオランダ語の吹替え及び字幕のトラックを利用可能とする。次のSMILの一部は,これを表現し,利用者が好む代替選択肢に切り替える。
... <par> <switch> <audio src="movie-aud-en.rm" systemLanguage="en" systemOverdubOrSubtitle="overdub"/> <audio src="movie-aud-de.rm" systemLanguage="de" systemOverdubOrSubtitle="overdub"/> <audio src="movie-aud-nl.rm" systemLanguage="nl" systemOverdubOrSubtitle="overdub"/> <!-- French for everyone else --> <audio src="movie-aud-fr.rm"/> </switch> <video src="movie-vid.rm"/> <switch> <textstream src="movie-sub-en.rt" systemLanguage="en" systemOverdubOrSubtitle="subtitle"/> <textstream src="movie-sub-de.rt" systemLanguage="de" systemOverdubOrSubtitle="subtitle"/> <textstream src="movie-sub-nl.rt" systemLanguage="nl" systemOverdubOrSubtitle="subtitle"/> <!-- French captions for those that really want them --> <textstream src="movie-caps-fr.rt" systemCaptions="on"/> </switch> </par> ...
SMIL 2.0 BasicContentControlは,switch要素,及び定義済みシステム試験属性の集合を定義する。
switch要素は,制作者が代替要素の集合を指定のを可能にする。要素は,次のとおりに選択される。プレーヤは,switch要素に出現する順番に要素を評価する。最初の受理可能な要素が,switch内のすべての他の要素を排他して選択される。実装は,すべての子要素に対する試験属性が失敗した場合には,switch内のオブジェクトを任意に選択してはならない。
この要素は,プロファイルにおけるすべての要素に要求された属性以外の属性をもたない。
要素の内容は,言語実装依存とする。
SMIL 2.0言語プロファイルにおいて,switchがbody要素の直接又は間接の子として使用される場合,それは,どんなメディアオブジェクト又はタイミング構造コンテナを含んでもよいし,又は入れ子にされたswitch要素を含んでもよい。これらの要素はすべて,switchの内部に複数回出現してもよい。switchがhead要素の直接又は間接の子として使用される場合,それは,一つ以上のlayout要素を含んでもよい。
SMIL 2.0は,次のシステム試験属性を定義する。要素のために指定された試験属性のうちのいずれもがfalseと評価される場合,この属性をもつ要素は,無視される。SMIL 1.0からのほとんどのハイフン付けされた試験属性名は非推奨とし,現在のSMILのcamelCase規約を使用する名前のほうがよいとすることに注意すること。これについては,非推奨とされたSMIL 1.0の名前を,望ましい名前の後に括弧に入れて示す。
備考 これらの値は,mozillaプロジェクトによって定義された_PR_SI_ARCHITECTURE定数に由来している。
systemLanguage属性及び非推奨のsystem-language属性の構文は,([XML10]で定義されるとおりの)EBNF記法を使用して,XML名前空間接頭辞[XML-NS]のリストとして,','文字によって区切って,次のとおりに定義される。
systemLanguageArgumentValue ::= (languageTag (S? ',' S? languageTag)*)?
ここで,許可される空白は"S"として示され,('S'のための[XML10]の定義から取られ,)次のとおりに定義される。
S ::= (#x20 | #x9 | #xD | #xA)+
実装についての備考 言語の好みの選択を利用者に利用可能にする場合,実装者は,大部分の利用者がここで記述したとおりの言語照合の詳細には精通していないことを考慮するほうがよく,適切なガイダンスを提供することが望ましい。例えば,利用者は,"en-gb"を選択することによって,イギリス英語が利用可能でない場合に,何らかの英語文書を利用できると間違って仮定してしまうかもしれない。利用者の好みを設定するための利用者インタフェースは,最良の一致を得るためには"en"を追加するように利用者を導くことが望ましい。
備考 これらの値は,mozillaプロジェクトによって定義された_PR_SI_SYSNAME定数に由来している。
systemRequiredArgumentValue := NMTOKEN (S? '+' S? NMTOKEN)*ここで,許可される空白は"S"として示され,('S'のための[XML10]の定義から取られて,)次のとおりに定義される。
S ::= (#x20 | #x9 | #xD | #xA)+
各々の定義済み試験属性のための設定を決定することは,SMIL 2.0プレーヤの責任とする。これらの値は,静的な構成設定によって決定されてもよいし,動作時中に動的に評価されてもよい。それらの設定及び再評価の振る舞いは,実装依存とする。
SMILのこの版に対しては,falseと評価される指定された試験属性をもつ要素,又は選択されないswitch内の要素は,無視されるものと考えられ,文書の中に指定されていないものとして振る舞う。これらの要素へのいかなる参照は,要素が文書の中に存在しないものとみなす。特に,要素へのいかなるID参照も,そのIDをもつ要素が存在しないものとして動作する。このモジュールを統合する言語は,これらの無視される要素に関係した何らかの付加的な振る舞いを指定しなければならない。SMIL 2.0 Languageプロファイルでは,無効なIDを参照するタイミング属性は,不定であるとして取り扱われる。
備考 制作者は,無視される要素を扱うためのこのモデルが,SMILの将来の版において改訂され,関係するセマンティクスも変更されるかもしれないことに注意することが望ましい。これらの変更は,試験属性及び/又はswitch要素の構文解析時の(又は等価性の)評価だけをサポートする実装に影響しないほうがよい。しかし,試験属性及び/又はswitch要素の動的再評価(すなわち,文書のプレゼンテーションが行われている間の再評価)のセマンティクスは,SMILのこの版では定義されない。これは,将来の版において示される。
備考 制作者は,幾つかの代替要素がswitchの中に含まれ,それらのどれもがtrueと評価されない場合,メディアオブジェクトを一つ以上の付随するオブジェクトなしで表示するような状況になってもよいことを理解することが望ましい。そのために,switchの最後にすべての場合において受理可能な"catch-all"選択を含むことが推奨される。
このモジュールにおける機能は,他のSMIL 2.0モジュールの中で定義される機能に基づいて構築されない。
SMIL内容制御モジュールについては,完全なDTDを参照すること。
SMIL BasicContentControlモジュールにおける定義済みシステム試験属性の使用は,モジュールの定義内で固定される属性に基づく選択機構を提供する。CustomTestAttributeモジュールは,制作者定義のカスタム試験属性の定義を用いて,この機能を拡張する。カスタム試験属性は,プレゼンテーション制作者が特定の文書の中で使用するための制作者自身による試験属性を定義することを可能にする。カスタム試験属性は,uid属性を使用して,アプリケーション文書間で共有されてもよい。
システム試験属性を用いる場合のように,カスタム試験属性は,タイミング構造及びメディアオブジェクトの要素内で使用できる。カスタム試験属性がtrueと評価される場合,それを含む要素は活性化され,カスタム試験属性がfalseと評価される場合,それを含む要素は無視される。SMILのこの版では,無視される要素は,それがソース文書の一部でないものとして,扱われる。その結果,無視されるノードのIDを参照するあらゆる要素も,実効的には,無効のIDを参照することになる。このモジュールを統合する言語は,これらの無視される要素と関係する何らかの付加的な振る舞いを指定しなければならない。
カスタム試験属性は,アプリケーション及び/又は文書に特定なので,属性定義及び属性設定を可能にするための機構を必要とする。属性定義は,customAttributes要素及びcustomTest要素によって行われる。カスタム試験属性の初期状態は,defaultState属性を用いて制作者の制作時に設定でき,true又はfalseのどちらかの値をとる。このモジュールは,これらの機構を使用する属性の動作時再設定をさせないための能力を制作者に与える値hiddenを,override属性に提供する。
属性の状態は,次の三つの方法のうちの一つで変更できる。
カスタム試験属性と関連する値を設定及び修正するための正確な規則は,値設定のための規則で与えられる。
実装は,方法2及び方法3のいずれか又は両方をサポートしてもよいし,どちらもサポートしなくてもよい。方法2がサポートされる場合,uidの中のURI値は,単に一意識別子とし,その動作時値がウェブ上で取得されなければならないことを示唆しない。値は,局所的に記憶及び取得されてもよく,uidによって識別されるだけでもよい。これを行う正確な方法は,実装依存とする。方法3がサポートされる場合,カスタム試験属性機能は,カスタム試験属性の直接的利用者操作のために特定のUIサポートを要求するわけではない。
次の例は,SMIL 2.0 Languageプロファイル文書内でカスタム試験属性が適用できる一つの方法を示す。
<smil> <head> <layout> <!-- define projection regions --> </layout> <customAttributes> <customTest id="west-coast" title="West Coast Edition" defaultState="false" override="visible" uid="http://defs.example.org/user-settings/west-coast" /> <customTest id="east-coast" title="East Coast Edition" defaultState="false" override="visible" uid="http://defs.example.org/user-settings/east-coast" /> <customTest id="far-north" title="Northern Edition" defaultState="false" override="visible" uid="http://defs.example.org/user-settings/far-north" /> <customTest id="the-rest" title="National Edition" defaultState="true" override="hidden" /> </customAttributes> </head> <body> ... <par> <img src="background.png" region="a"/> <video src="story_1v.rm" region="b" /> <switch> <audio src="story_1w.rm" region="c" customTest="west-coast"/> <audio src="story_1e.rm" region="c" customTest="east-coast"/> <audio src="story_1n.rm" region="c" customTest="far-north"/> <audio src="story_1r.rm" region="c" customTest="the-rest"/> </switch> </par> ... </body> </smil>
ヘッド部におけるcustomAttributes要素は,利用可能なカスタム試験属性の定義を含む。customTest要素によって定義される各々のカスタム試験属性は,識別子及び(利用可能な場合には利用者エージェントが属性をラベル付けするために使用できる)タイトル,さらに,(オプションの)初期状態定義,この属性に対する値設定のための一意識別子を含むUID,及び上書きフラグを含んでいる。
"west-coast","east-coast"及び"far-north"と命名されたカスタム試験変数は,falseのデフォルトレンダリング状態を用いて定義される。それらは,各々,それぞれの変数のための局所設定を定義するために使用されるURIへの参照を含む。
カスタム試験変数"the-rest"は,trueのデフォルトレンダリング設定を用いて定義される。
body内部で,SMILのswitch構造は,様々なカスタム試験属性の値に依存するプレゼンテーションの中に取り込むメディアオブジェクトを選択するために使用される。trueの値を含む最初のオブジェクトがレンダリングされるが,この例では,最後の選択肢が常にtrueと解決されるので,他のオブジェクトがtrueと解決されない場合,最後の選択肢がレンダリングされる。
この例はカスタム試験属性のswitchに基づく使用を示しているが,この機能は,行内使用の試験属性としても適用できる。
カスタム試験属性に関連する値の設定は,次のとおりに行われる。
カスタム試験属性の利用者設定はURI設定に優先することに注意すること。利用者が属性のための値を指定しなかった場合,URI設定が優先する。定義済みシステム試験属性を用いる場合のように,この評価は,実装定義の方法で発生する。値は,動的に(再)評価されてもよいが,これは必須ではない。すべての実装が属性のuid又はUIの設定をサポートする必要はないことにも注意すること。
4.3.2は,SMIL CustomTestAttributesモジュールにおいて機能を構築する要素及び属性を定義する。customAttributes要素及びcustomTest要素は,カスタム試験属性変数を定義するために使用し,customTest属性は,それを含む要素の評価を制御するために,メディアオブジェクト及びタイミング構造の参照において行内で使用する。
customAttributes要素は,カスタム試験属性の各々の定義を含む。含まれる要素は,switch文の中で,又は文書中の行内試験属性として使用できる制作者指定の試験属性の集まりを定義する。
この要素は,プロファイルの中のすべての要素に要求される属性以外の属性をもたない。
customAttributes要素は,一つ以上のcustomTest要素を含んでもよい。
customTest要素は,switch要素の中で,又はメディアオブジェクト及びタイミング構造の要素における行内で,試験引数として使用される制作者指定の名前を定義する。customTest要素は,文書ヘッド部の一部を構成するcustomAttributes要素を示す箇条内で定義される。
備考 URIと関連する実際の評価機構は,実装依存とする。それは,局所ファイル又はレジストリの中の単純な検索から,能力の高いデータベースによる安全な参照まで,多様であることができ,実装によって提供される他の構成設定によって影響を受けてもよい。
なし。
customAttributes要素及びcustomTest要素に加えて,このモジュールは,言語設計者によって,メディアオブジェクト及びタイミング構造の選択を要求する要素に適用できるcustomTest属性を提供する。すべての操作上の観点からは,カスタム試験属性は,基本内容制御(BasicContentControl)モジュールの定義済みシステム試験属性機能に類似している。
customTestの構文は,([XML10]で定義されるとおりの)EBNF記法を使用して,"+"記号によって区切ったcustomTest要素識別子参照のリストとして,定義される。
CustomTestArgumentValue := IDREF (S? '+' S? IDREF)*ここで,許可される空白は,"S"として示され,('S'のための[XML10]の定義から取ってきて,)次のとおりに定義される。
S ::= (#x20 | #x9 | #xD | #xA)+
このモジュールにおける機能は,BasicContentControlモジュールにおいて定義された機能の上に構築される。BasicContentControlモジュールは,CustomTestAttributeモジュールの取込みのために必須な前提条件とする。
カスタム試験要素及び属性を実装するプロファイルは,一意なXML識別子をcustomTest要素と関連付ける方法を提供しなければならず,その結果として,customTest属性によって使用できる。プロファイルは,記述的なテキストをcustomTest要素と関連付ける方法を提供することが望ましい。これは,GUI又は利用者に対して表示されてもよい他の選択機構で使用してもよい。SMIL 2.0 Languageプロファイルに対しては,要素のid属性及びtitle属性が,この目的のために役に立つ。
SMIL内容制御モジュールのための完全なDTDを参照すること。
このモジュールは,文書のレンダリング性能を改善する手法における,サーバからの内容の取得を制御するために使用できる要素及び属性を定義する。
この要素は,利用者エージェントに対して,メディア資源が今後使用されるということ,及び文書再生をより滑らかにするために資源の一部又は全部を事前に取得することを制作者が望んでいるということの提案又はヒントを与える。利用者エージェントは,prefetch要素を無視できる。しかし無視すると,資源が必要とされるときに,文書再生において中断が発生する可能性がある。この要素は,制作ツール又は経験豊かな制作者に,利用可能な帯域幅又は時間がある場合,資源の取得をスケジューリングする能力を与える。prefetch要素は,XML文書の本体内に含まれ,そのスケジューリングは,明示的なタイミングが存在しない場合には,その字句的な順番に基づいて行われる。
備考 動的に内容を変更するURLからデータを先読みすることは,危険な場合がある。資源全体を先読みしない場合,残りのデータを求める後続の要求が,より新しい資源からのデータを得てしまう可能性がある。利用者エージェントは,内容に適用される適切なキャッシュ化指令,例えば,HTTPにおけるno-cache(キャッシュなし) 822 ヘッダ,を尊重することが望ましい。より特定的には,キャッシュ不可として印付けされた内容は,再生されるごとに,再取得しなければならない。キャッシュ可能な内容は使用前に先読みすることができ,先読みした結果は将来の使用のためにキャッシュされる。
<smil xmlns="http://www.w3.org/2001/SMIL20/PR/Language"> <body> <seq> <par> <prefetch id="endimage" src="http://www.example.org/logo.gif"/> <text id="interlude" src="http://www.example.org/pleasewait.html" fill="freeze"/> </par> <video id="main-event" src="rtsp://www.example.org/video.mpg"/> <img src="http://www.example.org/logo.gif" dur="5s"/> </seq> </body> </smil>
この例は,テキストオブジェクトのレンダリングと平行した先読みをともなって始動する。テキストは離散メディアであって,ただちに終了する。prefetch要素は,デフォルトで利用可能な帯域すべてを使って画像全体を先読みし,画像がダウンロードされた時,prefetch要素は終了する。それは<par>を終了し,ビデオが再生を開始する。ビデオが終了する時,画像が表示される。
<html> <body> <prefetch id="upimage" src="http://www.example.org/up.gif"/> <prefetch id="downimage" src="http://www.example.org/down.gif"/> .... <!-- script will change the graphic on rollover --> <img src="http://www.example.org/up.gif"/> </body> </html>
prefetchは,サーバからプレーヤへのメディアオブジェクトの転送のスケジューリングに影響を与える機構を制作者に与える。
文書は,prefetch要素が無視されても,まだ再生されなければならない,しかし,文書のプレゼンテーションにおいて再バッファ処理及び一時停止が発生するかもしれない。prefetch要素のための先読みが無視された場合でも,その要素におけるタイミングは,まだ考慮される。例えば,prefetch要素がdur="5s"をもつ場合,prefetch要素のタイミングに依存する要素は,先読みに5秒かかったものとして振る舞う。
先読み操作が実装によってサポートされている場合,prefetch要素の本来的持続時間は,メディア取得の持続時間とし,先読みがサポートされていない場合,0とする。
prefetch要素が繰り返される場合,親要素における再始動又は繰返しのために,先読み操作は,再び発生することが望ましい。このことは,例えば,各要求にともない内容が変化するURLへのバナー広告のために先読みが行われる場合,"取得"データが適切に表示されることを保証する。
prefetch要素は,次の属性をサポートする。
"0%"の値をもつ属性は,無視され,属性が指定されていないものとして取り扱われる。
mediaSize及びmediaTime の両方が指定される場合,mediaSizeが使用され,mediaTimeは無視される。
メディアオブジェクトにおけるclipBegin又はclipEndが先読みとは異なっている場合,実装は取得されたデータ使用できるが,結果は最適化されていなくてもよい。
bytes-value ::= Digit+; 任意の正の数
percent-value ::= Digit+ "%"; 0〜100の範囲の中の任意の正の数
Clock-val ::= ( Hms-val | Smpte-val )
Smpte-val ::= ( Smpte-type )? Hours ":" Minutes ":" Seconds
( ":" Frames ( "." Subframes )? )?
Smpte-type ::= "smpte" | "smpte-30-drop" | "smpte-25"
Hms-val ::= ( "npt=" )? (Full-clock-val | Partial-clock-val
| Timecount-val)
Full-clock-val ::= Hours ":" Minutes ":" Seconds ("." Fraction)?
Partial-clock-val ::= Minutes ":" Seconds ("." Fraction)?
Timecount-val ::= Timecount ("." Fraction)? (Metric)?
Metric ::= "h" | "min" | "s" | "ms"
Hours ::= DIGIT+; 任意の正の数
Minutes ::= 2DIGIT; 00〜59の範囲
Seconds ::= 2DIGIT; 00〜59の範囲
Frames ::= 2DIGIT; @@ range?
Subframes ::= 2DIGIT; @@ range?
Fraction ::= DIGIT+
Timecount ::= DIGIT+
2DIGIT ::= DIGIT DIGIT
DIGIT ::= [0-9]
Timecount値に対して,デフォルトの単位(Metric)は,"s"(秒)とする。
bitrate-value ::= Digit+; 任意の正の数
PrefetchControlモジュールを統合するプロファイルは,取得されるメディアを指定するために必要な属性を追加しなければならない。一般に,これらは,メディア要素それ自体における属性と同じ資源指定属性になる。さらに,プロファイルは,prefetch要素のタイミングを制御するために必要な属性を追加しなければならない。
SMIL内容制御モジュールのための完全なDTDを参照すること。
このモジュールは,一つの属性,skip-content属性,を含む。その属性は,この属性が出現する要素の評価を選択的に制御するために使用できる。この属性は,SMILの将来の拡張性のために導入される。機能は,SMIL 1.0から変わっていない。
SkipContentControlモジュールは,いかなる要素の定義も含まない。
この拡張機構を可能にするためにどの要素がskip-content属性をもつかを指定することは,言語プロファイルの責任とする。