previous next content


WD - smil   − boston −  19991115

3. SMIL-Boston アニメーションモジュール

編纂者
Patrick Schmitz (pschmitz@microsoft.com) (Microsoft)
Aaron Cohen (aaron.m.cohen@intel.com) (Intel)

目次

3.1 はじめに

このセクションでは、SMIL-Bostonアニメーションモジュールを定義する。 SMIL-Boston アニメーションは、時系列上のものとしてアニメーションを再現するための枠組みと、複合的なアニメーションを構成するための機構である。 SMIL-Boston アニメーションには、あらゆるXMLベースの言語で再利用可能なアニメーション要素のセットが含まれる。 これらの要素と属性はモジュール内で定義されており、他のXML言語のデザイナーは必要に応じてSMIL-Bostonアニメーションモジュールの機能を再利用することが可能である。

SMIL-Bostonアニメーションモジュールは、仕様画定目前のSMIL-アニメーション[SMIL-ANIMATION]モジュールの機能を元に構成されることになるだろう。 SMILアニメーションのタイミングモデルは、SMIL1.0[ SMIL10 ]ののものに対話型(イベント対応型)動作に関するいくつかの変更と拡張を加えたものを基礎としている。 加えられる拡張には、(まだ未画定である)SMIL-Bostonタイミングモジュールの機能の中核部との互換性を持っている。[The extensions are compatible with a core subset of the functionality expected to be included in the SMIL-Boston timing module.]

このアプローチは、SMIL-Bostonの策定作業前[before SMIL-Boston is ready to go to Recommendation status]に、最初のバージョンのSMILアニメーションにおいて、よりよいアニメーションモジュールのリリースを容易に実現するために用いられた。 SMIL-Bostonアニメーションモジュールは、それ自身にはタイミングモデルを含まず、SMIL-Bostonタイミングモジュールを用いることになるだろう。 特にアニメーションのためだけに、タイミング用記述が再定義されることもないだろう。

この版においては、こうした拡張がモジュールに含まれることになると言及するに留める。詳細については、以降のドラフトを参照されたい。

3.2 SMIL アニメーション

アニメーションは、本質的に時間軸にその基をおくものである。 アニメーションは、(SMILタイミングの属性と同様に)新たないくつかの要素に伴った、属性とその内容[semantic]によって記述される。 アニメーションは指定された属性の表示される値を、時間的に変化させる機能として設計される。[Animation is modeled as a function that changes the presented value of a specific attribute over time. ]

SMILアニメーションは、文書製作者及び仕様の実装者に対して一貫したモデルを提供し、アニメーションにSMILタイミングモデルを統合するための枠組みとなる。 アニメーション[モジュール]は対象の要素の属性を操作するだけのものであり、対象の要素の内容に関する特別の知識を要求しない。 また、ある言語の中で、SMILアニメーションを元にした一層高度で専門的なアニメーション要素が定義されることがあるかもしれない。

3.3 SMIL アニメーションへの SMIL-Boston拡張

SMILアニメーションはSVG[ SVG ]のようにタイミング概念を持っていない言語に統合することを目的として構成されている。 しかしながら、(SMIL 1.0などのように)タイミング概念を既に持っている言語に対しても、平叙アニメーション機能を拡張してやる必要性は存在する。 SMIL-Bostonでのアニメーションは、SMILアニメーションの持つこうした限界を克服し、また他の多くの点においても、SMILアニメーションを拡張することになるだろう。

SMIL-Bostonアニメーションは、SMIL-Boston言語と、そのより強力なタイミングモジュールに完全に統合される。 SMIL-Bostonタイミングモジュールに含まれると思われ、SMIL-Bostonアニメーションにも継承されると思われる新機能は以下の通りである。

アニメーションモジュールに含むまれるであろう新機能:


previous next contents
SMILコンテンツコントロール(Contents Control)モジュール
previous next contents


WD - smil   − boston −  19991115

4. SMILコンテンツコントロール(Contents Control)モジュール

