JPH08511891A - 同期クロック及びメディアプレーヤー - Google Patents

同期クロック及びメディアプレーヤー

Info

Publication number
JPH08511891A
JPH08511891A JP6522403A JP52240394A JPH08511891A JP H08511891 A JPH08511891 A JP H08511891A JP 6522403 A JP6522403 A JP 6522403A JP 52240394 A JP52240394 A JP 52240394A JP H08511891 A JPH08511891 A JP H08511891A
Authority
JP
Japan
Prior art keywords
time
clock
player
class
movie
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6522403A
Other languages
English (en)
Other versions
JP3476462B2 (ja
Inventor
エル マルーフ,フレデリック
アール ニューマン,エリック
Original Assignee
カレイダ ラブズ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by カレイダ ラブズ インコーポレイテッド filed Critical カレイダ ラブズ インコーポレイテッド
Publication of JPH08511891A publication Critical patent/JPH08511891A/ja
Application granted granted Critical
Publication of JP3476462B2 publication Critical patent/JP3476462B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Digital Computer Display Output (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

(57)【要約】 マルチプレーヤーとそれを制御するクロックを1つのオブジェクトに統合する。この統合は、オブジェクト指向プログラム環境でのオブジェクト間の継承構造を利用して行うものである。プレーヤーオブジェクトのソフトウェアクラスはクロックオブジェクトのソフトウェアクラスから継承することによって形成される。このように、プレーヤーはクロックともいえる。このようにプレーヤーとオブジェクトを一体にしたため異なるメディア間での同期が改善され、プレーヤーオブジェクトとクロックオブジェクトを用いたアプリケーションの設計が簡略化される。各オブジェクトは、システム内で最も早いメディアプレーヤーの速度で動作するルートオブジェクトに同期している。ルートクロックを下位と上位の部分に分けて比較レジスタを用いて中断処理のオーバーヘッドを減らす。

Description

【発明の詳細な説明】 同期クロック及びメディアプレーヤー 関連出願 本発明は、同時継続出願中である米国特許出願No. 「イベント条件と 通知」(代理人ファイル番号55378.0026)及びNo. 「時間ベ ース型スクリプトシーケンス」(代理人ファイル番号55378.0027)に 関連する特許出願である。 発明の技術分野 本発明はマルチメディアの方法と装置の分野に関するもので、特にマルチメデ ィアコンピュータ環境における時間ベースメディアの同期及び制御を考慮した方 法と装置に関するものである。 発明の背景技術 現代のコンピュータ装置では、マルチメディアという言葉を用いて1または複 数の時間ベース型データファイルを処理(例えば、作成、編集、表示、同期など )するソフトウェアを述べることが多い。時間ベース型データには、例えば、ビ デオシーケンス、オーディオシーケンス、タイムレコードイベントなどのように 測定装置で測定したデータのようなものが含まれる。ハードウェアあるいはソフ トウェアなどマルチメディアデータを処理できるデバイスのことをマルチメディ アプレーヤーと呼ぶ。典型的なマルチメディアプレーヤーとしては、パーソナル コンピュータやマルチメディア用に設計されたカスタムCD−ROMをベースと する装置などがある。 時間ベース型データは、例えば、コンピュータのROM、磁気ディスクドライ ブ、オーディオコンパクトディスク(CD)、ROM型コンパクトディスク(C D)、ビデオテープ装置などのハードウェア記憶装置に記憶(書き込み)させる のが一般的である。時間ベース型データはリアルタイムに処理することを目的と して生成すりこともできる。例えば、コンピュータで生成した動画イメージデー タを記憶させずに動画制御データからディスプレーに表示させることができる。 データのタイプがすなわちデータの「メディア」のことである。つまり、メデ ィアによってデータはを決まる。例えば、デジタルデータは0と1のバイナリー 値で構成されている。こうしたデータを理解させるには、こうしたメディアはこ のようなデータで表されるものであるということをプレーヤーが理解する必要が ある。従って、前記ハードウェア記憶装置から付与されたデータを処理できるデ バイス(基本的にはソフト)のことをメディアプレーヤーと呼ぶ。 ムービーはマルチメディアのソフトやハードの話をする時に使う一般的なメタ ファーである。従来の「映画」(例えば、映画館などで上映されているようなタ イプのもの)は時系列的な離散データの流れを単一の形式すなわちフィルム、テ ープ、光ディスクなどに記憶させたものであるのに対してマルチメディアのムー ビーはそのように編成する必要がない。むしろ、マルチメディアのムービーはデ ータを様々な装置に非時系列的に記憶させることができる複数のシーケンスで構 成することができる。このように、マルチメディアプレーヤーの重要な役割の1 つにデータ処理を編成や統合することにある。 マルチメディアムービー(あるいはタイトル)の作者は、オーディオビデオス トリーム、動画シーケンス、時間ベース型スクリプト、フルモーションムービー などといった様々な時間ベース型マルチメディア装置すなわち「プレーヤー」を 制御したり同期させたりしなくてはならない。各アプリケーションの作者に要求 されるのはこうした装置を完全に制御しておくことではなく、今では多くのコン ピュータオペレーティング装置に「拡張機能」と呼ばれる機能が付加されていて 高度な抽象概念(クロックオブジェクトやそれに関連したメディアであるプレー ヤーオブジェクトなど)を提供できるため作者の作業も簡素化されている。こう した装置としては、例えば、IBM互換パーソナルコンピュータ、ウィンドウズ 3.1OS環境用の「マルチメディア拡張機能」(ワシントン、レドモンド、マ イクロソフト社)や、マッキントシュシステム7.xシステムソフトウェア用「 クィックタイム」拡張機能(カリフォルニア州、クペルティーノ、アップルコン ピュータ社)などがある。クィックタイムの詳細はアップルコンピュータ社から 販売されているクィックタイム開発ガイドに記載されている。 クィックタイムを用いるとマルチメディアプレーヤーで時間ベース型データを 処理することができる。データは時間ベースであるため、クィックタイムはデー タ用「時間」(時間基準という)の説明をするだけでなく、「時間」を評価する コンテキストの定義も行う。クィックタイムでは、ムービーまたはメディアの時 間基準を「時間軸」と呼ぶ。 時間軸は基本的にはベクトルであってムービーやメディアの時間速度や方向を 定めるものである。時間軸のコンテキストのことを時間座標系と呼ぶ。概念的に は、時間座標系には時間を測定するための軸が設けられている。幾何学的な軸の ようなこの時間座標系を時間スケールという測定系の測定単位で分割する。 時間軸は、現在の時間値とムービーあるいはメディアで経過する時間の速度を 表すがスケールを定義するものではない。むしろ、スケールはメディア自体から 作成するものである。速度と時間スケールの積を絶対速度と呼び、例えば秒当た りの単位で測定する。時間軸は特定の座標系とは無関係であるが、時間スケール がなければ時間軸から求めた時間値は無意味なものになってしまう。各時間軸に 伴うものがクロックで、時間軸のタイミングを決めている。クィックタイムのク ロックは、コンピューターマネジャーと呼ばれているクィックタイムアーキテク チャーの一部が管理する部品の形で構成されている。クロック部品は基本的に2 つの役割を果たしている。すなわち、時間情報を生成し、コールバックイベント という時間ベース型イベントのスケージューリングを行うといった機能である。 イベント管理の説明は、対応米国特許出願No. 「イベント条件と通知」 を参照のこと。 クロック部品自体が他のエレメントから情報を受け取り、この情報を使って時 間情報を生成出力する。例えば、クロック部品にはマッキントッシュ社の「チッ ク」カウントを使用して基本タイミング情報を生成させる。あるいは、コンピュ ータに取り付けられている専用ハードウェアをクロック部品として用いて基本タ イミング情報を生成する。 いずれにせよ、結局は、クロック部品はそのタイミング情報をハードウェアク ロックから直接または間接的にもらっているのである。ハードウェアクロックと しては、従来型の周知な信号発生器があり、この信号発生器は毎秒複数回「カチ カチ」すなわちチックを発生させる(例えば、1MHzのクロック信号の場合、 毎秒100万回チックが生成されている) ハードウェアクロックにはカウンターが付きものである・このカウンターは一 定の速度でクロックチックが生成されるとその値を繰り上げて時間単位の記録を 取り続けるものである。ハードウェアのクロックが毎秒一定の決まったクロック チックを生成すると、クロック部品であるソフトウェアクロックはクロックの位 相や値を操作してクロックの速度を制御する。 例えば、多くのコンピュータ装置に用いられている単一ハードウェア「ルート クロック」(とそれに付随するカウンター)はベースとして用いるのが一般的で 、このベースクロックにソフトウェアクロックなどのクロック部品を同期させる 。こうしたソフトウェアクロックではルートクロックの時間単位(例えば、60 チック/秒)を各ソフトウェアクロックが必要とする時間単位(例えば、オーデ ィオ用CDの場合44,100チック/秒)に変換しなくてはならない。 メディアもムービーもそれぞれ時間軸を持っている。クィックタイムの場合、 マルチメディアムービーは1または複数の「トラック」から構成されており、こ のトラックは組織的なメディア基準であって時間ベース型データはこの基準から 生成する。各トラックには1つのメディアが対応している。ムービーの時間軸が あればトラックをまとめることができる。クィックタイムでは、ムービーの開始 時点では各トラックは同時に開始する。ムービーの開始時点以外の時点でトラッ クのデータを「スタートさせるには、データをムービーの開始点からずらしてお く。各トラックを同時にスタートさせることにより、様々なトラックが同相で同 期する。各トラックまたはメディアには独自の時間軸がある。各時間軸には固有 の速度、開始時間、停止時間、現在時間、若干の状態情報が設けられている。最 終的には各時間軸はクロック成分から間接的にその時間値を取り出す。時間軸は 別の時間軸から直接時間値を取り出すこともある。別の時間軸からその時間値を 取り出す時間軸のことをスレーブ時間軸と呼び、また、時間値を別の時間軸に与 える時間軸のことをマスター時間軸と呼ぶ。マスター時間軸には複数のスレーブ 時間軸が設けられる場合があるのに対してスレーブ時間軸には1つのマスター時 間軸しかない(すなわち、クロックは1つのクロックにのみ同期させることがで きるが、それには複数のクロックを同期させることができる) 例として、第1メディアを二値化映像データストリームとすると、第2メディ アは二値化音声データストリームとすることができる。映像データストリームの 中で特定の時間(例えば10秒間映像データストリームに取り込む)音声を生成 するのが望ましい。このように、1つのメディアの時間軸を別のメディアの時間 軸に連結するのが有効である。 クィックタイムでは時間値の生成、使用、編集を行う。一方のメディアの時間 軸を他方のメディアの時間軸に結び付けると、マスター時間軸に発生した変化が スレーブ時間軸に影響を及ぼすことがある。例えば、マスター時間軸の現在時間 を変化させると、スレーブ時間軸の現在時間も適宜変化する。 しかしながら、時間軸値を変化させても影響はない。これは、スレーブ時間軸 の現在時間が変化すると、ムービー開始時間とデータ開始時間との間のずれが変 化するためで、マスター時間軸の現在時間は変化しない。 このように、クィックタイムでは各メディアが固有の時間軸、時間速度、オフ セットを持っていても異なるメディアを有効に制御したり同期させてりする機構 が提供されている。しかしながら、クィックタイムが提供する機構、すなわち、 異なるメディアを同期させる機構は基本的に非常に複雑なものである。これは、 メディアとそれに対応する時間軸が概念的に異なるためである。特定のメディア に対応する時間値にアクセスしたり、あるいは、この時間値を変化させるには、 そのメディアの時間軸(メディア自体ではない)をアドレス指定しなくてはなら ない。例えば、メディアが現在行っているプレイの時間を知りたければメディア の時間軸の基準を求めて時間軸自体を調べなくてはならない。プレーヤーの時間 変数に間接的にアクセスしなくてなはならないといったこのような問題は、互い に同期しているプレーヤーの数が多くなるほど複雑になる。 また、クィックタイムではムービーを時間ゼロから開始しなくてはならない。 これでは、別々の時間に開始される2つのムービー(すなわち、各ムービーが互 いに別のゼロ時間を有している)を同期させる作業が複雑になる。例えば、マル チメディアムービーは時間ゼロで開始しなくてはならないため、負の開始時間は 許されない。クィックタイムでは例えば疑似開始時間を生成して本来の開始時間 とのずれを利用して負の開始時間を実施できるが、これはマルチメディアムービ ーの生成に無用の負担を課すことになる。つまり、二つのムービーの時間差を維 持するだけでなく、これらのムービーの互いの速度の違いも同期させなくてはな らなくなる。ムービーを何等かの外部メディアに同期させる場合はやはり同じよ うな煩雑さが伴う。 最後に、上述の時間軸にはスケールが含まれていない。時間軸から送り返され る時間値はスケールがないと意味がない。時間軸から送り返される時間値を求め るには、メディアについて説明しなくてはならない。このように2段階で時間軸 時間値を求める作業は、タイトル作者にとっては厄介なものである。 さらに、これから起こるイベント(例えば、X時間毎ににオーディオプレーヤ ーに処理要求を通知して特定のオーディオパスを再生させるなど)はスケジュー リングが不正確である。よくあることだが、ルートクロックが特定のメディアプ レーヤーのクロックよりも動作が遅いと、いつそのオーディオパスが特定の時間 にきたのかをシステムは正確に判断できなくなる。 例えば、ルートクロックが60チック/秒で動作する場合、オーディオ再生を 制御するクロックは44,100チック/秒で動作するためシステムはいつオー ディオ再生がオーディオ単位時間100に達したかを判断できない。ルートクロ ックのチックとチックの間には全部で735個のオーディオ時間単位が存在する 。一般に、このような装置ではコンピュータの速度の早いクロックにアクセスし て所望の時間単位に達する時点を概算する。しかしながら、速度の早いクロック がメディアプレーヤーに同期せず不正確になるといった問題がある(これはカウ ンターへの書き込み時間によってドリフトが発生するためである)。 発明の開示 本発明は、メディアプレーヤーとそれを制御するクロックを物理的かつ概念的 に統合させて上記従来技術の課題を解決するものである。このようにクロックと メディアプレーヤーをシステムレベルで統合すると、別々のメディアを互いに正 確に同期でき、また、複数のクロックとメディアプレーヤーを互いに間接的に接 続させたり、そうした周辺作業を簡略化する人工的な中間構造体を維持しなくて はならないといった負担から作者が解放される。 このようにクロックとメディアを統合するにはオブジェクト指向プログラム環 境においてオブジェクト間で相続を行わせる。つまり、クロックオブジェクトの クラスから受け継がれたメディアプレーヤーのクラスを生成させてクロックとメ ディアプレーヤーを統合させる。オブジェクト指向言語では、プレーヤーはプレ ーヤーオブジェクトとの間にクロック関係を有しているのではなくプレーヤーそ のものがクロックとなる。 このように、クロックの属性(例えば、速度や時間など)はすべてそのクロッ クと概念的に対応しているメディアプレーヤーオブジェクトから受け継ぐ。こう して、メディアプレーヤーに簡単に直接接続して、例えば、プレーヤーの現在時 間を入手したり、現在時間、速度あるいはマスタークロックに対するオフセット 値を設定する。 「オリジン」という概念をクラス定義に導入して任意の時点でメディアをスタ ートできるようにする。このオリジンはメディアの開始部分を定義するものであ る。メディアの開始時点と終了時点にはマーカーを設けて示す。このように、ど んな時間スケールもメディアに対応させることができ、オフセット値を別途計算 したりあるいはオフセット値を利用して(これはクロックのオフセット値がその マスタークロックのみを基準とするためである)メディアの開始時間を求めなく ともメディアの開始時刻を設定できる。 物理的なレベルでは、メディアプレーヤーオブジェクトはすべてルートクロッ クのハードウェア部分に従属しており、このハードウェア部分がシステム内でも っとも早いメディアプレーヤーの速度で作動する(例えば、オーディオ用CDの 場合44.1KHz)ため特定の時点(例えば、各メディアサンプルに相当)で これから先のイベントはスケージューリングされる。ルートクロックの速度はシ ステム内で最も早いメディアプレーヤーに等しいため、システム内の別のメディ アプレーヤーの時間単位をルートクロックからダウンコンバートできる。さらに 、それでも依然としてルートクロックのハードウェア部分の速度は比較的遅いた めハードウェアチックの期間中に十分処理を行うことができる。また、別の実施 例では、必要なメディアプレーヤーの速度を変えるためルートクロックをさらに 設けることもできる。 ルートクロックには時間値を保持するカウンターが設けられている。このカウ ンターはハードウェア全体で構成してもよく、あるいはハードウェアとソフトウ ェアを組み合わせて構成してもよい。カウンターの一部がハードウェアで構成さ れる場合は、システムの中断処理を減らすことができる。この場合、ルートクロ ックのハードウェア部分に同じ大きさの比較レジスターを設けて中断処理を行わ せるのが望ましい。 図面の簡単な説明 第1図は本発明を適用するシステムの一般的なコンピュータアーキテクチャー を示す図であり、 第2図は本発明の1実施例におけるクラスのクラス階層例を示す図であり、 第3図は速度、スケール、時間値を示す図であり、 第4図は有効速度を示した図であり、 第5図は本発明の1実施例におけるコールバッククラスのサブクラスを示した 図であり、 第6図は本発明の1実施例にかかるマルチメディアタイトルプレー用に階層配 列されたメディアネットワークを示した図であり、 第7図は第6図のメディアプレーヤーネットワークでマルチメディアタイトル をプレーする同期方式を示した図であり、 第8図は第7図のマルチメディアタイトルをプレーする同期方式の変形例を示 す図であり、 第9図は第7図のマルチメディアタイトルをプレーする同期方式のさらに別の 変形例を示した図 発明の好適実施例の説明 説明のため、本発明の実施例を適宜参照しながら実施例(適用例)を用いて本 発明を説明する。これらの実施例及び当該発明を開発した環境は当業者には自明 でであると思われるが、これらの実施例は本発明の機能や特徴を説明するための ものである。また、当業者であれば、本発明の実施例の変形例、追加、削除、変 更などは容易に考えつくと考えられるがこれらの実施例は本発明の範囲を制限す るものではない。 第1図は本発明を実施する装置の一般的な構造10を示している。構造10に はメインバス12が設けられており、このメインバス12は中央演算ユニット( CPU)14、不動小数点ユニット(FPU)16、バスコントローラ−20、 ビデオラム22、ダイナミックラム(DRAM)24、スタティックラム(SR AM)26、デジタル信号プロセッサー(DSP)28,内部ハードディスク3 0、外部メモリー装置32(例えば、SCSIポート34に接続)、外部ネット ワーク装置36(例えば、Ethernetネットワークに接続している)、デ ィスプレイ40(CRTなど)、プリンター42(例えば、シリアルポート44 に接続されたPostScript装置など)、ポインティングデバイス(マウ ス、トラックボールなど)48などの構成部材を相互に接続するものである。作 動中のコンピュータ装置内でのこれらの部品の接続と機能は当業者には周知であ る。しかしながら、特定の部品の機能とその意義については適宜詳細に説明する 。 以下の説明ではオブジェクト指向ソフトウェアデザインとして周知なソフトウ ェアプログラム環境の点から本発明を説明する。本発明の機能はこうした環境に 限定されるものではない。しかしながら、本発明を用いる環境の1つとして考え られるものであるということを裏付けるためオブジェクト指向プログラム環境の 関連詳細事項をある程度説明する。 オブジェクト指向プログラム言語における言語の基本データ構造はオブジェク トや、データとアクションを指定するプログラムエレメントである。データはロ ーカル変数で指定されてインスタンス変数(istance variable)と呼ばれ、オブ ジェクト内に収納される。アクションあるいは方法はサブプログラムであり前記 インスタンス変数で作動する。この方法はあるオブジェクトから別のオブジェク トへ送ったメッセージによって呼び出される。 オブジェクト構造は基本的な2つの構造クラスとインスタンスからなる。クラ スには変数と方法が一組設けられており、オブジェクトタイプのテンプレートと 考えることができる。インスタンス(あるいはオブジェクト)とは特定の実行時 におけるクラスの具体例である。オブジェクトはそのクラスに規定されている変 数を記憶する。各インスタンスには独自の変数バージョンがある。オブジェクト にメッセージを送ると、そのクラスに規定されている方法をオブジェクトは探し 出し、メッセージをどうやって実行するかを決める。 クラスはクラス階層で規定されている。クラスには階層中のより上位のクラス の変数や方法が全て継承されている。この継承クラスのことをサブクラスやスー パークラスの子と呼ぶことがある。スーパークラスから継承した変数や方法は、 まるで継承クラス内に定義されているかのうように継承クラスが利用できる。も しサブクラスに複数のスーパークラスがある場合は、各スーパークラスの変数や 方法は全て継承される。これを複数継承と呼ぶことがある。 クラス内に定義できる変数には2種類ある。1つはクラス変数で定義クラスの 全てのインスタンスがこれらの変数を共用する。クラス変数はクラスとインスタ ンスを連係させる時に用いるものである。第2のクラスはインスタンス変数で各 特定のインスタンスに固有である。つまり、各インスタンスの各インスタンス変 数には別々の記憶スペースが割り当てられている。 方法は、オブジェクトにメッセージを送った時に実行させるアクションを定義 する。オブジェクトにメッセージを送ると、メッセージ名と、そのオブジェクト に定義されている方法名が突き合わされる。実際に実行した方法は、オブジェク トクラス階層の最下位に規定されているメッセージと同じ名称を有す。 メッセージには変数を設けることができる。メッセージを送ると、そのメッセ ージに方法を特定する前に実際の変数は全て評価される。メッセージの中の実際 の変数に相当するフォーマル変数と一時変数を方法は備えている。一時変数はメ ッセージを実行する時に作成でき、またその方法を実行中はその方法の範囲内で のみ利用できる。 プログラムは、オブジェクトのクラスまたはクラス階層の中で方法を呼び出す オブジェクトにメッセージを送って実行される。場合によっては、補法がメッセ ージを別のオブジェクトに送付して別の方法を呼び出す。一般に、どの方法でも 結果は送り元に返送される。どの言語も、特に、オブジェクト指向言語の基本は メッセージを解釈したり評価したり、あるいは、方法が別の方法を呼び出す時に は戻るべき場所を常に把握するプログラムセグメントである。 オブジェクト指向プログラム環境は複数のプログラム言語で実行できる。オブ ジェクト指向環境の一般的な例としては、C++環境がある。このC++環境の 詳細については、Ellis,Margaret,Bjaren Straus trupらの「THE ANNOTED C++REFERENCE MANU AL(Addison−Wesley 1990)及びCopline,Jam es O.らのADVANCED C++ PROGRAMMING STYL ES AND IDIOMS(Addison−Wesley 1992). 第2図には、本発明の一実施例にかかる様々なクラスからなるクラス階層76 4が示されている。第2図にはクラス階層764の様々なクラスの継承関係が示 されている。例えば、Timebaseクラス750はベースクラスで、Tim ebaseクラス750とClockクラス752を結ぶライン751で示され ているように、Timebaseクラス750をClockクラス752が継承 している。Playerクラス754はライン753で示すようにClockク ラス752を継承している。AudioPlayerクラス756、Vidoe Playerクラス758、ScriptSequencePlayerクラス 760はライン755、757、759でそれぞれ示すようにPlayerクラ ス754を継承している。初めに、これらのクラスを説明してからこれらのクラ スの例を述べる。 第2図にはTimebaseクラス750とRootClockクラス762 の関係が示されている。RootClock762のインスタンス(すなわち、 RootClockオブジェクト)はハードウェア部と後で詳細に説明するソフ トウェア部とから構成されている。クラス階層764のクラスの各インスタンス は、RootClockに直接または間接に同期されなくてはならない。各オブ ジェクトはオブジェクトから時間を取り出しており、そのオブジェクトは直接ま たは間接的にRootClockから時間を取り出している。従って、Time baseクラス750にはRootClockから時間を取り出す方法が含まれ ている。 Rootclockオブジェクトのハードウェアクロック部は、例えば、上述 したようにチックを常に把握するレジスタを一緒に用いて特定速度でチックを出 力する。ハードウェアデバイスを表すRootClockオブジェクトは1つだ けである。つまり、RootClockはハードウェアタイミング資源を表して いる。しかしながら、1つのシステムにハードウェアタイミング資源、つまり、 こうした複数のRootClockを設けて1つのRootClockに1つの ハードウェアタイミング資源を付与してもよい。 第2図に示すように、Timebaseオブジェクト750は階層764の最 上レベルのクラスである。Clockオブジェクト、Playerオブジェクト 、AudioPlayer,VidoePlayer,あるいはScriptS equencePlayerオブジェクトをインスタンス化すると、各オブジェ クトにはTimebaseクラス750から継承した方法と変数が全て含まれる 。これのため、ClockはTimebaseであるとも言える。Timeba seクラス750のクラス方法を付録1に示す。Timebaseクラス750 用のこのインスタンス化方法を付録2に示す。 Clockオブジェクト(クロッククラス752の場合)Clockオブジェ クトは主に時間を送り返すことができる(このため、クロックと呼ばれている) 。Clockオブジェクトはそれ自体とそのマスタークロックとの間のオフセッ トを常に把握して時間を記録する。Clockオブジェクトが時間要求を受け取 ると、マスタークロックの時間を取りだし、次にオフセットを引いてその結果を 送り返す。 各Clockオブジェクトは、1秒毎に経過する(速度が1の時)時間単位数 を定義する時間スケールに対応する。従って、時間スケール1のClockオブ ジェクトは秒単位で時間を測定する。同様に、時間スケール60のClockオ ブジェクトは1秒間に60個を測定する。 Clockオブジェクト内の特定の時点を時間値で示す。時間値はClock オブジェクトの時間スケールで表す。例えば、タイムスケール60のClock オブジェクトの場合、時間値180は経過時間3秒を意味する。Clockオブ ジェクトの速度はそのオブジェクトで経過する時間の速度である。このように、 秒単位の時間単位の絶対値はClockオブジェクトの速度とスケールの両方で 決まる。Clockオブジェクトで1秒毎に経過する時間単位数はClockオ ブジェクトのスケールと速度を掛け算から判断できる。メディアをプレーする際 の秒単位の現在時間は以下のように求めることができる。 時間(秒)= 時間値/スケール x 速度 第3図に時間速度、時間スケールと時間値を示す、 Clockクラスのインスタンス752は、メディアをプレイしない時間資源を 維持するために生成される。AudioPlayerクラス756、Video Playerクラス758、ScriptSequencPlayerクラス7 60のインスタンスを作成して後から説明するように、特定のメディアもプレー させる時間資源を生成してもよい。Clockオブジェクトを作成するためCl ockクラス752で呼び出す方法のプロトタイプは以下の通りである。 method object new(class self object master object scale) この方法の引数は次の通りである。 self インスタンス化されるクラスで、この例の場合はClockが相当 する。 master 新しいクロックを同期させるマスタークロック。NULLとし て渡すと、このクロックはRootClockに同期される。 scale クロックのスケール この方法の例としては、 myclock = new(Clock,Null60); この方法ではスケール60のデフォルトハードウェアクロックに同期した新しい Clockオブジェクトを生成がされる。 Clockクラス752はTimebaseクラス750の方法と変数の全て を継承している。例えば、次に示すようなTimebaseクラス750を継承 した方法はClockオブジェクト(これらの方法のより詳しい説明を表2に示 す)に有用である。 getRate setRate getEffectiveRate getFlags setFlags getMasterClock setMasterClock getMasterRootClock getRootClock ServicingCallBacks しかしながら、Timebaseクラス750では時間スケールは提供しない。 Clockクラス752では時間スケールを求めて設定する方法を提供する。さ らに、Clockクラス752ではそれ自身の時間を求めて設定する方法を提供 する。付録3にはClockクラス752で紹介した方法が示されている。 Playerクラス754はメディアをプレーする方法を提供する。すなわち 、Playerオブジェクトは、メディアストリームオブジェクト(例えば、デ ジタル状態で得たオーディオまたはビデオオブジェクトを表す)とメディアシス テム資源(例えば、デジタルデータをアナログ音声または映像データに変換する オーディオまたはビデオ表示装置用ドライバーなど)との間でのデータのやり取 りを簡略にする。このようなプロトコルには前記データストリームを解釈するの に必要な情報が含まれている。例えば、AudioPlayerオブジェクトで はオーディオチャンネルドライバーオブジェクト(付録8に表示されている方法 )が適当な速度でデータを処理できる、例えば、特定のオーディオメディアスト リーム用サンプリング速度に相当する速度で処理できるようにする。このように 、Playerオブジェクトは、特定のデータストリーム用の適当な装置資源の 識別と選択を手伝う。 Playerクラス754ではプレーヤー全てに一般的なプロトコルを定義す る。このように、PlayerオブジェクトはAudioPlayer,Vid oePlayerあるいはScriptSequencePlayerオブジェ クトといったPlayerオブジェクトに同期した高レベルコントローラーとし ても使用できる。 本発明の主要な特徴の1つは、PlayerオブジェクトはClockオブジ ェクトでもある(すなわち、言葉の上ではPlayerはClockである)。 従って、Playerオブジェクト自体には時間を必要とする方法が含まれてい る。例えば、開始時間と終了時間の制御方法やプレー速度の設定方法が含まれて いる。 Playerクラス754に全てのプレーヤーに共通の一般的な方法が納めら れており、特定のplayerサブクラス、例えば、AudioPlayerク ラス756、VidoePlayerクラス758、ScriptSequen cePlayerクラス760のそれぞれにはそれに関連するメディアに特定さ れた方法が納められている。例えば開始時間と終了時間を制御する方法、プレー 速度を設定する方法のほかにAudioPlayerクラス756にはプレー音 量などを調整する方法が納められている。付録5には特定Playerサブクラ スの数を詳細に説明している。 同期によって、あるオブジェクト(またはハードウェアクロック)を基準とし てオブジェクトの時間、速度、オフセットが相対的になるため、これらの値に変 化があれば関連するオブジェクト全てにその通知を出力しなくてはならない。つ まり、もし特定のPlayerオブジェクトがClockオブジェクトに同期す る場合は、その有効速度は前記Clockオブジェクトの速度の関数となる。 例えば、ClockCと呼ばれる速度2のClockオブジェクトが、速度6 のClockBと呼ばれているClockオブジェクトに同期していて、さらに 、このClockBは速度3でハードウェアクロックに同期しているClock Aと呼ばれるClockオブジェクトに同期していると仮定する。この場合、第 4図に示すように、ClockAの有効速度は3、ClockBの有効速度は1 8、ClockCの有効速度は36となる。このように、Clockオブジェク トの速度が変化する場合は、そのオブジェクトに同期している全てのオブジェク トに変化を通知しなくてはならない。この通知をCallBackオブジェクト が処理する。 CallBackオブジェクトはClockオブジェクトと一緒に用いて特定 時間でのアクティビティーの発生をスケジューリングさせてもよい。例えば、P layerをスケジュールして特定の時間にプレーを開始させることもできる。 このように、アクティビティーをスケジュールするには、CallBackオブ ジェクトを作成してClockオブジェクトに対応させる。第5図に示すように 、CallBackクラス780には次のようなサブクラスが設けられている。 TimeCallBack class782 このCallBacksは一定の時間に起動される。 例えば、CallBackを用いて特定の時間にプレーヤーを開始させてもよ い。 RateCallBack class784 このCallBackは速度が変化する場合に起動させる。 例えば、CallBackを用いてメディアが高速前送りの状態の時にディス プレイを変更させてもよい。 PeriodicCallBack class786 このCallBackは一定の間隔で繰り返し起動される。例えば、ムービー の再生時にCallBackを用いて再生時の最初の1分間に5秒間隔で手続き の名称を表示させることができる。 TickCallBack class788 このCallBackはPeriodicCallBacksに似ているが、 そのようなCallBackは1RootClock tick(あるいは解像 度)に付き1回だけ実行される。 TjumpCallBack class 790 このCallBackはジャンプがあると起動する。例えば、動画シーケンスを プレー中に時間を再設定すると、CallBackを用いて動画シーケンスをリ セットして一定のハウスキーピング機能を実行させることができる。 CallBackオブジェクトを生成するには、まず、そのオブジェクトがア タッチすることになるクロックが必ず存在するようにする。次に、適当なCal lBackサブクラスに新しい方法を呼び出して新規にCallBackオブジ ェクトを生成する。新規のCallBackオブジェクトを生成する際にはその オブジェクトがアタッチすることになるクロックを指定する。次にvoidタイ プの単一引数を用いてCallBackの機能を指定して実行させる。Call Backオブジェクトを起動させなくてはならない時は、CallBackオブ ジェクトのcallMeWhen法を用いて指定する。callMeWhenの プロトタイプは、 callMeWhenの引数は、 self CallBack callBackProc CallBackが行うことを定義する手続き callBAckParam CallBackProc用voidタイプの引数 flags このフラグは次の中の1つのである。このフラグは全て そのタイプになっている。 triggerTimeFwd 速度が正(つまり、前に送っている時)はCallBackを所 定時間にトリガする。 riggerTRimeBwd 速度が負(つまり、逆方向に送っている時)はCallBack を所定時間にトリガする triggerTimeEither 速度が正でも負でもなく一定の時間でトリガされ CallBackこれはTimeCallBacksの場合にのみ当てはまる。 triggerRateLT 速度が一定の値よりも小さい時はCallBackがトリガされ る。これはRateCallBacksにだけ当てはまる。 triggerRateGT 速度が一定の値よりも大きい時はCallBackをトリガする。 これはRateCallBacksにだけ当てはまる。 triggerRateEqual 速度が所定値と同じ大きさの場合にcallBackがトリガさ れる。これはRateCallBacksにだけ当てはまる。 triggerRateLTE 速度が一定値以下の場合にCallBackがトリガされる。こ れはRateCallBacksにだけ当てはまる。 triggerRateNotEqual 速度が一定値に等しくないときにCallBackがトリガされ る。これはRateCallBacksにだけ当てはまる。 triggerRateChange 速度が変化するときにCallBackがトリガされる。これは RateCallBacksにだけ当てはまる。 none/o/null TJumpCallBacks,TickCallBacks,PeriodicCallBacks用 rateORline これはRateCallBacksにだけ当てはまる。それ以外のタイ プのCallBacksの場合は、このオブジェクトをNULLとして渡す。規定速度はCallB ackを呼び出すかどうかを判断する重要な速度である。例えば、フラグがtrigger RateGTEで、また、rateORlineが10の時は、CallBackは速度が10以上の時は いつでもトリガされる。 このライン値はディスプレイベース型クロックに使用し、ユーザーは特定の走査 線を中断できる。 timerecord このオブジェクトはTimeCallBAcksとPeriodicCallBacksにだけ 当てはめることができる。これ以外のCallBacksはNULLとして渡す。この時間値 は64ビットintegerで2longで表される(ほとんどのプログラム言語場合)こ れがTimeCallBacksにCallBackを起動しなくてはならない時や、PerioddicCallBa cks用アクティベーションの間隔をを示すタイムレコードである。 CallBack これは以下の中の1つである Priority lowCallBackPriority medCallBackPriority highCallBackPriority この優先値は、複数のCallBacksをスケジュールして同時に出す時のコンフリク トを解決するために使用する(しかしながらどのような順番でこれらが出ていく かは保証できない)。また、優先値はCallBackの応答性に影響を与えるつまり、 優先度が高くなるほどCallBackを実行する時間が正確になる。 たとえば、10の時点でユーザーが所定のプレーヤーをプレーさせるためCa llBackを生成したいと仮定する。次の例は、CallBack手続きSt artPlayのコードを示しており、この手続きでプレーヤーはプレーする。 CallBackの時間と手続きを設定し、CallBackを所定のプレーヤ ーにアタッチさせるSetCallBackToGo機能を示すものである。 CallBackクラスは抽象的なクラスであるため、そのインスタンスをユ ーザーが作ることはない。その代わり、ユーザーは、適当なサブクラス(TimeCa llBack,RateCallBack,PeriodicCallBack,TickCAllBAck,とTJumpCallBack)の インスタンスを生成する。これらのサブクラスにはそれぞれ次のようなプロトタ イプの”新規な”方法がある。 method object new(object self,object clock) ここで、引数は self TimeCallBackの一つ PriodicCallBack,RateCallBAck, ユーザーが希望するCallBackの種類によってTJ umpCallBac kとTickCallBackは異なる clock CallBackがアタッチするクロック 最後に、付録6にはCallBackのサブクラスのインスタンス方法がリストされてい る。 第6図には本発明の一実施例にかかるマルチメディアタイトルのプレーを行う メディアプレーヤーオブジェクトのネットワーク800が階層構造で示されてい る。この階層構造ではプレーヤーオブジェクトの間にマスタースレーブの関係が ある。第6図のネットワーク800を以下に説明する実施例に用いて本発明の特 徴を説明する。まず、プレーヤーをそれぞれ生成しなくてはならない。このステ ツプは、ScriptSequencePlayer,AudioPlayer,VidoePlayererなどのサブクラス のそれぞれに新しい方法を呼び出して実行してもよい。これらの特定のサブクラ スの各サブクラスの新規な方法は付録5に説明されている。 プレーヤーオブジェクトにはそれぞれきぞんのデータストリームオブジェクト を関連させなくてはならない。各オブジェクトのプレーはプレーヤーオブジェク ト(付録7にはAudio Streamオブジェクト、の方法がこのようなデータストリー ムオブジェクト用の方法の例として記されている)で制御する。オーディオ、ビ デオ、その他のメディアデータのデジタル化ストリームの生成と格納は従来から 知られている。データストリームオブジェクトは前記「新規」方法の引数でプレ ーヤーオブジェクトに対応される。すなわち、この結果、ScriptSequencePlayer オブジェクト802、VideoPlayerオブジェクト804、AudioPlayerオブジェク ト806がコンピュータ808の中で生成される。これらのオブジェクトを互い に対応づけて、例えば、タイトルプレーのためにオブジェクト間に相対的なタイ ミングを形成させなくてはならない。 第7図にはタイトルをプレーするネットワーク800が使用する同期方式が示 されている。ScriptSequencePlayer802は動画のプレーを開始する。そのマス タークロックはルートクロックである。 VideoPlayer804にはマスタークロックがあり、そのクロックはScriptSeque ncePlayer802に設定されている。この設定は、setMasterClock法(付録2) を用いて行うことができる。ScriptSequencePlayerの時間が5単位経過すると、 VideoPlayer804はそれ自体の時間0の時にビデオデータストリームのプレー を開始する。このプレー開始はsetScaledClockZero法(付録2)で行う。このよ うに、VideoPlayer804のオフセットは5になっている。つまり、その0時間 はマスタークロック(マスタークロックの単位)の0時間から5単位経過した時 間である。さらに、VideoPlayerのオリジンは0である。つまり、VideoPlayerは それ自体のの時間0でプレーを開始する。 AudioPlayer806にはマスタークロックが設けられており、そのクロックはS criptSequencePlayer802に設定されている。ScriptSequencePlayerの時間の 10単位が経過した後、AudioPlayer806はオーディオデータストリームのプ レーを開始する。しかしながら、AudioPlayerの時間の開始はScriptSequencePla yerの時間の開始に対応している。このように、AudioPlayerのオフセットは0で 、そのオリジンは10(setOrigin法を呼び出して)になっている。重要なこと は、 各プレーヤーはClockクラス法(つまり、プレーヤーはクロックである)を 継承しており、このためプレーヤーはそのマスタークロックを別のプレーヤーに 設定することができ、クロックオブジェクトを別々にアドレスする必要がない。 このようにして、プレーヤーはデータストリームオブジェクトに対応すると共 に様々なプレーヤーに同期した状態でプレーヤーの継承が行われる。次にプレー 法をScriptSequencePlayerで読み出す。こうすると、ScriptSequencePlayerの速 度は1.0い設定される(速度1.0は”プレー”に相当し、速度0.0は”ス トップ”に相当し、速度−1.0は逆方向のプレーに相当し、速度0.5は半分 の速度でのプレーに相当する。) Timebaseクラスを継承する方法では、各プレーヤーオブジェクトはCallBackの リストを保有しており、このCallBacksには呼び出すべきオブジェクトと呼び出 すべきイベントが含まれている。時間及び速度の点で”対象となる” (例えば 、影響を受ける)プレーヤーをスーパークラスのtimeChangedまたはrateChanged 法をオーバーライドさせる。setTimeまたはsetRate法を呼ぶと、時間変更または 速度変更に関連するCallBacksがそれぞれ送り出される。さらに、プレーヤーは それ自身またそれに同期しているすべてのプレーヤーに直接timeCmatahahanged またはrateChangedメッセージを送る。timeChangedまたはrateChanged法の範囲 では、プレーヤーがプレーすべき時間にプレーヤーが近づいたと判断すると、自 身にTimeCallBackを登録する。このTimeCallBackは適当な時間にプレーメッセー ジを送り出す。プレーをすべき時間とプレーヤーが判断するおt,CallBackは登 録されず、プレーが即座に呼び出される。 ScriptSequencePlayer802での速度変化によってrateChanged法をスレーブ プレーヤーのそれぞれ、ViodoPlayer804とAudioplayer806に呼び出す。こ の結果、上述したようにCallBAcksはスケジュールされる。第1TimeCallBAckはS criptSequencePlayer802の時間5でVideoPlayer804にセットされ、第2Ti meCalBAckはScriptSequencePlayer802の時間10でAudioPlayer806に設定 される。時間5が達成されたと判断されると、RootClockはプレーメッセージをC allBack経由でVideoPlayer804へ送る。同様に、AudioPlayer806のプレー メソッドは時間10に達すると呼び出される。 CallBAckの時間を設定は本発明を実施するアプリケーション環境の機能である 。つまり、上記の例では、プレーヤーやハードウェアーを準備する目的でメディ アを実際にプレーさせるまでにCallBack]を発生するように設定するのが望まし いか、あるいは、設定する必要がある。 上記の例の第1の変形例として、プレー時間の一部ではオーディオプレーヤー 806が沈黙をするのが望ましいが、後でのプレーを行う時間を確保する(プレ ーバックで一時停止するのとは異なる)。これは、AudioPlayer806をオフか らオンにして行うが、オフ期間中の維持、オン期間中の演算、オンタイム時の時 間の設定といったステップがさらに必要になる。これを行わせる簡単な機構と、 ハードウェアプレーヤーをアナログにしておくことにより、消音機能が得られる 。この消音機能によってプレーヤーは出力を消したままカウント時間を継続させ ることができ、第7図はオーディオプレーヤ−806はその時間13から時間1 6までの間消音されている様子を示してる。 上述の実施例の第2の変形例として、ネットワーク800のスクリプトシーケ ンスに一定の時間をかけてプレーを開始させるのが望ましいと仮定する。Script SeqeuncePlayer802(付録3)のsetTime法でこれを達成させる。つまり、ス クリプトシーケンスのプレー中にイベントが発生してスクリプトシーケンスのプ レーをその時間5まで戻した(例えば、ユーザーがボタンをおしてこのコマンド をスクリプトシーケンスに送ったような場合)と仮定する。この結果、VideoPla yer804とAudioPlayer806はScriptSequencePlayer902から時間がすでに変化し ているというtimeChangedメッセージを受領すると、このVidoePlayerはそのメッ セージを(例えば、VideoPlayer804は時間0で開始し、時間5でAudioPlayer8 06が開始する)保持する。継承階層(つまり、プレーヤーがクロック)によっ て時間変化が簡単に補償される。 上述の例のそのたの変形例として、ScriptSquencePlayerとは関係なくVideopl aybackを特定の時間に行うのが望ましいと仮定する。つまり、ビデオプレイパッ クとスクリプトプレイバックとの同期を変化させるのが望ましい。これはVidoeP layer804のsetTime法を呼びだして行う。つまり、ScritSeuencePlayerの時間 12になってVidoePlayer804がその時間を10に設定するコールを受け取 って実質的に前に飛ばすものと仮定する。これを第8図に示す。このコールの結 果、VidoePlayer804のScriptSequencePlayer802に対するオフセットは5 から2へ変化する。このような変化はViodeoPlayer804にだけ影響するがScir pSequencePlayer802やAudioPlayer806には影響しない。 上記実施例のさらにその他の変形例としては、プレーヤー間の同期関係はその ままにして、ScriptSequencePlayer802がプレーした動画の開始時間を変化さ せるのが望ましい。例えば、クロック開始の時刻を変えずにVideoPlayer804 の開始時刻に一致して、自分の時間5からスクリプトシーケンスがプレーを開始 するのが望ましい。これは、setOorigin機能をScriptSequencePlayer802に対 して呼び出してオリジンを5に設定する。オリジンを変化させてもオフセットに は影響がないことが第9図からわかる。 上述の実施例のさらにその他の変形例として、例えば、プレーの速度を2倍の 加速してスクリプトシーケンスをプレーするのが望ましいと仮定する。このため 、ScriptSequencePlayer802にsetRate法(付録2)を呼び出す。この方法の 効果としては、ScriptSequencePlayer802の速度が2倍になる。重要なことは 、ScripSequencePlayer802の速度を2倍にするとそれに従属するクロック( 及び)プレーヤー、すなわち、VidoePlayer804とAudioPlayer806のプレー 速度が2倍になる。このように、変化をマスタークロックにも付与させる簡単な 方法は、プレーヤーオブジェクトの継承(つまり、プレーヤーがクロックになる ) 以上説明してきたように、時間軸ベースオブジェクトに関連したCallBackオブ ジェクトを時間軸オブジェクトのルートクロックに登録する。このCallBackオブ ジェクトを時間または速度に従って登録することができる(つまり、オブジェク トが設定や変更の通知を発行する)。 特定の時間にメッセージを帰すCallBacksを別々にスケジュールしなくてはな らない。CallBackの時間を関連するクロックのスケールに指定する。この時間を RootClockのスケールに変換してカウンターの現在のチックカウントに付加してR ootClockのリストに一時的に挿入する。RootClockオブジェクトがいつCallBack を送り出す時期を判断する様子を説明する。 時間軸を最終的に同期させなくてはならないRootClock762のハードウェア 部分については、ほとんどのコンピュータは簡単に入手できて簡単に一定に出力 されるハードウェアチックすなわち、60Hzで発振する垂直同期信号(VBL )に基づいている。ソフトウェアカウンターを用いて64ビットintegerなどの チックカウントを維持する。このように、システムは1/60の周期で中断され てソフトウェアカウンターの繰り上げが行われる。 しかしながら、マルチメディアアプリケーションでは、1/60秒の解像度は 十分ではない。例えば、標準的なサンプリング速度は44.1KHzである。こ のように、チックとチックの間には735個のサンプル点がある。735個のサ ンプルの一つに60Hzクロックで正確にアクセスするのは不可能である。44 .1KHzの速度で中断作業を行い続けることができるコンピュータ装置はきわ めて少ない(もしあれば)。 従来の装置では、正確に同期ととることができなかったり、所望の時間を概算 させる高速クロックを使用しようとしたり(例えば、ソフトウェアクロックが同 期していない25MHzシステムクロックなど)していた。いずれの場合も、結 果は同期精度が低下してしまう。 本発明の1実施例によれば、第6図のネットワーク階層のプレーヤー(クロッ ク)を44.1KHzの速度で作動するルートクロックに同期させており(装置 の中で最も早い速度、すなわち、オーディオCDのように他のメディアの遅い速 度、例えば、完全動画の30フレーム/秒のような速度に変換できる)。このよ うに、オーディオCDやそのほかのメディアのサンプルに正確に同期できる。 上述のよにしばしば行われる中断作業によって装置にオーバーロードが加わら ないように、ScriptSequencePlayer802が同期しているルートクロックには1 6ビットハードウェアカウンター部と48−ビットソフトウェアカウンター部が 設けられていて16ビットカウンターはラップアラウンドすると約1.5秒間隔 で中断を行う。ルートクロック16−ビットハードウェアカウンター部からの中 断信号を用いて48ビットソフトウェアカウンターを繰り上げる。このように、 ルートクロックのハードウェアと送付とウェア部分が一緒になって44.1KH zで作動する64−ビットのハードウェア/ソフトウェアルートクロックが形成 される。 さらに、このルートクロックには1または複数の16ビット比較レジスタを備 のえており、このレジスタでCallBackの下位部分の比較を行う。ソフト ウェアカウンターを繰り上げるには、時系列リストに記載されている第1Cal lBackをチェックする。CallBackがスケジュールされたかどうかを 判断するにはルートクロックのカウンターの現在値を64ビットのCallBa ck値から引き算する。この引き算の結果がハードウェアカウンター(つまり、 16ビットの場合は65,536)のビット解像度よりも小さいときはCall Back値の下の桁16ビットをハードウェア比較レジスタに入力する(もし結 果がゼロよりも小さい場合はCallBackはすぐに出力される)。引き算の 結果がハードウェアカウンターのビット解像度よりも大きい場合は、ハードウェ アカウンターはロールオーバーでき、もう1度引き算が行われる。CallBa ck値の下の桁16ビットをハードウェア比較レジスタにラッチしてCallB ack中断処理を行う。 16ビットハードウェアカウンターが比較レジスタ内の値に等しい時は、Ca llBack中断要求を行う。ルートバックは中断処理をディスイネーブル状態 にしてCallBack(すでに説明したように)を送る。当業者は周知のこと であるが、この送出とは、タスクをイネーブルにしてCallBackを処理す る、これは中断ルーティンはできるだけ最小限にするためである。 一般に、当業者が本発明の上記実施例を構造的に変更したりあるいは別の例を 考えてもこれらはすべて本発明の思想に包含されるものである。例えば、すでに 説明したプレーヤーを階層構造に取り入れてもよい。このように、実施例および その説明は具体的な例としてあげたものであり、発明の範囲をなんら制限するも のではない。 デジタルオーディオのプレー デジタルサウンドをプレーするには、サウンド用のオーディオストリームを生 成する。次にDigitizedAudioPlayerを生成し、入力ストリームを指定する。そし てプレーヤーのplayメソッドを呼び出す。 例えば、Bentoファイルが鯨の潮吹きのデジタルサウンドを含むとする。このサ ウンドは、65574という値で識別される。以下の関数は、鯨の潮吹きのサウンド をプレーすることになる。 CDAudioPlayerクラス NYI−Not yew implemented(未だインプリメントされていない) CDのサウンドをプレーするためのCDAudioPlayerクラスのインスタンスを使用 。 オーディオをプレーするためのクラスのインスタンスメソッド このセクションは、AudioPlayerのインスタンスメソッドと、 DigitalAudioPlayerのインスタンスメソッドの追加分と、CDAudioPlayerのメ ソッドの追加分を列挙する。 AudioPlayerのインスタンスメソッド AudioPlayerクラスはPlayerクラスの全てのプレーヤーに属するメソッドと、C lockクラスののクロックに属するメソッドとを継承する。 Playerから継承されたものは以下のようなものである。 Clockから継承されたもので、Playerオブジェクトに関係があるものは以下のよ うなものである。 オーディオプレーヤにおけるオーディオを演奏するのために特有な追加メソッ ドを以下に示す。 ムービーのプレー MoviePlayerクラスは、ムービーのプレーを制御するメソッドを持つ。すなわ ち、play,stopといったPlayerメソッドをPlayerクラスから継承したものの他に 、ムービーのプレーの制御専用メソッドも持つ。 ムービープレーヤーオブジェクトは、これと関連づけられた、プレーすべきム ービーを表すストリームオブジェクトを持つ。このストリームはムービー用のデ ータを含んでいる。これはムービーの全てのサンプルデータ、またトラックとメ ディア(サウンドについても当てはまる)の全ての制御情報にアクセスするため に使用するものである。(注:MacintoshベースのQuickTimeムービーは、このプ レーヤーを使用するための互換形式に変換しなければならない。現在のファイル 変換の考え方としては、single-fork,self-containedムービーファイル(例え ばMacintosh MovieのToolboxのFlattenMovieの機能によって作られたファイル) の使用も含む。) どのような型のストリームも、ムービーのデータ用ソースとして使用すること ができ、デバイスやファイルシステムには依存しない。唯一の必要条件は、その ストリームが絶対位置へのシークと、プロックの読み込みをサポートしているこ とである。 ストリームが遅いと、このプレーヤーに関して最適な結果が得られないことは 明らかである。また、Bentoストリームが使用されるか、他のムービーデータの 周りに他の周辺データが配置されているとすると、ストリームの開始に関連する 様々なデータの塊の配置は、プレーヤーがデータを正しくマップできるように保 たれていなければならない。言い換えれば、記録時にファイルに書き込まれるマ ッピング情報が、再生時に有効でなければならないということである。 ムービー用表示エリアの指定 ムービーをプレーする表示デバイスと、そのデバイス上のどの部分にそのムー ビーが表示されるかは、アプリケーション毎に指定することができる。 表示デバイスを指定するためには、ムービープレーヤーオブジェクトのsetGra phicWorldメソッドを呼び出す。SweetPeaのデフォルトのグラフィックデ バイスはCRT画面である。 表示デバイス上のどの位置にムービーが現れるかを指定するには、そのムービ ーの境界となる長方形を設定する。これは、ムービープレーヤーオブジェクトの setMovieBoundsメソッドを呼び出すことによってできる。Sweetpeaのデフォルト 設定では、ムービーはCRT画面の中央に現れる。境界となる長方形は、長方形の 上、左、右、下の値を指定するRect構造体によって決まる。 この境界となる長方形を、ムービーの画面と考えることができる。 ムービーが生成された時点では、画面のサイズはそのムービーのデフォルトサ イズとなる。一般に、この画面サイズは変更すべきではない。これは、異なるサ イズの画面に合わせてサイズが変更されると、ムービーイメージの質が低下する からである。 しかし、ムービーが現れる表示デバイス上の位置は変更してもよい。この変更 を行うためには、境界となる長方形の左上の位置を、長方形の幅と高さを変更す ることなく変更する必要がある。 Rect構造体の左上を移動するには、KOffsetRect関数を使用する。現在ムービ ーの境界となっている長方形を見つけるためにはムービープレーヤーのgetMovie Boundメソッドを呼び出す。 例えば、以下の関数はムービー画面を元の位置から右方向にxピクセル、下方 向にyピクセル移動するものである。 クリッピング領域 画面のサイズと位置の指定の他に、さらにムービーのクリッピング領域の指定 もできる。そのムービーはクリッピング領域の中だけに現れる。 SweatPeaのデフォルトでは、クリッピング領域はデフォルトの境界となる長方 形に設定されている。 クリッピング領域は、長方形の領域である必要はない。クリッピング領域を指 定するためには、ムービープレーヤーオブジェクトのsetClipRgnメソッドを呼び 出し、KRgnHandleとして領域を指定する。(どのように領域を生成するかについ てはイメージングの章を参照のこと。) ムービーイメージのクリッピング領域からはずれた部分は、クリップされる。 よって、クリッピング領域とムービーの境界となる長方形とは重なっていなけれ ばならない。 ムービーポスター ムービーポスターオブジェクトは、ムービーの一つのフレームをポスターとし て表示するものである。ポスターとして使用したフレームのムービー内の時間を 指定するには、setPosterTimeメソッドを使用し、そのポスターのの表示には、s howPosterメソッドを使用する。 ポスターはムービーと同じ表示デバイス、同じ長方形境界、同じクリッピング 領域を使用する。 ムービー用サウンドの制御 MoviePlayerクラスは、ムービーやトラックのサウンドのボリュームを制御す るメソッドを持つ。トラックボリュームにより、同じムービー内の各トラックは それぞれ異なるボリュームを持つことができる。トラックのボリュームはトラッ クの最終的なボリュームを決めるムービーのボリュームのスケールで示される。 ボリュームの範囲は-1から+1とする。値が大きいほどボリュームは大きい。値 1が、そのプレーヤーがプレーできる最大のボリュームとなる。負の値は無音で あることを意味する。すなわちMoviePlayerは負のボリュームが設定されたムー ビーあるいはトラックに対してはサウンドをプレーしない。しかし、オリジナル のボリュームレベルは、ボリューム設定の絶対値として維持される。 トラック ムービーはいくつかのトラックからなる。通常は、オーディオ用のトラックが一 つと、ビデオ用が一つ、それにいくつかのトラックが追加される。MoviePlayer クラスには例えば指定したトラックのボリュームを設定するsetTrackVolumeメソ ッドのように、トラック個々の制御を行うメソッドがいくつかある。これらのメ ソッドを使用する場合、トラック番号によって特定のトラックを参照するが、こ の番号は1から、そのムービーのトラック数までの全ての番号である。 Quicktimeムービーは他国語サポートや、ムービーの質にレベルを設けるのに 使用される替わりのトラックを含んでいる。替わりのトラックはムービーが制作 されたときのグループ内で調整される。 ムービープレーヤーは、ムービーをプレーする時に、各グループから一つのト ラックを選択する。例えば、あるムービーが3つの異なるオーディオトラックを 持つとき、一つは英語、一つはフランス語、一つはスペイン語のものとすること ができる。これらのトラックはグループ内で調整される。ムービーがプレーされ るとき、ムービープレーヤーはそのグループの中からそのムービーに対して現在 設定されている言語に対応するトラックを選択する。 個々のトラックは有効(enable)にしたり無効(disable)にしたりすること ができる。例えば、2つのオーディオトラックを持つムービーで、一つが音楽用 、一つがそれに重なる声用としたとき、声のトラックだけを無効とすることがで きる。 ムービーの好ましい設定 全てのムービーには再生速度やボリュームに関して、デフォルトの、言い換えれ ば最適な設定というものがある。これらの設定は生成された際にムービーととも に保存される。ムービープレーヤーオブジェクトはこれらのデフォルトの設定に アクセスするための、例えばgetPreferredVolumeメソッドのようなメソッドを持 つ。 ムービーのプレーの方法 ムービーをプレーするためには、ムービーデータ用のストリームオブジェクト を生成する。ムービープレーヤーオブジェクトを生成し、入力ストリームを指定 する。 ムービーをプレーするためには、ムービープレーヤーオブジェクトのplayメソ ッドを呼び出す。 ムービーは、無効化されない限り、プレーされる。ムービーは事前に指定され た表示デバイスの事前に指定された長方形の境界の中に現れる。この際、クリッ ピング領域の外側に出た部分のムービーイメージは現れない。 Sweetpeaの場合、表示デバイスのデフォルトはCRT画面であり、境界となる長 方形のデフォルトは画面中央の長方形の領域である。クリッピング領域のデフォ ルトは境界となる長方形なので、クリッピングは起こらない。 ムービープレーヤーのplayメソッドが呼び出されると、プレーヤーはそのムー ビーの、プレーする範囲として指定された部分をプレーする。デフォルトではム ービー全部をプレーすることになる。ムービーのプレー範囲の指定にはsetPlayR angeメソッドを使用することができる。このメソッドは、プレー範囲として、開 始時間と長さを調整する。 プレーする範囲を使用する一つの例としては、ムービーのプレビューに対応す る範囲を指定する場合がある。例えば、プレビューとして最初の5秒間だけをプ レーすることができる。 新しいムービープレーヤーの生成 新しいムービープレーヤーを生成するためにはMoviePlayerクラスのnewメソッ ドを呼び出す。その手順を以下に示す。 method object new(object self,object stream) 引数: self インスタンス化されるクラスで、この場合はMoviePlayer。 inputStream ムービーデータを表すストリームオブジェクト。 入力ストリームがない場合はNULLを渡せばよい。 このメソッドはムービープレーヤーオブジェクトの新しいインスタンスを生成 する。デフォルトでは、新しいプレーヤーはハードウェアのクロックに同期して いる。 ムービープレーヤーを生成した際には入力ストリームを指定することができる 。また、プレーヤーを生成した時には入力ストリームは指定せず、後にsetInput Streamメソッドを使用して入力ストリームを指定してもよい。 コードの例 以下にムービープレーヤーオブジェクトの生成および使用の例を示す。この関数 は、ムービーデータを指すStreamを引数にとる。この例では時間1におけるフレ ームがポスターとして使われ、ムービーストリームは時間2から時間10までの プレビューを含み、本当のムービーは時間12から112で実行されるものとす る。 この関数は、ポスターを5単位時間の間示した後、プレビューを示し、5単位 時間待ってから、ムービーを開始する。 ムービープレーヤーのインスタンスメソッド MoviePlayerクラスはPlayerクラスの全てのプレーヤーに属するメソッドと、Clo ckクラスのの全てのクロックに属するメソッドとを継承する。 Playerから継承されたメソッドについては別のページに示すが以下のようなも のがある。: Clockから継承したメソッドで、プレーヤーオブジェクトに関連するものを以 下に示す。詳細は別のページに示す。 各ビットは以下のように定義される。 bit0 1bit per pixel bit1 2bit per pixel bit2 4bit per pixel bit3 8bit per pixel bit4 16bit per pixel bit5 32bit per pixel さらに、bit6とbit7はそのメディアのクオリティレベルを定義する。値0は 最低のクオリティレベルで、値3が最高のクオリティレベルに対応する。 mediaQualityDraft クオリティレベルを最低にする。この定数はbit6とbit7を0という値に設定 する。 mediaQualityNormal クオリティレベルを普通にする。この定数はbit6とbit7を1という値に設定 する。 mediaQualityBetter クオリティレベルを高くする。この定数はbit6とbit7を2という値に設定す る。 mediaQualityBest クオリティレベルを最高にする。この定数はbit6とbit7を3という値に設定す る。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,MG ,MN,MW,NL,NO,NZ,PL,PT,RO, RU,SD,SE,SK,UA,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.オブジェクト指向のクラス継承階層に組織された、変数とメソッドを有する クラスを含む型のシステムにおいて、前記システムが、 時間値を返す少なくとも一つのメソッドを含むクロッククラスと、 メディアストリームの少なくとも一部を前記時間値においてプレーされるよ うにする少なくとも一つのメソッドを含むプレーヤークラスであって、前記クロ ッククラスを継承するプレーヤークラスとを備えたことを特徴とするシステム。 2.オブジェクト指向のクラス継承階層に組織された、変数とメソッドを有する クラスを含む型のシステムにおいて、前記システムが、 時間値を返す少なくとも一つのメソッドを含むクロッククラスと、 メディアストリームの少なくとも一部を前記時間値においてプレーされるよ うにする少なくとも一つのメソッドを含むプレーヤークラスと、 前記プレーヤークラスのインスタンスであるプレーヤーオブジェクトであっ て、少なくとも前記プレーヤークラスの他のすべてのインスタンスの速度以上の 速度で動作する手段を含むプレーヤーオブジェクトと、 少なくとも前記プレーヤーオブジェクトの速度以上の速度で動作する手段を 含むルートクロックとを備え、 前記プレーヤーオブジェクトが前記ルートクロックに同期して動作すること を特徴とするシステム。
JP52240394A 1993-03-31 1994-03-31 同期クロック及びメディアプレーヤー Expired - Lifetime JP3476462B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/041,395 US5452435A (en) 1993-03-31 1993-03-31 Synchronized clocks and media players
US08/041,395 1993-03-31
PCT/US1994/003582 WO1994023387A1 (en) 1993-03-31 1994-03-31 Synchronized clocks and media players

Publications (2)

Publication Number Publication Date
JPH08511891A true JPH08511891A (ja) 1996-12-10
JP3476462B2 JP3476462B2 (ja) 2003-12-10

Family

ID=21916294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52240394A Expired - Lifetime JP3476462B2 (ja) 1993-03-31 1994-03-31 同期クロック及びメディアプレーヤー

Country Status (7)

Country Link
US (1) US5452435A (ja)
EP (1) EP0692123B1 (ja)
JP (1) JP3476462B2 (ja)
AU (1) AU680488B2 (ja)
CA (1) CA2159466C (ja)
DE (1) DE69425054T2 (ja)
WO (1) WO1994023387A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210173697A1 (en) * 2018-09-21 2021-06-10 Wangsu Science & Technology Co., Ltd. Method, apparatus and terminal device for acquiring application interface startup time

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596696A (en) * 1993-05-10 1997-01-21 Object Technology Licensing Corp. Method and apparatus for synchronizing graphical presentations
US5680639A (en) * 1993-05-10 1997-10-21 Object Technology Licensing Corp. Multimedia control system
US5530846A (en) * 1993-12-29 1996-06-25 International Business Machines Corporation System for decoupling clock amortization from clock synchronization
US5526515A (en) * 1994-06-30 1996-06-11 Taligent, Inc. Hardware-driven clock with object-oriented interface
KR0138845B1 (ko) * 1994-12-13 1998-06-01 양승택 엠핵(mheg)엔진에서의 멀티미디어 정보 동기 제어기 및 그 제어방법
US5642497A (en) * 1995-01-30 1997-06-24 Tektronix, Inc. Digital disk recorder using a port clock having parallel tracks along a timeline with each track representing an independently accessible media stream
GB2298951B (en) * 1995-03-17 1999-10-27 Olivetti Res Ltd Addition of time information
US5875354A (en) * 1996-03-01 1999-02-23 Apple Computer, Inc. System for synchronization by modifying the rate of conversion by difference of rate between first clock and audio clock during a second time period
US6041345A (en) * 1996-03-08 2000-03-21 Microsoft Corporation Active stream format for holding multiple media streams
US5867175A (en) * 1996-05-24 1999-02-02 Microsoft Corporation Method and apparatus for scriping animation
US6084979A (en) * 1996-06-20 2000-07-04 Carnegie Mellon University Method for creating virtual reality
US6105145A (en) * 1997-02-27 2000-08-15 Masterpiece Software, Ltd. System and method for generating high resolution clockticks in a computer system
US5815689A (en) * 1997-04-04 1998-09-29 Microsoft Corporation Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism
JPH1133230A (ja) 1997-07-16 1999-02-09 Sega Enterp Ltd 通信ゲームシステム
US6701383B1 (en) * 1999-06-22 2004-03-02 Interactive Video Technologies, Inc. Cross-platform framework-independent synchronization abstraction layer
US6545586B1 (en) * 1999-11-17 2003-04-08 Richard S. Belliveau Method and apparatus for establishing and using hierarchy among remotely controllable theatre devices
FR2812957B1 (fr) * 2000-08-14 2003-01-31 Cit Alcatel Procede de memorisation de donnees dans un fichier multimedia utilisant des bases de temps relatives
US6907570B2 (en) * 2001-03-29 2005-06-14 International Business Machines Corporation Video and multimedia browsing while switching between views
AU2002361767A1 (en) 2001-12-17 2003-07-09 Becomm Corporation Method and system for synchronization of content rendering
US7627808B2 (en) * 2003-06-13 2009-12-01 Microsoft Corporation Computer media synchronization player
US20060184949A1 (en) * 2005-02-15 2006-08-17 International Business Machines Corporation Methods, systems, and storage mediums for timing work requests and completion processing
KR20080015083A (ko) 2005-05-31 2008-02-18 마쯔시다덴기산교 가부시키가이샤 기록 및 재생 장치, 기록 및 재생 방법
US20070006062A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8799757B2 (en) * 2005-07-01 2014-08-05 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US7941522B2 (en) * 2005-07-01 2011-05-10 Microsoft Corporation Application security in an interactive media environment
US8305398B2 (en) 2005-07-01 2012-11-06 Microsoft Corporation Rendering and compositing multiple applications in an interactive media environment
US8020084B2 (en) 2005-07-01 2011-09-13 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006065A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Conditional event timing for interactive multimedia presentations
US8656268B2 (en) * 2005-07-01 2014-02-18 Microsoft Corporation Queueing events in an interactive media environment
US7721308B2 (en) 2005-07-01 2010-05-18 Microsoft Corproation Synchronization aspects of interactive multimedia presentation management
US8108787B2 (en) * 2005-07-01 2012-01-31 Microsoft Corporation Distributing input events to multiple applications in an interactive media environment
JP4830419B2 (ja) * 2005-09-20 2011-12-07 富士ゼロックス株式会社 動画像視聴システム、動画像視聴装置、その制御方法、及びプログラム
US20080005025A1 (en) * 2006-06-15 2008-01-03 Henry Joseph Legere Method and apparatus for renting electronic media content without requiring returns or physical inventory
US20080077489A1 (en) * 2006-09-21 2008-03-27 Apple Inc. Rewards systems
US8001472B2 (en) 2006-09-21 2011-08-16 Apple Inc. Systems and methods for providing audio and visual cues via a portable electronic device
US8235724B2 (en) * 2006-09-21 2012-08-07 Apple Inc. Dynamically adaptive scheduling system
US8429223B2 (en) 2006-09-21 2013-04-23 Apple Inc. Systems and methods for facilitating group activities
US8956290B2 (en) * 2006-09-21 2015-02-17 Apple Inc. Lifestyle companion system
US20080076972A1 (en) * 2006-09-21 2008-03-27 Apple Inc. Integrated sensors for tracking performance metrics
US8745496B2 (en) 2006-09-21 2014-06-03 Apple Inc. Variable I/O interface for portable media device
JP4983233B2 (ja) * 2006-12-01 2012-07-25 船井電機株式会社 コンテンツ再生システム
US7949890B2 (en) 2007-01-31 2011-05-24 Net Power And Light, Inc. Method and system for precise synchronization of audio and video streams during a distributed communication session with multiple participants
US8576922B2 (en) * 2007-06-10 2013-11-05 Apple Inc. Capturing media in synchronized fashion
US8433812B2 (en) * 2008-04-01 2013-04-30 Microsoft Corporation Systems and methods for managing multimedia operations in remote sessions
US20090322760A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Dynamic animation scheduling
US20120191724A1 (en) * 2011-01-26 2012-07-26 Tucek Joseph A Storage of data objects based on a time of creation
US8751565B1 (en) 2011-02-08 2014-06-10 Google Inc. Components for web-based configurable pipeline media processing
US8681866B1 (en) 2011-04-28 2014-03-25 Google Inc. Method and apparatus for encoding video by downsampling frame resolution
US9106787B1 (en) 2011-05-09 2015-08-11 Google Inc. Apparatus and method for media transmission bandwidth control using bandwidth estimation
US9185429B1 (en) 2012-04-30 2015-11-10 Google Inc. Video encoding and decoding using un-equal error protection
US9172740B1 (en) 2013-01-15 2015-10-27 Google Inc. Adjustable buffer remote access
US9311692B1 (en) 2013-01-25 2016-04-12 Google Inc. Scalable buffer remote access
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US10776739B2 (en) 2014-09-30 2020-09-15 Apple Inc. Fitness challenge E-awards
US10631047B1 (en) * 2019-03-29 2020-04-21 Pond5 Inc. Online video editor
CN114339353B (zh) * 2021-12-31 2023-09-29 晶晨半导体科技(北京)有限公司 音视频同步方法和装置及电子设备和计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05274419A (ja) * 1991-07-12 1993-10-22 Matsushita Electric Ind Co Ltd 情報提示装置及び提示情報作成装置
JPH05290551A (ja) * 1992-04-09 1993-11-05 Nippon Telegr & Teleph Corp <Ntt> マルチメディア情報同期方式
JPH06203009A (ja) * 1992-09-25 1994-07-22 Nec Corp 複合マルチメディアオブジェクト構成方法
JPH06214690A (ja) * 1993-01-14 1994-08-05 Sony Corp 情報同期制御方法、情報伝送装置および情報出力装置
JPH077730A (ja) * 1993-02-26 1995-01-10 Toshiba Corp 同期制御装置および方法
JPH09511623A (ja) * 1993-02-03 1997-11-18 ノベル,インコーポレイテッド マルチメディア分散システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261041A (en) * 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
US5251369A (en) * 1992-09-28 1993-10-12 General Electric Company Alignment assembly jig for a modular face-pumped laser
US5390138A (en) * 1993-09-13 1995-02-14 Taligent, Inc. Object-oriented audio system
US5388264A (en) * 1993-09-13 1995-02-07 Taligent, Inc. Object oriented framework system for routing, editing, and synchronizing MIDI multimedia information using graphically represented connection object

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05274419A (ja) * 1991-07-12 1993-10-22 Matsushita Electric Ind Co Ltd 情報提示装置及び提示情報作成装置
JPH05290551A (ja) * 1992-04-09 1993-11-05 Nippon Telegr & Teleph Corp <Ntt> マルチメディア情報同期方式
JPH06203009A (ja) * 1992-09-25 1994-07-22 Nec Corp 複合マルチメディアオブジェクト構成方法
JPH06214690A (ja) * 1993-01-14 1994-08-05 Sony Corp 情報同期制御方法、情報伝送装置および情報出力装置
JPH09511623A (ja) * 1993-02-03 1997-11-18 ノベル,インコーポレイテッド マルチメディア分散システム
JPH077730A (ja) * 1993-02-26 1995-01-10 Toshiba Corp 同期制御装置および方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210173697A1 (en) * 2018-09-21 2021-06-10 Wangsu Science & Technology Co., Ltd. Method, apparatus and terminal device for acquiring application interface startup time

Also Published As

Publication number Publication date
WO1994023387A1 (en) 1994-10-13
JP3476462B2 (ja) 2003-12-10
EP0692123A1 (en) 1996-01-17
DE69425054D1 (de) 2000-08-03
CA2159466C (en) 2005-03-22
CA2159466A1 (en) 1994-10-13
US5452435A (en) 1995-09-19
AU6418994A (en) 1994-10-24
AU680488B2 (en) 1997-07-31
DE69425054T2 (de) 2001-03-08
EP0692123B1 (en) 2000-06-28

Similar Documents

Publication Publication Date Title
JPH08511891A (ja) 同期クロック及びメディアプレーヤー
JP3599738B2 (ja) マルチメディア同期システム
US5530859A (en) System for synchronizing a midi presentation with presentations generated by other multimedia streams by means of clock objects
US5680639A (en) Multimedia control system
US5655144A (en) Audio synchronization system
US5265248A (en) Synchronization of music and video generated by simultaneously executing processes within a computer
USRE37418E1 (en) Method and apparatus for synchronizing graphical presentations
US8589871B2 (en) Metadata plug-in application programming interface
KR101143095B1 (ko) 컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정
RU2327218C2 (ru) Создание и выполнение режима анимации для графического пользовательского интерфейса
JP3943635B2 (ja) コンピュータ制御型ディスプレイシステムにおいてセッションの再生ポイントを制御する方法
JP3943636B2 (ja) コンピュータ制御型ディスプレイシステム
KR101231323B1 (ko) 대화형 멀티미디어 환경에서의 상태 변경에 대한 선언적응답
US7477254B2 (en) Smooth transitions between animations
KR101365829B1 (ko) 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치
JPH10145762A (ja) 対話型マルチメディア文書のスタティックおよびダイナミック構成要素の提示を同期させる方法
JPH10283199A (ja) 標準クロック・メカニズムを用いて、多重データ・ストリームの処理の同期と異なる処理速度のマッチングを行う方法、コンピュータ・プログラム・プロダクツ、およびシステム
Chen et al. Multisync: A synchronization model for multimedia systems
Gibbs et al. An object-oriented framework for multimedia composition and synchronisation
US7941739B1 (en) Timeline source
CA2031308C (en) Multi-media synchronizer
Bencina PortAudio and media synchronisation-it’s all in the timing
JPH0916458A (ja) マルチメディアデータ提示方法およびその装置
Ratchov OpenBSD audio & MIDI framework for music and desktop applications

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080926

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080926

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090926

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100926

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100926

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 8

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120926

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120926

Year of fee payment: 9

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130926

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term