編纂者
Jeffrey Ayars (jeffa@real.com)、RealNetworks
Dick Bulterman (Dick.Bulterman@cwi.nl)、 Oratrix

目次

4.1 はじめに

このセクションでは、SMILコンテンツコントロールモジュールを定義する。 このモジュールは実行中の選択と最適化されたコンテンツ配信[optimized content delivery]の機能を提供するための要素と属性を含んでいる。 それらの要素と属性は モジュール内で定義されるので、他のマークアップ言語のデザイナーは、メディアコンテンツをコントロールする必要が生じたときに、SMILコンテンツコントロールモジュールの機能を再利用することができる。 あるいは、他のSMILモジュールを利用する場合であっても、既に他のコンテンツコントロール機能が存在しているなら、SMILコンテンツコントロールモジュールを利用する必要はない。

SMIL1.0コンテンツコントロール機能に対して提案された拡張

4.2 コンテンツの選択

SMIL1.0は、ある条件が満たされているときにだけ(例えばクライアントが特定のスクリーンサイズを持っているときなど)要素に対してテスト属性機能を提供する。 SMIL1.0はまた、文書の一部が選択的であるときに、「条件を満たす最初のもの」を選択して表示するためのものとして、switch要素を提供する。 これは例えば、多言語版の音声ファイルが利用可能なときに、どの言語のものを利用するかを選ばせるのには有用である。 SMIL Bostonでは、これらの特徴を踏まえた上で、個々の視聴者に対し、制作者が提供してユーザーが選択した属性に基づいて表現をカスタマイズ可能なよう、新たなテスト属性機能を拡張する。

4.2.1 <switch> 要素

switch要素は、複数のうちから1つだけの要素が選択うる場合についての記述を可能にする。 SMIL Bostonでは、ある要素がデコード可能な(メディアタイプが宣言されている)SMIL Bostonの要素であり、そのすべてのテスト属性の評価値が真であるなら、1つの要素が受容可能である。 コンテンツコントロールを他の言語に統合する際には、何が「受容できる要素」であるかを明示しなくてはならない。

要素は、次のようにして選択される。 プレーヤー(再生機)はswitch要素中で記述された順番に、要素を評価する。 最初に受容された要素が選択され、switch要素中の他の要素は無視される。

従って文書制作者は選択肢を、最も望ましいものから初まって最も望ましくないで終わるようにに並べるのが望ましい。 さらに、文書制作者は(明らかに望ましくない場合を除き)最低でも一つの項目が選択されるよう、比較的問題の少ない代替案となる項目をswitch要素の最後の項目として配置するべきである。 実装系は、switch要素内の全ての子要素が選択不可能な場合には、なにも選択しないままにするのが望ましい。

HTTPやRTSPのようなネットワークプロトコルを配信に使う場合、switch要素を使って選択性を持たせておくことが有効な場合があることに注意すること。[Note that some network protocols, e.g. HTTP and RTSP, support content-negotiation, which may be an alternative to using the "switch" element in some cases. ]

属性(Attributes)

switch要素は次の属性を持つことができる:

id
XML識別子
title
title属性は要素が何を表示するかについての簡単な説明を提供する。 title属性の値はユーザーエージェントにより、様々な方法で処理される。 たとえば、ビジュアルなブラウザではしばしばタイトルを「ツールチップ(マウスカーソルがオブジェクトの上で止まったときに現れる短いメッセージ)」として表示する。

4.2.2 既定テスト属性

本仕様書では言語デザイナーによって言語要素に加えることが可能な、いくつかのテスト属性を定義する。 SMIL Bostonにおいては、同期及びメディア要素に適用可能である。 概念的には、これらの属性はブール値テストを表わしている。 要素に含まれる属性のうち一つでも「偽」の値を示すときには、この属性は無視される。

以下のリスト中での説明では、「ユーザー設定」という記述が登場する。 ユーザー設定は、通常は再生エンジンの「設定項目」として設定されておくものであるが、設定方法はこれに限らないものとする。

SMIL Bostonは、以下のテスト属性を定義する。 SMIL1.0ではハイフンがついていた一部の属性名が、SMIL Boston camelCaseに従った表記を推奨されるようになったことに注意すること。 こうした変更のあった旧属性名については、SMIL Bostonにおける名称の後に、括弧書きで表記してある。

systemBitrate (system-bitrate)
この属性は、システム間で実現可能なおおよそのバンド幅を、 ビット/秒の数値として持つ。バンド幅の値はアプリケーションに よって指定され、実際の転送速度の測定値がユーザーによって設定 された理論値が規定されると思われる。後者の場合は、ユーザーの ネットワークへの接続形態に基づいた選択を行なうのに利用できる。 モデムで接続をしているユーザーの場合、典型的な値は14400、28800、 56000ビット/秒などであろう。こうして得られたバンド幅とテスト時 に与えられた値を比較して、バンド幅がより大きい(あるいは等しい) ときには「真」に、バンド幅のほうが小さい場合には「偽」と評価される。
属性は、あらゆる整数値を0より大きいものとして扱う。もしも値が 実装系によって定義された最大のバンド幅を越えるなら、 「偽」と評価される。
systemCaptions (system-captions)
この属性は、表現中の音声部分についての冗長なテキスト (難聴者や、読む練習をしたい場合や、文字での情報が必要な場合に用いられる) と、多くの読者のためのテキストとの区別を行なう。 この属性の値は、ユーザーが(普段は)隠されている情報を見ることを望んだ 場合に "on" となり、望まない場合には "off" となる。 この属性が評価された場合、値が "on" のときには「真」を、 値が "off" のときには「偽」を返す。
systemLanguage (system-language)
この属性は、RFC1766 で定義された、言語名のコンマ( , )区切りのリストを値として持つ。[RFC1766]

この属性を評価する場合、ユーザー設定によって示される言語名の一つが、テスト属性のパラメータとして与えられた言語名もしくは言語名の接頭辞(言語名のうち、冒頭から最初の" - "までで示される部分)と、(正確に)一致していたならば「真」を返す。

そうでなければ、「偽」を返す。

注意:接頭辞による適合ルールは、あるユーザーが同じ接頭辞を持った言語なら必ず理解できるように接頭辞が割り当てられることを保証するものではない。

接頭辞による適合ルールは、単に接頭辞の適用を可能とするだけのものである。

実装にあたっての注意:ユーザーによる言語優先度の選択を可能とするなら、ユーザーが(上記の)言語適用原則に慣れ親しんでいないことを考慮に入れて、適切なガイドを行なえるような実装をすべきである。たとえば、ユーザーが"en-gb"を選択しているなら、イギリス英語が利用可能でないときには他の英語の文書が役立つだろう。このような場合、ユーザーインターフェースはユーザーに対し"en"を(優先度が)下位の項目として設定するようガイドすべきである。

場合によっては、多数の話者のために多数の言語がリストされるかもしれない。例えば、オリ語と英語のバージョンが存在する "Treaty of Waitangi(ワイタンギ条約)" ならば、こんなふうに記述されるだろう:

<audio src="foo.rm" systemLanguage="mi, en"/>
しかしながら、systemLanguageテスト属性が置かれたオブジェクト中に複数の言語による表記が含まれているからと言って、それぞれの言語の話者のために書かれたものであるとは限らない。たとえば、「A First Lesson in Latin(ラテン語入門)」のような、明らかに英語話者向けの言語入門書などが例として挙げられる。このような場合、systemLanguageテスト属性はただ "en" とだけ指定されるべきだろう。

記述にあたっての注意:switch要素を使って言語ごとにオブジェクトを切り替えるようにした上で、いずれも適合しなかった場合、音声なしで映像を見せられるようなことになってしまうことに気をつけるべきである。このためswitch要素の最後には、必ず適合となる要素をいれておくことが推奨される。

systemOverdubOrCaption (system-overdub-or-caption)
この属性は吹き替えと字幕のどちらをユーザーが望むかについての設定項目である。この属性は"caption"(字幕)か"overdub"(吹き替え)の値を持つ。この属性が評価される場合、ユーザー設定と値が適合するなら「真」、適合しないなら「偽」になる。ただし、systemOverdubOrSubtitleとsystemCaptionsを用いることが推奨され、systemOverdubOrCaptionを用いることは望ましくない。
systemRequired (system-required)
この属性の値には拡張名を指定する。拡張名として指定可能な内容は、 追加された言語要素・属性あるいは名前空間識別子または名前空間拡張に ついてのURIである。 この属性が評価されると、実装系が指定された拡張機能をサポートしている なら「真」を、さもなくば「偽」を返す。 [NAMESPACES]
systemScreenSize (system-screen-size)
この属性の値は、以下のように指定する。
screen-size-val ::= screen-height"X"screen-width
screen-heightとscreen-widthは、ともに1以上のピクセル数で指定される。 この属性を評価すると、指定されたサイズでの表示が可能なときは「真」、 縮小再生しかできない場合は「偽」を返す。
systemScreenDepth (system-screen-depth)
この属性には、要素を表示するのに必要なスクリーンカラーパレットの深度を ビットによって指定する。値は必ず1以上を取る。典型的な値としては、 1、8、24、32などがある。 SMIL再生エンジンが映像/画像を表示するのに指定されたパレット深度を 用いることができるなら「真」を、 少ないパレット深度しか用いれないなら「偽」を返す。
systemOverdubOrSubtitle
この属性には、元言語に通じていない人に対して、字幕と吹き替え音声のどちらを提供するべきかを指定する。 この属性は2つの値を取りうる。"overdub" の値を取る場合は、吹き替え音声が提供される。"subtitle" の値を取る場合には、字幕が表示される。
systemAudioDesc
このテスト属性では音声による解説が提供されるべきかどうかを指定する。 systemCaptionが難聴のユーザーのためのテキストによる解説であるように、 難視のユーザーのための音声による解説を提供できるようにする。 この属性の値は、ユーザーが音声解説を望む場合には "on" 、 望まない場合には "off" となる。 この属性が評価された場合、値が "on" のときには「真」を、 値が "off" のときには「偽」を返す。
systemOperatingSystem
(検討中)
systemCPU
(検討中)
systemContentLocation
(検討中:Streaming / Stored の切り替え)
system???
(検討中:埋め込まれた情報の選択(総計での要素))
system????
(検討中:課金情報について。無料であるか、Pay-Per-Viewであるかなど)
systemComponent
SMIL再生システムの機能についてのCDATA(音声チャンネル数、コーデック、HW mpeg デコーダーなど)

規定テスト属性の使用例

1) ビットレートによるコンテンツの選択

実装系がsystemBitrateパラメータによって再生する要素を選択する場合が考えられる。再生装置は、選択肢(switch要素の中の各要素)の中からサーバーとの間で実現可能なビットレートを探して、適切なものを選びだそうとするだろう。

<par>
  <text .../>
  <switch>
    <par systemBitrate="40000">
    ...
    </par>
    <par systemBitrate="24000">
    ...
    </par>
    <par systemBitrate="10000">
    ........
    </par>
  </switch>
</par>
...

2) ビットレートによる音声トラックの選択

switch要素のなかには、あらゆる要素が含まれ得る。たとえば、一つの要素が直接音声トラックを指示していることがあり得る。

...
<switch>
   <audio src="joe-audio-better-quality" systemBitrate="16000" />
   <audio src="joe-audio" systemBitrate="8000" />
</switch>
...

3) 複数言語からの音声トラックの選択

次の例では、フランス語か英語の音声トラックが利用可能である。ユーザーの望む言語に基づいて、再生装置はどちらの音声を再生するかを選択する。

...
<switch>
   <audio src="joe-audio-french" systemLanguage="fr"/>
   <audio src="joe-audio-english" systemLanguage="en"/>
</switch>
...

4) スクリーン表示性能による表示内容の選択

次の例では、解像度とカラーパレット深度に応じたいくつかの部分を含んでいる。スクリーンの性能に応じて、再生機器はどれか1つを選択して再生することができる。

...
<par>
  <text .../>
  <switch>
    <par systemScreenSize="1280X1024" systemScreenDepth="16">
    ........
    </par>
    <par systemScreenSize="640X480" systemScreenDepth="32">
    ...
    </par>
    <par systemScreenSize="640X480" systemScreenDepth="16">
    ...
    </par>
  </switch>
</par>
...

5) 株価表示の有無

次の例では、ユーザーが表示を希望する場合に限り、株価が表示される。

...
<seq>
  <par>
    <audio      src="audio.rm"/>
    <video      src="video.rm"/>
    <textstream src="stockticker.rtx"/>
    <textstream src="closed-caps.rtx" systemCaptions="on"/>
  </par>
</seq>
...

6) 吹き替えや字幕の言語選択

次の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>
...

4.2.3 ユーザー・グループ

以下の事項は、まだSYMM WGによって検討中の部分である。以下の文中で示される表記法は、試験的なものであり今後の変更の可能性がある。

SMIL Bostonに導入予定の新機能に、個々の視聴者による表示のカスタマイズを可能にするための、文書制作者によるテスト属性セットの追加機能がある。 文書制作者は、初期値と共にテスト属性が取り得る値を指定する。 文書の本体(body要素中)で、定義時にid属性で指定しておいた値を、uGroupテスト属性の値として記述することで、定義したユーザー・グループの値がチェックされる。 ユーザー・グループは、これまで説明してきたシステム定義テスト属性と同様に、表示の制御を行なうのに用いることができる。

<userAttributes>要素
userAttributes要素はSMILのhead要素中に置かれ、 この要素中でそれぞれのユーザー定義テストに関する定義を行なう。

属性

uGroup
メディアオブジェクトがどのユーザー・グループに属するかを指定する。
uState
ユーザー・グループのデフォルト値を与えるために用いる。

もしもuGroupテスト属性の評価結果が真であったならそのユーザー・グループに属する要素は評価され、そうでなかったなら要素は無視される。 ユーザー・グループの値(状態)を定める方法については、再生装置ごとに異なる実装を取ることができることに注意すること。 有力な実装方法についての提案として、ダイアログボックスを表示して選択させる方法と、設定ファイルに保存された情報に基づいて評価する方法とが挙げられる。

例:

<smil>
  <head>
    <layout>
      <!-- define projection regions a, b, c & d -->
    </layout>
    <userAttributes>
      <uGroup id="nl_aud" uState="RENDERED" title="Dutch Audio Cap" />
      <uGroup id="uk_aud" uState="NOT_RENDERED" title="English Audio Cap" />
      <uGroup id="nl_txt" uState="NOT_RENDERED" title="Dutch Text Cap"/>
      <uGroup id="uk_txt" uState="NOT_RENDERED" title="English Text Cap"/>
    </userAttributes>
  </head>
  <body>
    ...
    <par>
      <video src="announcer.rm" region="a"/>
      <text src="news_headline.html" region="b"/>
      <audio src="story_1_nl.rm" uGroup="nl_aud" region="c"/>
      <audio src="story_1_uk.rm" uGroup="uk_aud" region="d"/>
      <text src="story_1_nl.html" uGroup="nl_txt"/>
      <text src="story_1_uk.html" uGroup="uk_txt"/>
    </par>
    ...
  </body>
</smil>

(追記予定:例についての詳説)

4.3 表示優先度 / グループ化

以下の事項は、まだSYMM WGによって検討中の部分である。以下の文中で示される表記法は、試験的なものであり今後の変更の可能性がある。

共通した方針に基づいてオブジェクトをグループ化することについての意義を説明する。 半物理的リソースの利用を伴うアクセスの際の制御方針の共通性に基づいて要素をいくつかのグループへと分割したい。優先度、共通サーバー、共通アクセス権 / 課金モデル、ローカルリソースの利用(レイアウト、機器、他)などについて定義される。 [A Channel defines a partitioning of elements into groups each group has a common set of access policies control use of quasi-physical resources: - priority - common server - common access rights / charging model - local resource use (layout, devices, etc.)]

4.4 対ユーザー適応化

以下の事項は、まだSYMM WGによって検討中の部分である。以下の文中で示される表記法は、試験的なものであり今後の変更の可能性がある。

コンテンツの集合体としての、表現への着目: コンポーネントのそれぞれは、ユーザーレベルでは異なった表示・エンコーディングをされるかもしれない。

制作時に選択肢を設けて、使用時に選択を行なうようにする。

4.5 表示最適化

4.5.1 <prefetch> 要素

以下の事項は、まだSYMM WGによって検討中の部分である。以下の文中で示される表記法は、試験的なものであり今後の変更の可能性がある。

prefetch要素は再生をスムーズにするためにメディアリソースを先行して取得するための情報をユーザーエージェントに提供する。 ユーザーエージェントは prefetch 要素を無視することもできるが、その場合には再生中に余計な割り込みがかかってしまうことになるかもしれない。 prefetch要素を利用することで、バンド幅や時間に余裕があるときに、あらかじめリソースを取得しておくことが可能になる。 <prefetch>要素は XML文書のbody要素中に記述される。明示的にタイミングが指定されていないかぎり、その登場順に必要になるものとみなされる。

<prefetch> 要素は、メディアオブジェクト要素と同様、idsrcの各属性を持つ。 SMIL Bostonタイミングが統合されているなら、beginenddur clipBeginclipEndの各属性を利用することも可能である。 idsrc要素は他のメディアオブジェクトと同様に、idは参照を行なうために、srcは取得すべきリソースの指定に使用される。 ユーザーエージェントによる処理中に、srcによって同一のURLを指定されたメディアオブジェクトが出現した場合、先行して取得されたリソースが用いられ、余計な割り込みが発生することなしに即時に再生が行なわれる。 タイミング属性beginenddurは、要素を先行取得するタイミング(プレゼンテーションタイムピリオド)を指定することになる。endもしくはdurによって指定された取得終了時になると、先行取得はそこまでで中止される。 clipBeginclipEnd要素は clipBegin and clipEnd 要素は元リソース中から切り抜かれて取得されるべき部分を指定するために使われる。もし最後の30秒だけが再生されるなら全部を取得しておく必要はないし、再生されるのが中間の30秒だけであるのにそれ以上の部分を先行取得しておくのは望ましくない。

mediaSizemediaTimebandwidth属性

<prefetch>要素には、メディアオブジェクト要素にて許されるほかに、以下の属性が入ることも許される。

mediaSize : バイト数、割合(%)のどちらかで指定
元リソースからどれだけの量のデータを先行取得しておくべきかを指定する。 元リソースの大きさがわからず、 全てを取得しておくためには100%を指定すればよい。 デフォルト値は100%である。
mediaTime : 時間、割合(%)のどちらかで指定
元リソースからどれだけの長さのデータを先行取得しておくべきかを指定する。 元リソースの長さがわからず、 全てを取得しておくためには100%を指定すればよい。 デフォルト値は100%である。
bandwidth : ビットレート、割合(%)のどちらかで指定
先行取得をする際に、 どれだけの(ネットワークの)バンド幅を使うべきかを指定する。 利用可能なすべてを使うためには、100%を指定すればよい。 デフォルト値は100%である

mediaSizemediaTimeの両方が指定された場合、mediaSizeが利用されmediaTimeは無視される。

即時媒体(text/htmlやimage/pngのような時間に基づかないメディア)でmediaTime属性が指定された場合、リソースの全てが取得される。

prefetch要素が無視される場合であっても、文書の示す内容は再生されるが、リソースの取得に伴い、よけいな読み込みや休止が発生することになるであろう。

親要素の繰り返しや再開のためにprefetch要素が繰り返されると、先行取得作業も繰り返されることになる。これにより、バナー広告などのように呼び出しごとに変化しうるデータについて、常に最新のデータが表示されることを保証する。 全てのリソースが先行取得されない場合には、動的に内容の変化するURLからの先行取得には注意するべきである。先行取得されていない未取得のデータに関するリクエストによって、問題のURLの内容が変更される可能性がある。 ユーザーエージェントは、HTTPの822ヘッダー(「キャッシュしないこと」を意味する)のような、コンテンツのキャッシングに関する指示を尊重すべきである。 特に、キャッシュ不可とされたデータについては、prefetch要素によって先行取得されていた場合であっても、表示のたびに取得しなおすべきだろう。

clipBeginClipEnd属性を持つが先行取得が困難なメディアオブジェクトについては、どのような形でデータを取得してきても良いが、これは望ましい表示方法ではない。

各属性値の表記法
バイト数

バイト数は以下の構文に基づいて表記すること。

バイト数 ::= [0-9]+; 任意の正の数

割合(%)

割合(%)は、以下の構文に基づいて表記すること。

割合(%) ::= [0-9]+ "%"; 0から100までの正の数

時間

時間は、以下の構文に基づいて表記すること。

時間		::= ( 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+; any positive number
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値の、デフォルトの単位は"s"(秒)である。

ビットレート

ビットレートは1ビット/秒の数を指定する。ビットレートは、以下の構文に基づいて表記すること

ビットレート ::= [0-9]+; 任意の正の数

prefetch要素の使用例

1) 映像の終了後すぐに画像が表示できるよう、画像データを先行取得する

<smil> 
  <body> 
    <seq> 
      <par> 
        <prefetch id="endimage" src="http://www.w3c.org/logo.gif"/> 
        <text id="interlude" src="http://www.w3c.org/pleasewait.html" fill="freeze"/> 
      </par> 
      <video id="main-event" src="rtsp://www.w3c.org/video.mpg"/> 
      <image src="http://www.w3c.org/logo.gif" fill="freeze"/> 
    </seq> 
  </body> 
</smil>

上記の例では、タイミングが指定されていないでので、デフォルト値が適用される。テキストは即時媒体なのですぐに表示され、prefetch要素では利用可能なバンド幅の全てを使って画像がダウンロードされる。 <par>の処理が終わると映像が再生され始める。映像の再生が終わると画像が表示される。

2) カーソルが重なったときに変更されるボタンについて、処理の高速化のために画像データを先行取得しておく。

<html> 
  <body> 
    <prefetch id="upimage" src="http://www.w3c.org/up.gif"/> 
    <prefetch id="downimage" src="http://www.w3c.org/down.gif"/>
    ....
    <!-- script will change the graphic on rollover --> 
    <img src="http://www.w3c.org/up.gif"/> 
  </body> 
</html>

4.6 現時点での問題

prefetch 要素は同期性のためのタイムベースとして利用可能か?  この機能は、サポートされるべきだと考えられている。 たとえば、先行取得が完了するまで、内容を再生しないということができる方がよいからだ。しかしこのことは、prefetch動作が開始時、終了時及び動作時間を持つことを意味している。先行取得機能はオプションであるが、いつ取得を開始し終了すべきかを判断する必要がある。またこれには、エラーが発生した場合の問題が伴う。 さらには、先行取得を行なわない、あるいは失敗が起こらない場合であっても、prefetch要素のタイミングに依存して動くなにかがあるかもしれない。 そのため、処理されなくともprefetch要素のタイミングを維持し、prefetch要素が実行されたかのようにしてイベントを起こす必要がある。 これは非常に複雑な問題である。一つの方法として、prefetch要素(の開始/終了など)に同期するのを禁じるということが考えられる。ところが、事はそう単純ではない。<seq>要素の中にprefetch要素がある場合を考えてみよう。たぶん最も単純な解決は、prefetch要素との同期を許可すること、そしてprefetchが行なわれない/失敗した場合には、持続時間0で開始時イベントと終了時イベントを同時に起こすようにすることである。


previous next contents