JP2521016B2 - マルチメディア・デ―タ処理システム - Google Patents

マルチメディア・デ―タ処理システム

Info

Publication number
JP2521016B2
JP2521016B2 JP4325628A JP32562892A JP2521016B2 JP 2521016 B2 JP2521016 B2 JP 2521016B2 JP 4325628 A JP4325628 A JP 4325628A JP 32562892 A JP32562892 A JP 32562892A JP 2521016 B2 JP2521016 B2 JP 2521016B2
Authority
JP
Japan
Prior art keywords
stream
data
buffer
handler
source
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.)
Expired - Lifetime
Application number
JP4325628A
Other languages
English (en)
Other versions
JPH05265781A (ja
Inventor
クリス・エイ・ディナロ
マイケル・ジェイ・コバル
ウイリアム・ダブリュ・ロートン
マーティン・ジェイ・ポーラット、ジュニア
ジョン・ジー・タイラー
スコット・エル・ウインタース
ゲリー・ジー・オールラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05265781A publication Critical patent/JPH05265781A/ja
Application granted granted Critical
Publication of JP2521016B2 publication Critical patent/JP2521016B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理分野に関し、
特に、マルチタスキング・オペレーティング・システム
の制御の下で、データ・ストリーム転送を連続的に、実
時間方式で発生するパーソナル・コンピュータを基本と
するマルチメディア・システムに関する。
【0002】
【従来の技術】マルチメディア・システムはテキスト、
グラフィックス、ビデオ、イメージ、アニメーション、
オーディオなどの種々の組合せにおいて、様々なマルチ
メディア材料を提供する。こうしたシステムはハードウ
ェアとソフトウェアの組合せにより構成される。ハード
ウェアには種々のマルチメディア装置が接続されるパー
ソナル・コンピュータが含まれる。ハードウェアはオペ
レーティング・システム及びマルチメディア・アプリケ
ーション・プログラムの制御の下で機能する。
【0003】マルチメディア・アプリケーションは装置
間、或いはシステム・メモリから装置へ、或いはその反
対方向へ、連続的に実時間で大量のデータを転送するた
めに、オペレーティング・システムに重い負荷を課す。
マルチメディア・システムはこれらの大きなデータ・オ
ブジェクトを転送するための柔軟でしかも一貫した手段
を支持し、またこの活動を実時間で正確に制御しなけれ
ばならない。新たなマルチメディア装置及びデータ・タ
イプを追加するためには、最小限度の新たなシステム拡
張コードが必要となる。実行時に必要な実メモリのトー
タルは、システム性能が低下しないように最小化されね
ばならない。また、複雑なデータ・タイプ及びインタリ
ーブ式のデータ・オブジェクトを操作する装置の支持も
必要である。さらに、システムの最適な特権レベルにお
いて、各マルチメディア・データ転送制御手段が実現さ
れなければならない。
【0004】マルチメディア・データ・タイプ及び装置
を支持するオペレーティング・システムの拡張は、多数
の異なるマルチメディア入出力装置を制御し、また実時
間の制限範囲において、大量のマルチメディア・データ
・オブジェクトを転送或いはストリームする機能を提供
することが必要がある。
【0005】マルチメディア・アプリケーションは、ビ
ットマップの連続的な表示、デジタル化オーディオ波形
或いはMIDIオーディオ・シーケンス、或いはアナロ
グ・マイクロフォンまたはライン源からのデジタル化オ
ーディオ入力などの大量のデータの入出力を制御する。
アプリケーションはこれら全てのデータ・フローを実時
間クロックにより制御する。すなわち、プログラムによ
り制御される特定の事象は、時間的に明確に定義された
時点において発生されなければならず、これらの時点は
非常に正確に(例えばミリ秒単位で)定義される。
【0006】OS/2制御プログラム・サービス(DO
S呼出、或いはAIXまたはUNIXなどの他のオペレ
ーティング・システムにおける類似のサービス)だけを
考慮すると、アプリケーション・プログラム・インタフ
ェースにおいてこのレベルの機能を制御するには、非常
に複雑で装置依存性の高いデータ転送制御モジュールを
要する。こうしたモジュールが生成されたとしても、各
入出力オペレーションを制御するスレッド(thread)が
その要求時間内に実行される保証はない。この問題を指
摘すると、アプリケーションは複雑なセマフォー(sema
phore) 論理を追加し、入出力制御スレッドを時間的に
厳密なもの、すなわちタイム・クリティカル・スレッド
にする必要が生じる。マルチメディア・アプリケーショ
ンでは一般にデータ・スループットが高負荷であるか
ら、マルチタスキング・オペレーティング・システムの
もとでは、しばしば、割当時間間隔内にデータを宛先装
置に転送することが阻害される。これらの実時間要求
満たせないと、結果的にマルチメディア表現における視
覚的或いは聴覚的な欠陥を発生させる。
【0007】
【発明が解決しようとする課題】実時間における連続的
な大量のデータの転送要求は、一般化された転送機構が
解決しなければならない一連の相互に依存する問題を提
示する。これらの問題を以下に示す。
【0008】1.非常に負荷の大きいデータ入出力要求
を有するスループット重視のアプリケーション 解像度が640x480x16の非圧縮動画ビデオで
は、おおよそ3Mb/秒を必要とする。例え高度に圧縮
されたとしても、デジタル動画ビデオ・データ・ストリ
ームは60Kb/秒を必要とする。8或いは16ビット
のデジタル・オーディオ波形のデータ転送をシナリオに
追加すると、スループットの負荷は80Kb/秒或いは
それ以上に増加する。このスループット負荷を連続的に
支持する一方で、マルチタスキング・システムがファイ
ル入出力及びキーボード/マウス装置の制御などの他の
アプリケーション機能を実行することが、一般化された
データ・ストリーミング機構において最も重要な要求で
ある。しかしながら、ユーザ・インタフェース(聴覚的
及び視覚的)におけるマルチメディア・データ表示は実
時間依存であるため、これらのデータ転送は非常にタイ
トな実時間制限において発生しなければならない。
【0009】2.複数の異なるハードウェア入出力装置
の制御 マルチメディア・アプリケーションは典型的には種々の
入出力装置を制御し、ユーザ・インタフェースのオーデ
ィオ及びビデオ分野における表現を管理する。波形獲得
及び再生を支援するオーディオ装置、デジタル・オーデ
ィオ・コンパクト・ディスク再生、楽器デジタル・イン
タフェース(MIDI)入出力、及び音声発生などが含
まれる。同様に、NTSC(或いはPAL)ビデオのデ
ジタル化、圧縮/伸長、及び獲得を支援するビデオ装置
が、ルーチン的に、マルチメディア提示及び/或いはシ
ナリオに含まれる。一般化されたデータ・ストリーミン
グ機構は、マルチメディア・システムの拡張に関する大
きな変更を要求することなく、これらの及びその他のマ
ルチメディア装置を柔軟に支持する必要がある。
【0010】3.装置及びデータ・タイプ間における一
貫した制御サービスの提供 データ・ストリーム機構は、マルチメディアの創作及び
表現の過程に含まれる異なる装置及びデータ・タイプ間
で、一貫したサービスによって制御されねばならない。
マルチメディア・データ標準が発展する過程において新
たなデータ・タイプが導入される時、この一般化された
ストリーミング機構は実質的に影響されてはならない。
制御サービスは新たなデータ・タイプを現存のアプリケ
ーションに容易に組み込むことが必要とされる。同様
に、これらのサービスは、現存のアプリケーションに影
響を及ぼすことなく、或いはマルチメディア拡張の大き
な変更を必要とせずに、新たな入出力装置のタイプ及び
機能を途切れることなく追加する配慮が必要である。
【0011】4.複数のシステム特権レベルにおける同
一制御サービスの提供 マルチメディア・データ・オブジェクトは、ハードウェ
ア入出力装置或いはシステム(またはアプリケーショ
ン)・メモリにおいて開始(或いは終了)される。デー
タ・ストリーミングがハードウェア装置と共に開始或い
は終了すると、伝送機構はハードウェア装置の振舞いを
直接的に制御し、これにより装置依存型となるのではな
く、間接的に制御できなければならない。しかしなが
ら、最近のオペレーティング・システムにおいて共通な
特徴である、複数の特権レベルを支持する性質において
は、最適性能を出すために、伝送機構( "ストリーム・
ハンドラ" )が装置固有の物理デバイス・ドライバに最
高のシステム特権レベルで接続されることが必要とされ
る。これはハードウェア装置ドライバが通常実行される
レベルである。このように性能的な理由により、デバイ
ス・ドライバ・レベルのストリーム・ハンドラを作成す
ることが望ましいが、ストリーム・ハンドラ・デバイス
・ドライバはそれ自身ハードウェア依存であってはなら
ない。全てのハードウェア特有のコードは、デバイス固
有の物理デバイス・ドライバに含まれる必要がある。あ
るいは、データ・ストリームの出所または宛先として物
理的装置が含まれない場合には、ストリーム・ハンドラ
はより低い特権レベルで実行され、しかも最適性能を達
成可能である。このようにデータ伝送機構は複数の特権
層に渡り分散されている必要があるため、同一のストリ
ーム制御サービスが、ストリーム・ハンドラが実行され
る所与のレベルにおいて提供されねばならない。異なる
特権レベルにおける複数の入力ポイントが、冗長コード
の組込み無しに提供されることが必要である。
【0012】5.最小限の影響により新たな装置/デー
タ・タイプへと拡張する機能 新たなマルチメディア・データ標準及び装置タイプは、
絶えず作成される。この状況は将来的にも継続するもの
と思われ、データ伝送機構は新たな装置及びデータ・タ
イプを支持するように、容易に且つ不断に適応すること
が必要である。
【0013】6.ストリーミング中における物理メモリ
に対する要求を最小限に維持する マルチメディア・アプリケーションにより課せられる重
いスループット負荷にも関わらず、データ・ストリーミ
ング中は常にメモリ・リソースの保存が必要である。ア
プリケーションが物理的なメモリ・マネージャになる必
要のないように、バッファ管理サービスが提供されねば
ならない。しかしながら、いくつかのアプリケーション
はマルチメディア・データ・オブジェクトをメモリ内に
作成するため、これらのアプリケーションについてはメ
モリ・バッファの直接的な制御を有する必要はない。こ
の機能はデータ・ストリーミング機構及びその制御サー
ビスにより、不断に支持されねばならない。
【0014】7.ストリーミング中のCPUローディン
グを最小限に維持する メモリが慎重に管理されねばならない逼迫したリソース
であるように、CPUサイクルは別の重要なリソースで
あり、マルチメディア・アプリケーションの実行中に浪
費されてはならない。データ・ストリーミング機構はハ
ードウェア間のデータ伝送機能(例えばバス・マスタ・
データ転送)を利用して、CPU負荷を最小に維持す
る。更に、データ転送機構にデバイス・ポーリング技術
を使用して装置を制御するのではなく、可能な時に割込
みにより駆動されるデバイス入出力が利用され、CPU
の負荷を軽減する。
【0015】以下の定義は本発明を説明するフレームワ
ークを構成するために提供される。
【0016】データ・ストリーム・・・データ・チャネ
ルを介し、ソース・デバイス(或いはメモリ・アドレ
ス)からターゲット・デバイス(或いはメモリ・アドレ
ス)へ連続的にデータ転送するためのソフトウェア手
段。
【0017】ダイナミック・リンク・ライブラリ(DL
L)・・・OS/2アーキテクチャでは、16ビット或
いは32ビットの実行可能モジュールが特権レベル2ま
たは3で実行され、別の実行可能モジュール(例えば .
EXE)の外部参照を解決するためにメモリにロードさ
れる。DLLはタスク・コンテキストにおいてのみ実行
可能である。
【0018】物理デバイス・ドライバ(PDD)・・・
OS/2アーキテクチャでは、16ビットの実行可能モ
ジュールが特権レベル0(リング0)で実行され、典型
的には入出力装置のオペレーションを制御する。PDD
はタスク・コンテキスト或いはハードウェア割込みコン
テキストにおいて実行される。
【0019】ストリーム・・・データをソースから宛先
(或いはターゲット)に連続的に転送する。
【0020】
【課題を解決するための手段】本発明は一般化されたデ
ータ・ストリーム転送を改善し、様々な入出力装置間の
マルチメディア・データ伝送機構、アプリケーション・
メモリ、及び上述の問題を解決し更に上述の要求を満足
するように設計されたシステム・メモリを提供する。伝
送機構は複数の実行特権レベルを組込むマルチタスキン
グ・オペレーティング・システムを拡張することによっ
て実施される。この機構はデータ・ストリーミングと称
される連続的な、実時間のデータ転送をサポートする。
【0021】
【実施例】図を参照しながら説明すると、図1は一般的
なデータ処理システムを示し、例えばOS/2バージョ
ン2.0などのマルチタスキング・オペレーティング・
システム下で動作するパーソナル・コンピュータ10を
含み、アプリケーション・プログラムを実行する。コン
ピュータ10はマイクロプロセッサ12を含み、これは
ローカル・バス14に接続され、ローカル・バス14は
バス・インタフェース制御装置(BIC)16、数理コ
プロセッサ18、及びSCSI(smallcomputer system
interface )アダプタ20に接続される。マイクロプ
ロセッサ12は好適には、80386或いは80486
マイクロプロセッサなどの80xxxマイクロプロセッ
サ・ファミリの1つであり、ローカル・バス14はこう
したプロセッサのアーキテクチャに準じる従来のデー
タ、アドレス及び制御ラインを含む。アダプタ20もま
たSCSIバス22に接続され、SCSIバス22はC
ドライブとして指定されるSCSIハード・ドライブ
(HD)24に接続される。バス22は他のSCSI装
置(図示せず)にも接続可能である。アダプタ20はま
たNVRAM30及び読出し専用メモリ(ROM)32
にも接続される。
【0022】BIC16は2つの主な機能を実行する。
1つはメモリ制御装置が主メモリ36及びROM38を
アクセスする機能である。主メモリ16はダイナミック
・ランダム・アクセス・メモリ(DRAM)であり、マ
イクロプロセッサ12による実行のためのデータ及びプ
ログラムを格納する。ROM38はPOSTプログラム
40及びBIOS42を格納する。POSTプログラム
40はコンピュータ10がパワー・オン或いはキーボー
ド・リセットによりスタートされる時に、標準のパワー
・オン及びシステムのセルフ・テストを実行する。アド
レス及び制御バス37はBIC16をメモリ36及びR
OM38に接続する。データ・バス39はメモリ36及
びROM38をデータ・バッファ41に接続し、データ
・バッファ41は更にバス14のデータ・バス14Dに
接続される。制御ライン45はBIC16及びデータ・
バッファ41を相互接続する。
【0023】BIC16の他の主な機能は、バス14と
マイクロ・チャネル(MC)・アーキテクチャに準じて
設計される入出力バス44間のインタフェースである。
バス44は更に入出力制御装置(IOC)46、ビデオ
信号プロセッサ(VSP)48、デジタル信号プロセッ
サ(DSP)49、及び複数の拡張コネクタ(EC)或
いはスロット50に接続される。VSP48は更にビデ
オRAM(VRAM)60及びマルチプレクサ(MU
X)62に接続される。VRAM60はモニタ68の画
面上の表示を制御するテキスト及びグラフィック情報を
格納する。MUX62は更にデジタル−アナログ変換器
(DAC)66、及び、ビデオ機能バス(VFB)に接
続可能なコネクタ或いはターミナル70に接続される。
DAC66は従来の出力画面或いは表示を提供するモニ
タ68に接続され、これはユーザによって観察される。
【0024】IOC46は複数の入出力装置のオペレー
ションを制御し、これらの装置にはAドライブとして指
定されるフロッピ・ディスク・ドライブ72、プリンタ
74、及びキーボード76が含まれる。ドライブ72は
制御装置(図示せず)及び取り外し可能フロッピ・ディ
スク或いはディスケット73を含む。IOC46はまた
マウス・コネクタ78、シリアル・ポート・コネクタ8
0、及びスピーカ・コネクタ82に接続され、これらの
コネクタにより種々のオプション装置がシステムに接続
される。
【0025】DSP49は更に命令RAM84、データ
RAM86、アナログ・インタフェース制御装置(AI
C)88、及びオーディオ制御装置90に接続される。
RAM84及び86はそれぞれDSP49が信号処理す
るために使用する命令及びデータを保持する。オーディ
オ制御装置90は種々のオーディオ入出力を制御し、ま
た複数のコネクタ92に接続される。これらのコネクタ
により様々な装置がシステムに接続可能となる。こうし
た装置にはヘッドフォン、マイクロフォン、スピーカ、
楽器デジタル化インタフェース(MIDI)、及びオー
ディオ・ライン・イン及びライン・アウト機能を必要と
する装置が含まれる。他の様々なマルチメディア装置
(MMD)96も、EC50及びアダプタ・カード94
を介してシステムに接続可能である。
【0026】メモリ36はシステムで実行される様々な
プログラムを格納し、これらのプログラムにはマルチメ
ディア・アプリケーション・プログラム(MMAP)1
02を含むアプリケーション・プログラム100、及び
オペレーティング・システム98が含まれ、後者はsync
/stream sub-system(S/SS)104を含む拡張を有
する。ここで図1は典型的なマルチメディア・システム
を表すが、オペレーティング・システムは汎用目的であ
り、図1で示される構成とは異なる構成を有するデータ
処理システムについても実行或いは制御できるように設
計されることを述べておく。本発明は主にS/SS10
4及びそのオペレーティング・システム100との対話
において実施され、これについて次に説明することにす
る。
【0027】SYNC/STREAM SUB-SYSTEM
【0028】図2を参照すると、マルチメディア・アプ
リケーション・プログラム102はオペレーティング・
システム98の上の層で実行され、マルチメディア制御
インタフェース(MCI)を介して、マルチメディア環
境における装置を制御するためのMCIコマンドを送信
することにより通信する。いくつかの基本コマンドには
pause、play、record、resume、seek、save、set、sto
p などがある。こうしたコマンドはオペレーティング・
システム98によりメディア・デバイス・マネージャ
(MDM)106に転送される。MMAP用のアプリケ
ーションプログラミング・モデルはOS/2 Presentation
Manager プログラミング・モデルの論理拡張であり、オ
ブジェクト指向のメッセージング構成体及び手順(call
及びreturn)プログラミング・インタフェースの両方を
組み込む。MCIはアプリケーション開発者、及び、ビ
デオ及びオーディオ家庭演奏システムの開発者などのユ
ーザにビューを提供する。オペレーションはメディア装
置として知られるメディア情報用のプロセッサを制御す
ることにより実行される。メディア装置は内部或いは外
部ハードウェア装置であるか、或いは、低レベルのハー
ドウェア要素及びシステム・ソフトウェア機能を操作す
ることにより、定義された一連のオペレーションを実行
するソフトウェア・ライブラリが存在する。複数のメデ
ィア装置をシナリオに含むことが可能であり、これらの
装置は再生を同期させるために、グループとして割り付
けられて制御される。
【0029】マルチメディア・アプリケーションはシス
テムの実時間の振舞いにおける2つの面を制御する必要
があり、ある装置から別の装置への大量のデータの転
送、及び関連する事象の同期がそれに相当する。プログ
ラムにより制御される事象はユーザの直接の制御の下で
認識されることが必要であり、基本となるシステム機能
はこれらの事象が予測可能であり実時間において発生す
ることを容易にし、また保証する。マルチメディア・ア
プリケーションの制作者は実時間クロックを基本に動作
するプログラムを作成するべきである。
【0030】MCIは2つのレベルの動的なリンク・ラ
イブラリ(DLL)を有し、これらはMDM106及び
メディア・ドライバを含み、後者はオーディオ・メディ
ア・ドライバ108及びMIDIメディア・ドライバ1
10を含む。MDM106はメディア装置のリソース管
理を提供する。また、MDM106はメディア装置への
アクセスの競合を解決し、アプリケーション開発者にハ
ードウェアに独立なリソースの考え方を提供する。メデ
ィア・ドライバは動的なリンク・ライブラリであり、メ
ディア装置の機能を実施する。メディア・ドライバはハ
ードウェア装置のサービス或いはソフトウェアを呼出
し、それらの機能を実施する。メディア・ドライバは直
接的にはハードウェア装置を制御しない。その代わり、
コマンドをストリーム・プログラミング・インタフェー
ス(SPI)112及びsync/stream マネージャ(SS
M)114を介して、S/SS104に転送する。SS
M114は同期及びストリーミング活動を制御する。S
SM114は2つの主な機能を実行し、その第1は連続
的な実時間のデータ・ストリーミングを提供するための
データ・ストリーミングの制御であり、これは本出願の
目的でもある。第2の機能はデータ・ストリームの同期
を含み、こうした機能の詳細は上述の関連するアプリケ
ーションにより実施される。
【0031】ストリーム・ハンドラがシステム・カーネ
ル・レベル及びアプリケーション・レベルの両方で必要
とされる。いくつかのデータ・ストリームは、ストリー
ム・ハンドラとリング0の特権レベルを有する物理デバ
イス・ドライバとの間の直接接続により最適に制御され
る。こうしたストリーム・ハンドラはOS/2Interdevice
Driver Communication(IDC)に基づく共通のインタ
フェースを使用してPDDと通信する。他のデータ・ス
トリームは特定の物理装置にマップ化可能なデータ・ソ
ース或いはターゲットとは関連せず、DLLによりリン
グ3の優先レベルで制御される。点線113は一般にど
の項目が異なる優先レベルにおいて動作するかを示して
いる。SSM114において、扱っているタスクに応じ
て、いくつかのルーチンはあるレベルで動作し、他のル
ーチンは別のレベルで動作する。
【0032】各ストリーム・ハンドラはプログラマブル
であり、ストリーム・プロトコルに準じてストリーミン
グ可能である。SSM114の観点より、全てのストリ
ーム・ハンドラは同様な責務を負う。各ハンドラは1つ
以上のデータ・ストリームに対応するソース或いはター
ゲットに相当するように設計され、各データ・ストリー
ムはデータを独立に転送する。マネージャ114はスト
リーム・ソースを適切なストリーム・ターゲットに接続
してデータ・フローを維持し、またストリームの終了に
際し、種々のリソースをクリーニングする役割を担う。
更に、ストリーム・ハンドラはデバイス依存型のモジュ
ールではない。各ストリーム・ハンドラは特定の事前に
定義されたタイプのデータのストリーミングを支持する
が、データはあるハンドラから次のハンドラに、ハード
ウェアの振舞いに関する知識無しに転送される。また、
オーディオ・ストリーム・ハンドラ134は互換性を有
するオーディオ装置のPDDと、完全にハードウェア独
立形式で通信する。互換であるためには、PDDは標準
オーディオ・デバイス・ドライバ・インタフェースIO
CTLの場合同様、IDCインタフェースに準じること
が必要である。図示されるように、ストリーム・ハンド
ラ114は複数のストリーム・ハンドラ動的リンク・ラ
イブラリ(DLL)116ー126と対話する。これら
はそれぞれMIDIマッパー、CD/DA、メモリ、分
割ストリーム、CD−ROM/XA、及びファイル・シ
ステムのストリーム・ハンドラに対応する。ファイル・
システム・ストリーム・ハンドラDLL126はファイ
ル・システム130をアクセスするために、マルチメデ
ィア入出力(MMIO)マネージャ128を呼出す。
【0033】ストリーム・マネージャ114はまた、ス
トリーム・マネージャ・ヘルパ133を介して、オーデ
ィオ・ストリーム・ハンドラ物理デバイス・ドライバ
(PDD)134と対話する。134はストリーム・ハ
ンドラ/PDDインタフェース136及び複数のPDD
138ー144を介して、選択的に物理装置をアクセス
する。ストリーム・マネージャ114はまた、デバイス
間通信(IDC)インタフェース146を介してインタ
フェース136と対話できる。
【0034】図3はデータ・ストリーミング・オペレー
ションの一般化モデルであり、その詳細は以降の図に示
されるフローチャート及びデータ構造に関連して説明さ
れる。図3は一般に単一のデータ・ストリーム151を
示し、データがストリーム・マネージャ114、及びソ
ース及びターゲット・ストリーム・ハンドラ152及び
154の制御により伝送される様子を示す。複数のスト
リーム・バッファ156がメモリに割当てられ、ストリ
ーミングに使用される。バッファ156はソース・デバ
イス158からのストリーム・データで充填され、スト
リーム・データはターゲット・デバイス160にデータ
を転送することにより空状態となる。データ・ストリー
ム151はソース・ストリーム・データ153とターゲ
ット・ストリーム・データ155の2つの部分から構成
される。ソース・ストリーム・データのデータ経路は、
ソース158からソースPDD162及びストリーム・
ハンドラ152を介し、バッファ156に至る。ターゲ
ット・ストリーム・データ155のデータ経路はバッフ
ァ156からターゲット・ストリーム・ハンドラ154
及びターゲットPDD164を介し、ターゲット・デバ
イス160に至る。ソース・ストリーム・ハンドラ15
2はソースPDD162をアクチュエートし、PDD1
62はソース・デバイスのオペレーションを制御する。
ターゲット・ストリーム・ハンドラ154はターゲット
PDD164をアクチュエートし、PDD164はター
ゲット・デバイス160を制御する。ソース・ストリー
ム・ハンドラ152の一般的な目的は、ターゲット・デ
バイスがスタートする以前にストリーム・バッファ15
6の少なくとも2つを充填し、ターゲット・デバイスが
一度スタートすると、全てのソース・データが転送され
るまで、バッファを充填することにより、ターゲット・
デバイスよりも先行することである。バッファが充填さ
れると、ターゲット・ストリーム・ハンドラはそこから
ターゲット・データを獲得し、それをターゲット・デバ
イスに転送できる。
【0035】メディア・ドライバ108はSPIファン
クション或いは呼出を送信し、ストリーム事象通知を受
信することにより、SPIインタフェースと対話する。
マネージャ114はSPI呼出を解釈し、それに応答し
て目的の機能を実行する。これはシステム・ヘルパ・コ
マンド(SHC)をハンドラへ送信し、ストリーム・マ
ネージャ・ヘルパ(SMH)呼出をハンドラから受信す
ることにより、ストリーム・ハンドラと対話して実行さ
れる。メディア・ドライバ108はまた、標準IOCT
Lコマンドにより定義される制御ファンクションを発行
することにより、PDD164を直接制御できる。本発
明に関連する主なSPI呼出はSpiCreateStream及びSpi
StartStream であり、それぞれ目的のストリームをセッ
トアップし、続いてデータのストリーミングを開始す
る。これについては後に図20及び21を参照して更に
詳細に説明する。同期されなければならない複数のスト
リームが存在する場合には、SpiEnableSync 呼出が実施
され、これについては関連するアプリケーションにおい
て詳しく説明されている。
【0036】図4はストリーム・ハンドラ・コマンドSH
C.CREATEが実行される時に、何が発生するかを表す。し
かしながら、これを説明する前に、アプリケーション・
プログラムに関連して、どのようにそのポイントに達す
るかを理解することが有益である。第1に、MMAPは
データ・ストリームを生成するためにMCI呼出を発行
する。こうした呼出はOS98により解析され、OSは
メディア・デバイス・マネージャ106に情報を送信す
る。このマネージャは次に適切なメディア・ドライバを
選択する。対称となるドライバはSpiCreateStream呼出
をsync/streamマネージャ114に送信するドライバで
あり、sync/stream マネージャ114は続いてSHC.CREA
TEコマンドを適切なストリーム・ハンドラに発行する。
【0037】図4はSHC.CREATEコマンドがDLLソース
・ストリーム・ハンドラ152により実行されるときの
様子を示す。最初にステップ201で、OSの下でスレ
ッドを生成する。スレッドはOSのマルチタスキング機
能により制御される。ステップ202ではスレッドに対
し、実行されるタスクに適切な優先レベルを割当てる。
次にスレッドはステップ203でセマフォー上でブロッ
クされ、"スリープ"状態となる。優先レベルは、OSが
スレッドを割当て、実行するレートを制御するために使
用される。不連続性が生じる場合には、優先レベルは調
整される。
【0038】ここでOS/2の標準オペレーションに準
じ、スレッドは個々のタスクとして扱われ、スレッドが
ブロックされる時、呼出が生成される時、及び復帰が生
成される時などにおいて、OSへの復帰を制御する。こ
れによりオペレーティング・システムはマルチタスク方
式により、システムにおける他のタスクを実行したり、
ストリーミング・スレッドに復帰したりする。また、図
には丸で囲まれた数値が矢印で接続されているが、これ
らはプログラムのフローを示している。例えば、接続印
の1が図4と図20で現れる。図20では、接続印は呼
出と復帰の両方を含むのに対し、図4の接続印ではルー
チンがどこかで呼出されていることを示す呼出の矢印だ
けを含む。他の接続印についても同様に解釈できる。
【0039】アプリケーション・プログラムにおいて生
成されるスタート・コマンドに応答して、マネージャ1
14は SHC.STARTコマンドを最初にソース・ストリーム
・ハンドラに(図4の206)、続いてターゲット・ス
トリーム・ハンドラに送信する。ソース・ストリーム・
ハンドラは、ターゲット・ハンドラがストリーム・バッ
ファに転送されるデータを使用可能になる以前に、当該
バッファを充填するために最初に起動される必要があ
る。こうしたコマンドに応答して、ソース・ストリーム
・ハンドラはステップ208でソース・スレッドをブロ
ック解除する。ブロック解除或いは喚起に応答して、ソ
ース・スレッドは次にステップ216で、マネージャ1
14から空(エンプティ)バッファを要求する。ステッ
プ218でバッファが使用可能でないと判断されると、
ステップ220で再びスレッドをブロックする。空バッ
ファが使用可能な場合には、ステップ222でソース・
デバイスからデータを読出し、バッファを充填する。次
にステップ224で充填されたバッファをマネージャ1
14に戻す。ステップ226では更にバッファを充填す
る必要があるかを判断する。必要がある場合、ステップ
216に分岐し、ステップ216からステップ226に
至るループが形成され、このループはステップ226で
バッファが充填される必要がないと判断される時にブレ
ークされる。次にスレッドはブロックされる。ストリー
ミング・オペレーションが一度開始されると、ソース・
ファイルの終わりがソース・スレッドが静止するするポ
イントに達するまで、バッファ充填処理が繰り返され
る。事象検出は図4のオペレーション・シーケンス内の
アスタリスクで示されるポイントであれば挿入可能であ
り、例えば、キュー(cue)・ポイント検出により、転
送されるデータ・レートにより決まる時間を追跡する。
事象検出はまた、後に続く数多くのルーチン内でも使用
される。
【0040】図5はDLLターゲット・ストリーム・ハ
ンドラをリング3の優先レベルでオペレートする場合を
示す。ターゲット・ストリーム・ハンドラはターゲット
・データ・ストリームを生成するためにマネージャ11
4からSHC.CREATEを受信し、、最初にステップ230で
ターゲット・ストリーム・スレッドを生成する。次にス
テップ232でスレッドに対し優先度を割当て、ステッ
プ234でセマフォー上のターゲット・スレッドをブロ
ックする。ステップ236でマネージャ114が SHC.S
TARTコマンドを発行することにより、ターゲット・スレ
ッドが喚起されると、ターゲット・スレッドはステップ
238でブロック解除され、ステップ240でスレッド
は喚起される。ステップ242ではデータ・ストリーム
からフルのバッファを獲得しようとする。ステップ24
4で、バッファが獲得されたかを確認し、獲得されてい
ない場合は、ステップ246でターゲット・スレッドを
ブロックする。フルのバッファが獲得されると、ステッ
プ248でバッファ内のデータをターゲット・デバイス
に書込み、次にステップ250で空バッファをマネージ
ャ114に戻す。ステップ252ではバッファがデータ
・ストリームにおける最終バッファであるか、すなわち
EOSに達したかどうかが確認される。そうでない場合
には、ステップ242に分岐が発生し、フルのバッファ
を獲得するための処理が繰り返される。ループはストリ
ームの終わりが検出されるまで繰り返され、検出の際に
ステップ254でスレッドを終了する。
【0041】図6を参照すると、ターゲット・ストリー
ム・ハンドラが物理デバイス・ドライバにおいてリング
0の優先レベルで実施される様子が示される。ステップ
256でSHC.CREATEコマンドが受信されると、ステップ
258でストリーム・データ構造がセットアップされ、
ステップ260ではターゲット・デバイスが初期化され
る。ステップ261で復帰が行われる。ステップ262
でストリームが開始されると、ステップ264でフルの
バッファに対する要求がマネージャ114に出される。
ステップ266でバッファが提供されたかが判断され
る。もしそうであれば、ステップ268で入出力書込み
が開始され、その後ステップ270で復帰する。ステッ
プ272によりエラーが生じていると判断され、その結
果、バッファが返却されない場合には、ステップ274
でエラーが報告され、次に復帰する。
【0042】バッファへの書込み及びエンプティ処理に
より入出力オペレーションが完了すると、ステップ27
2は割込みを発生し、これはステップ274で割込みハ
ンドラにより処理される。入出力オペレーションがエラ
ー無しに達成されると、ステップ278は空バッファを
マネージャ114に戻し、ステップ264に分岐が発生
し、処理が繰り返される。入出力オペレーション中にエ
ラーが発生すると、ステップ280でエラーが報告さ
れ、ステップ282で復帰する。ソース・ストリーム・
ハンドラによるリング0の優先レベル処理は、空バッフ
ァを獲得し、フルのバッファを戻す以外は、図6の処理
と同様である。
【0043】使用可能なデータ・ファイル及びストリー
ムには2つのタイプがあり、それらは統一或いは非イン
タリーブド・ストリーム、及び、分割或いはインタリー
ブド・ストリームである。統一データ・ストリーム及び
ファイルは、例えばオーディオ・データである1つのタ
イプのデータだけを含む。これに対し分割ストリーム
は、例えばオーディオ・データとビデオ・データの両方
の複数タイプのデータを含む。CD−ROM装置用に一
般に生成されるファイル・タイプが例として挙げられ
る。図7は異なるタイプの例を示す。ファイル286は
所与のタイプのオーディオ・データだけを含む統一ファ
イルを表す。こうしたファイルは複数のバッファB1−
B3に読込まれる。バッファB1にはオーディオ・デー
タの第1のセクションが充填され、バッファB2にはオ
ーディオ・データの次のセクションが充填される。ファ
イル288は分割或いはインタリーブド・ファイルを表
し、インタリーブされたオーディオ及びビデオ・データ
の複数のセクションが含まれる。セクションは、オーデ
ィオが、提示されるビデオに対応するように、対に構成
される。こうしたデータはレコードの如く、関連するバ
ッファB4−B6に転送される。すなわち、第1のオー
ディオ・セクションA1はB4においてオーディオ・レ
コードAR1に、第1のビデオ・セクションV1はB4
のビデオ・レコードVR1に、また第2のオーディオ・
セクションA2はB4のAR2となる。次に、セクショ
ンV2、A3及びV3がバッファ5にレコードVR2、
AR3及びVR3として転送される。バッファB6も同
様にAR4及びVR4により充填される。明らかなよう
に、この例においては、バッファB4−B6は、各々、
3つのレコードを保持するサイズとなる。
【0044】ストリームがマネージャ114により生成
されると、複数のバッファは各ストリームに割当てら
れ、ストリームを管理するために使用されるデータを含
むデータ構造が形成される。図8を参照すると、各スト
リームに対し、バッファ・ディレクトリ構造BDSが生
成され、これが他のストリームのBDSのリンク・リス
トに追加される。バッファ制御ブロック(BCB)の連
鎖が各ストリームに対して生成され、ストリームには各
バッファに対して1つのBCBが割当てられる。図示さ
れるように、BDS1がストリーム#1に対して生成さ
れ、3つのBCBすなわちBCB1−BCB3に連鎖さ
れる。これらのBCBはそれぞれ関連し、3つのバッフ
ァB1−B3に対するポインタがストリーム#1に割当
てられる。
【0045】各BDSはストリームに割当てられるバッ
ファの数、ストリームの状態、(分割ストリームにおけ
る)バッファ内のレコードの数に関する情報、及び第1
のフルのバッファのBCBに対するポインタ200、空
バッファのBCBに対するポインタ202、及び、リス
ト内の次のBDSに対するポインタ204を記憶するた
めの複数のフィールドを含む。ストリームの異なる状態
には、実行中、停止、休止、及びプレロール(prerolle
d)或いはプライム(primed) がある。後者はオプショ
ンであり、ターゲット・デバイスがスタートする以前
に、全てのバッファをソースから充填することによりク
イック・スタートを提供する。各BCBはバッファ内の
バイト数、分割ストリーム・バッファ内のレコードの
数、バッファに対するポインタ206、連鎖内の次のB
CBに対するポインタ208、及び、BCB連鎖の先頭
及び末尾に対するポインタを含む情報を記憶する。
【0046】ストリーム#3及び#4は図7の例を使用
して、分割ストリームに対応するデータ構造のバッファ
リングを表す。BDSが分割ストリーム内の各データ・
タイプに対応してセットアップされる。BDS3はオー
ディオ・データ用に、またBDS4はビデオ・データ用
にセットアップされる。バッファBが3つのレコード
により充填されると、2つのレコード制御ブロックRC
B1及びRCB2が生成され、充填されて、オーディオ
・レコードAR1及びAR2のB1におけるオフセット
及びオフセット長を示す。BCB4はバッファB1に2
つのレコードが存在することを示すようにセットされ
る。並行してRCB3が生成され、ビデオ・レコードV
R1のバッファB1におけるオフセット及びオフセット
長を示す。BCB7における記録フィールドの数は、そ
こに記憶される唯一のビデオ・レコードに対応して、1
にセットされる。その他のBCB及びRCBについても
同様に生成され、分割ストリームに割当てられる残りの
バッファに対応して充填される。また分割ストリームに
対し、1つのBDSがオーナに指定され、いずれか残り
の1つがユーザと見なされる。リンク・リストには各ユ
ーザBDSから関連するオーナBDSを指すポインタ2
10が含まれる。更に、次に示すポインタが存在する。
それらはユーザBCBからオーナBCBを指すポインタ
212、及び、BCBからそれに連鎖されるRCBを指
すポインタ214である。
【0047】SSM114はストリーム・マネージャ・
ヘルパ(SMH)を使用することにより、ストリーム・
ハンドラから呼出される。図9を参照すると、ステップ
220で、マネージャ114がバッファ或いはレコード
を獲得或いは返却するためにSMH.NOTIFY呼出を受信する
と、ステップ222で呼出パラメータが確認され、ステ
ップ224で呼出者がソース・ストリーム・ハンドラ
か、或いはターゲット・ストリーム・ハンドラであるか
を判断する。ソース・ストリーム・ハンドラである場
合、ステップ226で、ユーザ或いはアプリケーション
がバッファを供給しているかどうかを判断する。そうで
ある場合、ステップ228で GiveBufルーチンを呼出
し、このルーチンの復帰に際し、ステップ230は呼出
者に復帰する。ステップ226が否定の場合、ステップ
232はフルのバッファが返却されているかを判断す
る。そうである場合、ステップ234でReturnFullルー
チンを呼出し、そのルーチンの復帰に際しフルのバッフ
ァが返却される場合には、ステップ230を通じて復帰
するか、或いは空バッファに対する要求が生じているか
判断するためにステップ236が実行される。ステップ
236は、ステップ232でフルのバッファに対する要
求が出されていないと判断されると、常に実行される。
ステップ236が肯定の場合、ステップ238でGetEmp
tyルーチンが呼出され、ステップ230を介して復帰す
る。
【0048】ステップ224で呼出者がソース・ストリ
ーム・ハンドラではないと示される場合には、呼出者は
ターゲットであり、ステップ240で空バッファが返却
されているかを判断する。返却されている場合、ステッ
プ242で ReturnEmptyルーチンを呼出し、ステップ2
44で要求がフルのバッファに対するものであるかを判
断する。そうでない場合、ステップ230を介して復帰
する。そうである場合は、ステップ246で GetFullル
ーチンを呼出し、その後、ステップ230を介して復帰
する。ステップ240が否定の場合、ステップ248で
ストリームの終わりに達したかがチェックされる。達し
てない場合、ステップ244に移行し前述のように処理
される。一方、達した場合には、ステップ250でバッ
ファをリセットし、ステップ252でアプリケーション
にストリームの終わりを報告し、その後、ステップ24
4に移行する。
【0049】図10は GiveBufルーチン228を示し、
ステップ254は提供すべき残りのバッファが存在する
かをチェックする。存在しない場合、ステップ256で
復帰する。そうしたバッファが存在する場合は、ステッ
プ257で空ポインタがエンプティBCBを指示するか
をチェックする。指示される場合、ステップ258でMa
pUserBufferルーチンを呼出す。その後、ステップ26
0でエラーをチェックする。エラーが発生していない場
合、ステップ262でバッファの属性を保管し、ステッ
プ264でストリームの終わりに達したかが確認され
る。達していない場合、ステップ266でターゲット待
機中フラグがセットされているかがチェックされる。セ
ットされていない場合、ステップ254にループが形成
される。ステップ257が否定の場合、ステップ268
でソース待機中フラグをセットし、ステップ270でCh
eckPrerollルーチンを呼出す。ステップ272ではエラ
ーをチェックする。エラーが存在しない場合、制御はス
テップ254に移行する。ステップ272でエラーが通
知される場合、ステップ274でバッファ過剰を示すエ
ラー・フラグをセットし、ステップ256により復帰す
る。ステップ264が肯定の場合、ステップ276で C
heck-Prerollルーチンを呼出し、ステップ254に移行
する。ステップ266が肯定の場合には、ステップ27
8で、ターゲット・ストリーム・ハンドラを起動するた
めにヘルパ・コマンドを送信する。
【0050】図11を参照すると、フルのバッファを獲
得するためにReturnFullルーチンが呼出されると、最初
にステップ280で、使用可能なフルのバッファが存在
するかがチェックされる。存在しない場合、ステップ2
82で復帰する。フルのバッファが存在する場合、ステ
ップ284でフルのバッファのアドレスに対応するBC
Bの連鎖を探索し、ステップ286でフルのバッファが
見い出されたか、及びソースがそれを所有するかがチェ
ックされる。否定の場合、ステップ288で無効なバッ
ファの返却を示すエラー・フラグをセットし、ステップ
282で復帰する。ステップ286が肯定の場合、ステ
ップ290でバッファ或いはレコードが返却されている
かが判断される。バッファの場合には、ステップ292
でバッファの属性を保管し、ステップ294で保留の放
棄ストップが存在するかがチェックされる。存在する場
合、ステップ300でCheckStopPendingルーチンを呼出
す。ステップ296はステップ300或いはステップ2
94に続き、ストリームの終わりに達したかを判断す
る。達した場合、ステップ302でCheckPrerollルーチ
ンを呼び出す。ストリームの終わりに達していない場合
は、ステップ298で、ターゲット・ストリーム・ハン
ドラが起動されるのを待機しているかがチェックされ
る。そうである場合は、ステップ299でターゲットを
起動するためにSHC.START ルーチンを呼出す。ステップ
298が否定の場合、ステップ280へループが形成さ
れる。
【0051】ステップ290でレコードが返却されると
判断されると、ステップ304はレコードがバッファに
存在するかを確認する。ステップ306はレコード・ポ
インタがokであるかを判断する。そうでない場合、ス
テップ308で無効なレコードが返却されたことを示す
エラー・フラグをセットし、その後、ステップ282で
復帰する。ステップ206が肯定の場合、ステップ31
0でレコードの属性を保管し、RCBを割当て、それを
RCBリストに追加する。次にステップ312でストリ
ームの終わり及びバッファ状態に対応する最終レコード
をチェックし、ステップ294に移行する。
【0052】図12に示されるGetEmptyルーチンの開始
に際し、ステップ314は獲得すべきバッファが更に存
在するかを判断する。存在しない場合、ステップ316
で復帰する。存在する場合は、ステップ318で空ポイ
ンタがエンプティBCBを指示するかをチェックする。
そうである場合、ステップ320でバッファの属性を獲
得し、ステップ314にループして戻る。ステップ31
8が否定の場合、ステップ322で使用可能なバッファ
が存在しないことを示すソース待機中フラグをターン・
オンする。次にステップ324で、CheckPrerollルーチ
ンを呼出す。ステップ326でエラーをチェックする。
エラーが存在しない場合、ステップ314へのループ3
14が形成される。エラーが存在する場合、使用可能な
バッファが存在しないことを示すためにエラー・フラグ
がセットされ、ステップ316で復帰する。
【0053】図13を参照すると、ReturnEmpty ルーチ
ンはステップ330で開始され、ここで返却すべきバッ
ファが更に存在するかがチェックされる。存在しない場
合、ステップ332で復帰する。バッファが存在する場
合、ステップ334でバッファ・アドレスに対応するバ
ッファBCBの連鎖を探索する。ステップ336では、
バッファが見い出されて、ターゲット・ストリーム・ハ
ンドラがそれを所有するかが確認される。そうでない場
合には、ステップ338で無効なバッファが返却された
ことを示すエラー・フラグがセットされる。ステップ3
36が肯定の場合、ステップ340で、レコード或いは
バッファのどちらが返却されるかを判断する。バッファ
の場合、ステップ342でバッファを空と記し、ステッ
プ346でソース・ストリーム・ハンドラが待機中であ
るかを確認する。そうでない場合は、ステップ348を
スキップする。待機中の場合は、ステップ348でソー
スに対しSHC.START ルーチンを呼出す。ステップ344
が肯定の場合、次にステップ350はCheckStopPending
ルーチンを呼出す。ステップ348或いは350の後に
はステップ330が続く。ステップ340でレコードが
返却されると判断されると、ステップ352はRCBリ
ストから関連するRCBを除去し、ステップ354で全
てのレコードが空状態に戻されたかを判断する。そうで
ある場合、ステップ356でバッファを空と記し、次に
ステップ344がステップ354或いは356に続く。
【0054】GetFull ルーチン(図14)では、ステッ
プ358で更に獲得するバッファが存在するかを判断す
る。存在しない場合、360で復帰する。存在する場
合、ステップ362でフルのポインタがフルのバッファ
を指示するかを確認する。否定の場合、使用可能なバッ
ファは存在せず、ステップ370でターゲット待機中フ
ラグをセットし、360を介して復帰する。362が肯
定の場合、ステップ364でストリームのタイプがノー
マル(統一型)か、或いはインタリーブドかを判断す
る。統一型の場合、ステップ366でバッファの属性を
獲得し、ステップ368で最終バッファの時にストリー
ムの終わり状態(EOS)をセットし、次に360を介
して復帰する。インタリーブド或いは分割ストリームに
対しては、ステップ372でバッファ内のフルのレコー
ドを探索する。374のチェックにより発見される場
合、ステップ376でレコードの属性を獲得し、ステッ
プ378でバッファ内の最終レコードをチェックし、そ
の後360を介して復帰する。
【0055】図15を参照すると、CheckStopPendingル
ーチンはステップ380で全てのバッファが返却された
かを確認する。そうでない場合、ステップ384で復帰
する。返却された場合は、ステップ386でSMH.Report
Eventルーチンを呼出し、"ストリームの停止"を報告
し、384で復帰する。
【0056】図16はCHECK.PREROLL ルーチンのオペレ
ーションを示し、ステップ388はストリームがプレロ
ール或いはプライムされたか、且つsyncグループに
含まれないかを判断する。否定の場合、ステップ390
でストリームがマスタであり、全てのスレーブがプレロ
ールされたかをチェックする。否定の場合、392を介
して復帰する。ステップ388及び390の結果が肯定
の場合は、ステップ394でSMH.ReportEvent ルーチン
を呼出し、"ストリーム・プレロール"を報告し、392
を介して復帰する。
【0057】図17はリング0及びリング3において使
用可能な呼出であるSMH.ReportEvent ルーチンを示す。
ステップ396はイベント・キューがオーバーフローし
たかをチェックする。オーバーフローした場合、ステッ
プ397でエラー事象“イベント・キュー・オーバーフ
ロー”を報告し、ステップ398に移行する。また、イ
ベント・キューのオーバーフローが生じていない場合
は、ステップ398でその事象を特定の処理に対するイ
ベント・キューに加え、ステップ400でリング3のイ
ベント・スレッドをブロック解除し、ステップ402で
復帰する。
【0058】図18はMapUserBuffer ルーチンのオペレ
ーションを示し、ステップ404ではバッファが既にロ
ックされているか、すなわち、バッファが既に自己のリ
スト内に存在するかを確認するために探索する。バッフ
ァがロックされていれば、ステップ406はステップ4
16に移行し、そのバッファに対応するBCBを新たな
BCBリストにコピーし、次に418で復帰する。バッ
ファがロックされていない場合は、ステップ408でバ
ッファをロックしようと試行する。ステップ410で
は、後者のステップが成功したかを判断する。成功した
場合、ステップ420でフィールド情報をそのBCBに
追加し、更にBCBをバッファ・キューの末尾に追加
し、その後418で復帰する。410が不成功の場合、
ステップ412で新たにロックされたバッファを割当
て、ステップ414でバッファ・データを新たなバッフ
ァにコピーし、その後ステップ420及び418を実行
する。
【0059】図19では、事象チェックがルーチンの目
的のポイントで実施され、ステップ422ではスレッド
をブロックする。スレッドがブロック解除されると、Ev
entRouter ルーチンがステップ424で呼出され、この
ルーチンは最初にステップ426で事象に対応するイベ
ント・キューをチェックし、次にステップ428で事象
が取り出される( dequeue)。ステップ430では事象
を取り扱うアプリケーション・イベント・ルーチンが呼
出される。次にステップ432で、更に処理する事象が
存在するかがチェックされ、存在する場合は、ステップ
428に戻る。全ての事象が処理されると、ステップ4
34でスレッドがブロックされる。
【0060】図20を参照すると、アプリケーション・
プログラムがストリームを生成すると、SpiCreateStrea
m API呼出が実施され、制御はsync/streamマネージャ1
14に移り、マネージャ114はステップ436でSHC.
CREATEコマンドを使用して、ソース・ストリーム・ハン
ドラを呼出す。次にステップ438で、SHC.CREATEを使
用して、ターゲット・ストリーム・ハンドラが生成され
る。ステップ440ではストリーミング・プロトコル制
御ブロック(図示せず)にリストされるストリーミング
・パラメータが獲得され、パラメータにはバッファ数及
びサイズ、データ・ストリーム・タイプ、バッファ当た
りの最大レコード数、一定のデータ・ストリームを維持
するために必要な最小バッファ数、ソース・ストリーム
・ハンドラを起動するために必要な空バッファ数、ター
ゲット・ストリーム・ハンドラを起動するために必要な
フル・バッファ数などが含まれる。次にステップ442
で、ソース・ストリーム・ハンドラにストリーム・パラ
メータを通知し、ステップ444で、ターゲット・スト
リーム・ハンドラにストリーム・パラメータを通知す
る。ステップ446ではストリームをセットアップし、
ストリーム・バッファを割当てる。その後、ステップ4
48でアプリケーションに復帰する。
【0061】図21を参照すると、アプリケーション・
プログラムがストリーミング開始呼出を発行すると、マ
ネージャ114はSpiStartStream API呼出を受信し、ス
テップ450がSpiStartStreamルーチンを実行し、これ
は最初にステップ452でストリームが休止状態かをチ
ェックする。休止状態でない場合、ステップ454でス
トリームがプレロールされているかを判断する。されて
いない場合、ステップ456で、SHC.START コマンドに
よりソース・ストリーム・ハンドラを呼出し、ソース・
スレッドをブロック解除する。次にステップ458で、
ストリームがsyncグループにおけるスレーブ・スト
リームかをチェックする。そうでない場合、ステップ4
60でアプリケーション・プログラムに復帰する。そう
である場合は、ステップ462でステップ452に分岐
し、各スレーブ・ストリームに対応する処理を繰り返
す。ステップ452が肯定の場合、ステップ464でSH
C.START コマンドにより、ソース・ストリーム・ハンド
ラを呼出してスレッドを解除し、次にステップ466
で、ターゲット・ストリーム・ハンドラを呼出し、ブロ
ック解除する。ステップ466はまた、ステップ454
の肯定結果にも続く。次に、ステップ458がステップ
466に続いて実施される。
【0062】図22はイベント・データ構造を表す。各
処理に対し、イベント・キューを指示する処理制御ブロ
ックPCBが生成される。図示のように2つのPCBす
なわちPCB1及びPCB2が存在し、それぞれ処理#
1及び#2に対応してセットアップされる。各PCBは
プロセスID、イベント・スレッドID、関連するイベ
ント・キューの先頭を指示するポインタ472を含む。
イベント・キューはヘッダ474を含み、各ヘッダはフ
ラグ及びユーザ・イベント制御ブロックEVCB478
を指示するポインタを含む。こうしたブロックは拡大し
て示されるように、イベント・タイプ、イベント・フラ
グ、ストリーム・ハンドラID、そのステータス、及び
ユーザ・パラメータを含む。イベント・データ構造内の
情報はイベント・ルータ・ルーチン(図19)により使
用される。
【0063】図23は SpiEnableルーチン480のオペ
レーションを表し、ステップ482では呼出すストリー
ム・ハンドラを決定し、ステップ484でステップ48
2で識別されたソース或いはターゲット・ハンドラを呼
出す。ステップ484の後にはスキップ486が続く。
【0064】図24はDLLの初期化時に生成されるア
プリケーションからの最初のSpiAPI呼出により実
行される内容を表す。ステップ488でEventRouterル
ーチンを呼出すことによりイベント・スレッドを生成す
る。ステップ490でイベント・スレッドの優先度をセ
ットし(リング3または0)、ステップ492でsync/s
treamマネージャを呼出し、ステップ494で復帰す
る。
【0065】図25は時間キュー (cue)・ポイント事
象と称される事象の例を示し、ストリーム・ハンドラ特
にターゲット・ストリーム・ハンドラ内に配置される。
ステップ496は現行の時間を決定する。次にステップ
498は、こうした時間において発生する事象に対応す
るイベント・キュー或いはリストを探索する。ステップ
500は時間の一致をチェックする。一致が存在しない
場合、ステップ504で復帰する。各一致に対し、ステ
ップ502で SMH.REPORTEVENTの呼出によりその事象を
報告する。
【0066】以下本願発明の内容を要約して述べる。
【0067】本発明はいくつかの独自の特徴を有し、こ
れらは新規なものであり、従来、アプリケーション或い
はオペレーティング・システム・ソフトウェアにおける
マルチメディア・データ伝送には組み込まれていなかっ
た。本発明の独自の特徴としては次の点が含まれる。す
なわち、アプリケーション・バッファリング・オプショ
ンによる中央バッファ管理;2レベルのデータ・ストリ
ーム・ハンドラのサポート;インタリーブド・データ・
ストリームのサポート;及び、データ・ストリーム事象
の検出及び通知である。これらの独自の特徴は、存在す
る物理デバイス・ドライバを超越して完全にデバイスに
独立な形式により実施される。この解決においては、更
に、データ・タイプはマルチメディア・システム拡張に
おけるモジュールに依存しない。
【0068】本発明の一般化したデータ・ストリーミン
グ機構はデバイス独立型のマルチメディア・データ伝送
を提供し、IBMのバージョン2.0のオペレーティン
グ・システム/2(OS/2)に対するマルチメディア
拡張として設計される。この機構は実時間という条件を
具備しつつ、記憶及び/或いは検索のためのデータの連
続的な転送を支援する。例えば、大量のデジタル化オー
ディオ・データ・ファイルはハード・ファイルから読出
され、データを連続的にアナログ増幅回路を有するデジ
タル−アナログ変換器(DAC)装置に転送することに
より演奏されねばならない。
【0069】データ・ストリーミングの実施例の次の4
つの主な特徴は、本発明の中心を成すものである。ま
た、これらはマルチメディア・コンピュータ・システム
における重要な貢献を代表するものであり、前述のセク
ションで述べられた全ての問題を解決するものである。
【0070】アプリケーション・バッファリング・オプ
ションによる中央バッファ管理
【0071】データ・ストリーム・リソース管理は中央
バッファ・プールに対する/からのバッファ割当を制御
し、複数のストリーム・ハンドラの間でバッファを共用
し、また動的なバッファのロック/ロック解除を制御す
る。更にデータ・ストリームは、アプリケーションによ
り割当てられ管理されるバッファを使用し、特にこれら
はアプリケーションが、ストリームを介して転送される
データの実時間生成を制御している場合に使用される。
【0072】一連のバッファ管理ルーチンは、データ・
ストリームが生成される時に、割当てられたバッファ・
プールからバッファを獲得しまた返却する機能を提供す
る。これらのバッファ用のメモリは割当てられ、この時
にロック・ダウンされる。バッファのロック・ダウン
は、データのストリーミング中に、システムがバッファ
を含むメモリをスワップ・アウトしないことを保証する
ために必要である。
【0073】処理されるデータが連続的なストリームと
して処理されることを保証するために、ストリームに関
連するストリーム・プロトコル制御ブロックがセットア
ップされ、これはバッファを割当てるために使用される
情報(すなわちバッファ数、バッファ・サイズ、及びス
トリーム・ハンドラを起動する時を示す値)を含む。ス
トリームされるデータのタイプによって、バッファの量
及びサイズを最適に設定しなければならないためこの情
報は重要である。なぜなら、データの連続的なストリー
ミングの継続、及びシステム・リソースが過度に(すな
わち実際に必要なメモリ量以上にメモリを割当てる)使
用されないことを保証する必要があるためである。メモ
リの割当と共に、ストリーム・ハンドラを起動するため
に使用される値は、ソース・ストリーム・ハンドラによ
り十分なバッファが充填され、その結果ターゲット・ス
トリーム・ハンドラが起動可能であり、かつ、実時間デ
ータ・ストリーミングを発生するために十分なデータが
バッファされていること、を保証する。
【0074】中央バッファ管理ルーチンは、ソース・ス
トリーム・ハンドラがバッファ・プールから空バッファ
を獲得し、入力装置からのデータ(例えばハード・ディ
スク上のファイルからのデータ)を充填し、それによっ
てフルになったバッファをバッファ・プールに返却する
ことを許可する。ターゲット・ストリーム・ハンドラは
バッファ・プールからフルになったバッファを獲得し、
このバッファを出力装置(例えばスピーカにより演奏さ
れるオーディオ装置へデータを転送する)に送信し、そ
の結果空になったバッファをバッファ・プールに返却す
る。
【0075】バッファ管理ルーチンの独自の特徴は、バ
ッファ内でレコードを扱う機能である。この機能により
インタリーブド・データは最小のデータ転送により処理
される。データは一度だけバッファに転送され、続くア
クセスは個々のデータ(すなわちオーディオ及びビデオ
・データなど)を含むバッファ内のレコードを介して行
われる。
【0076】バッファ管理ルーチンの他の独自の特徴
は、ソース・ストリーム・ハンドラがその固有のバッフ
ァをバッファ・プールに提供することを可能とし、その
後、このバッファは要求により、ターゲット・ストリー
ム・ハンドラに提供される。バッファが提供されると、
これらはその時点でメモリにロック・ダウンされ、これ
によりスワップ・アウトされることはなくなり、また、
データ・ストリームの期間中に、全システム・メモリ・
リソースを消費することはない。
【0077】次に典型的なストリーム・ハンドラがファ
イルからデータを読出し、ストリームをオーディオ出力
装置に転送するためのシナリオを示す。
【0078】1.アプリケーションがデータ・ストリー
ムを生成する。バッファが割当てられ、この時ロック・
ダウンされる。 2.アプリケーションがデータ・ストリーミングを開始
する。 3.ソース・ストリーム・ハンドラが −空バッファを獲得する。 −入力装置からバッファを充填する。 −フルのバッファを返却する。 −データの終わりに遭遇するまで、上記3ステップをル
ープする。 4.ターゲット・ストリーム・ハンドラが −フルのバッファを獲得する。 −バッファを出力装置に排出する。 −空バッファを返却する。 −データの終わりに遭遇するまで、上記3ステップをル
ープする。
【0079】こうした一連のバッファ管理ルーチンは、
ソース・ストリーム・ハンドラからターゲット・ストリ
ーム・ハンドラへの連続的なデータ・フローの発生を保
証する機能を提供する。
【0080】2レベルのデータ・ストリーム・ハンドラ
の支持
【0081】異なる保護レベルのデータ・ストリーム・
ハンドラに対し、同一のシステム・サービスを提供し、
システム・ハンドラがOS/2物理デバイス・ドライバ
(保護リング0)或いはOS/2動的リンク・ライブラ
リ(保護リング3)として開発されることを可能とす
る。
【0082】OS/2アーキテクチャは80286を基
本とするインテル・ファミリのプロセッサを支持し、こ
れには80386DX、80386SX、及び8048
6などが含まれる。これらのプロセッサはリング0から
3までの一連の特権レベル或いはリングの提供を基本と
する保護機構を共有する。各レベルにおいて、異なるオ
ペレーションが、システムの保全性に影響を与える相対
的リスクに準じて許可される。特権レベル0或いは"リ
ング0"では、全てのオペレーションは許可される。こ
のレベルは典型的にはシステム・コードの実行用に確保
される。アプリケーションはリング3で実行され、特権
命令の実行の試行はトラップを生成し、これはリング0
のオペレーティング・システムにより扱われ、典型的に
はアプリケーションの終了に帰結する。
【0083】リング0のソフトウェアの開発は、リング
3のソフトウェアの開発に比較して困難であり、またリ
スクを伴う。これはリング0で活動状態のシステム保護
機構の相対的な欠如による。リング0のコードのモジュ
ール開発、テスト、及びそこからエラーを除去するため
には、カーネル・デバッガを含む特殊なツールが必要と
なる。その結果、リング0のコードの特殊な性質を必要
としない機能、例えばハードウェア割込みのコンテキス
トにおいて実行される機能などは、典型的にはリング3
で実行されるように作成される。リング3におけるデバ
ッグはより簡単であり、リング3のコードにより生成さ
れるルーチン・エラーは、リング3で実行可能な全ての
コードに対して提供される保護機能により、一般には他
の処理に影響を及ぼすことはない。
【0084】通常、開発者は、リング0の特権の持つ特
殊な性質により目的の機能が提供される時以外は、全て
のコードをリング3で実行可能なように開発することを
好む。しかしながら、OS/2のリング0のモジュール
の開発においては、使用可能なシステム・サービスの数
及び柔軟性は非常に制限されている。リング0の実行に
対応してロード可能なモジュールのタイプは、唯一、物
理デバイス・ドライバ(PDD)である。PDDにとっ
て唯一使用可能なシステム・サービスは、OS/2カー
ネルにより提供されるデバイス・ヘルプ(DevHl
p)機能である。これらの同一のDevHlpインタフ
ェースはリング3のモジュールでは使用できず、全体的
に異なるセットのシステム・サービス・インタフェース
を使用してプログラムされねばならない。
【0085】ここでオペレーティング・システムの拡張
が導入される時に、常に問題が生ずる。新たなサービス
がリング3に限り提供される場合、広範囲に及ぶデバイ
ス制御機能が妨げられる。なぜなら新たなサービスを呼
出すモジュールについても、特権レベル0命令を実行す
ることはできなかったり、或いはハードウェア割込みコ
ンテキストにおいて実行できないからである。新たなサ
ービスがリング0に限り提供される場合、全ての開発者
は、彼らが特権レベル0の命令をアクセスする必要があ
る無しに関わらず、リング0のモジュールを作成する困
難を被ることになる。
【0086】好適な実施例としては、データ・ストリー
ム制御サービスを提供するOS/2の拡張である。これ
らのサービスはOS/2のDLL及びPDDの対により
構成されるSync/Streamマネージャにより提供される。
データ・ストリームはSync/Stream マネージャにより提
供されるサービスを呼び出す1つ以上のストリーム・ハ
ンドラにより制御される。
【0087】ストリーム・ハンドラの開発者に対して最
大の柔軟性を提供し、リング0のコードの急速な拡張を
阻止するために、Sync/Stream マネージャにより同一の
サービスがリング0及びリング3の両方において提供さ
れる。これはすなわち、リング0の特権を厳格に要求す
るこれらのストリーム・ハンドラだけが、OS/2のP
DDとして作成され、他の全てはリング3で実行される
OS/2のDLLとして作成されることを意味する。両
方の特権レベルにおいて同一のインタフェースが使用可
能なため、ストリーム・ハンドラの開発者はデータ・ス
トリームを制御するために、1つのセットのインタフェ
ースだけを使用して、コードを作成できる。
【0088】Sync/Stream マネージャは重複するサービ
ス・ルーチンを生成することなしに、リング0及びリン
グ3の両方のモジュールに対し、同一のサービスを提供
する。各機能に対して2つの入力ポイントが提供され、
一方はリング3(Sync/Stream マネージャDLL対応)
であり、他方はリング0(Sync/StreamマネージャPD
D対応)である。これらの入力ポイントの各々は共通の
サブルーチンにベクトル指向される。共通のコードが、
呼出される特定の機能に最適となるように、リング0或
いはリング3で実行される。
【0089】インタリーブド・データ・ストリームの支
【0090】この機構により、単一のデータ・ストリー
ム・ソースは、データを複数のターゲットに転送するこ
とが可能となる。これは分割ストリームと称される。例
えば、ある装置はオーディオ、イメージ、及びテキスト
のデータ・タイプを、単一のフォーマットされたデータ
・トラックにインタリーブする。分割ストリーム・ハン
ドラは、単一のインタリーブド・データ・バッファから
各データ・タイプを抽出し、各データ・タイプを独立に
転送し、各ストリームを適切なターゲット・デバイスに
引き渡すために使用される。例えば、CD-ROM XA はウェ
ーブオーディオ、ビデオ・データ及びテキスト・データ
を同一のデータ・バッファ内にインタリーブできる。分
割ストリーム・ハンドラは、データをCD-ROM XA 装置用
の複数のストリームに分割するために使用される。分割
ストリーム・ハンドラにとって、この結合されたデータ
を1つのバッファに読出し、次にデータをコピーするこ
となく、ビデオ・データをビデオ・ストリームに挿入
し、またウェーブオーディオ・データをウェーブオーデ
ィオ・ストリームに挿入することが、より効率的であ
る。ウェーブオーディオ・データ・ストリームは次にウ
ェーブオーディオ・ストリーム・ハンドラにより、また
ビデオ・ストリームはビデオ・ストリーム・ハンドラに
より消費される。ウェーブオーディオ・ストリーム・ハ
ンドラはデータ・ストリームのオーディオ部分だけを認
識し、またビデオ・ストリーム・ハンドラはストリーム
のビデオ部分だけを認識する。
【0091】データ・ストリームは複数の分割ストリー
ムに分割される。分割の数はシステムのリソースによっ
てのみ制限される。別々に分割されたストリームの各々
は分割ストリームである。異なるデータを分析し決定す
る作業は、ソース・ストリーム・ハンドラの役割であ
り、実際には空バッファをソース・デバイスからのデー
タにより充填することを行う。ソース・ストリーム・ハ
ンドラは、どのデータがどのストリームに所属するかを
決定し、次に、ポインタをバッファの個々の"レコード"
に返却しなければならない。各レコードは、ある"分割"
ストリームに特定なデータにより充填されるバッファの
一部に相当する。これらのレコードはSync/Stream マネ
ージャに返却され、どのストリームに所属すべきかを示
す。Sync/Stream マネージャは、次に、バッファを共用
する分割ストリームの1つに対応して設けられたそれぞ
れのバッファ/レコード・キューに、これらのレコード
をキュー待機させる。
【0092】このタイプの分割ストリームは以下に示す
ようにセットアップされる。複数のストリームが生成さ
れなければならず、各々はSync/Stream マネージャに対
するSpiCreateStream API 呼出により実行される。これ
らのAPI呼出の第1は、通常のストリームの生成呼出
であり、hstreamBufパラメータはNULLにセットされる。
第1のストリームのバッファを共用する必要のある他の
続くSpiCreateStreamAPI呼出のそれぞれは、hstreamBuf
パラメータにおけるそのストリームの制御をパスしな
ければならない。これはSync/Stream マネージャにより
使用される機構であり、これらの分割ストリームによっ
て第1のストリームのバッファを共用するためのもので
ある。ソース・ストリーム・ハンドラはまた、SHC_CREA
TE呼出によりこれらのパラメータを受信し、この種のタ
イプのストリーミングを支持することが必要である。SP
CBにおける SPCBBUF_INTERLEAVEDフラグはソース・スト
リーム・ハンドラによりセットされ、分割ストリーミン
グを実行可能かどうかを示す。実行できない場合、SpiC
reateStream がそのバッファを使用する試みは拒否され
る。分割ストリーム機構は1つのソース及び複数のター
ゲットに対応して機能する。
【0093】データ・ストリーム事象の検出及び通知
【0094】ストリーム事象はデータ・ストリームにお
ける状態の特定の変更を識別する。データ・ストリーム
・ハンドラは特定の事象を検出し、その事象を無視する
か、或いはその事象が発生したことを通知する。この通
知は別のストリーム・ハンドラ或いはアプリケーション
・プログラムにより受信される。
【0095】アプリケーションはデータ・ストリーミン
グ・ルーチンに対し、(イネーブル/ディスイネーブル
事象を介し)どの事象が検出されるべきかを知らせるこ
とができる。これらの事象は典型的にはエラー検出の通
知、ストリーム・キュー時間事象、及びデータ・キュー
事象などである。また、ストリーム・ハンドラはデータ
・ストリームの実時間性を維持するために実行される特
定の活動を保証するデータ・ストリームの状態を通知さ
れる必要がある。このために、これらの事象はアプリケ
ーション或いはストリーム・ハンドラ・イベント・ルー
チンに適時(実時間で)送信されて、最小時間が経過す
る以前に適切な活動が実行される必要がある。この事象
の報告は、ストリーム・ハンドラがリング0或いはリン
グ3で実行されているという事実によって若干複雑にな
る。
【0096】事象に関するリング3のストリーム・ハン
ドラからリング3のストリーム・ハンドラ或いはアプリ
ケーションへの報告は、登録されたイベント・ルーチン
がスレッドによる事象報告のコンテキストにおいて呼出
されるという点で、直接的である。しかしながら、リン
グ0のストリーム・ハンドラがリング3のストリーム・
ハンドラ或いはアプリケーションに対して事象を報告す
る必要が生じた場合には、リング0の割込み時間中にス
トリーム・ハンドラが事象を検出した場合、この時間内
に直接リング3のイベント・ルーチンを呼出す方法が存
在しないという点で問題が生ずる。この問題を解決する
ために、最小のタスク切替えオーバーヘッドを有し、実
時間環境において事象を十分な速度で報告できるように
ディスパッチされる新たなタイム・クリティカル・スレ
ッドが生成された。この新たなスレッドは実行中は割込
み不可である。各アプリケーション処理に対し、この新
たなスレッドが生成され、報告される事象をモニタす
る。事象報告するための事象シーケンスは以下のようで
ある。
【0097】1.事象が割込み時間において、リング0
のストリーム・ハンドラにより検出される。 2.事象はイベント・キューに配置され、新たなタイム
・クリティカル・スレッドがブロック解除されて実行さ
れる。これはリング3のアプリケーションのコンテキス
トにおいて実行される。 3.タイム・クリティカル・スレッドはアプリケーショ
ンのコンテキストにおいて制御を獲得し、イベント・キ
ューから事象を取り出し、アプリケーション・イベント
・ルーチンを呼出す。
【0098】この事象シーケンスは最小時間により実行
され、それによりアプリケーションは活動を実時間で実
行でき、また見た目にもより優れたアプリケーションが
指向される。
【0099】当業者においては、本発明の精神及び範中
を逸脱することなく、構成及び詳細における多くの変更
が可能であることが理解されよう。
【0100】
【発明の効果】以上説明したように、本発明によれば、
マルチタスキング・オペレーティング・システムの制御
の下で、実時間において連続的に大量のデータを伝送す
ることを可能とするマルチメディア・システムが提供で
きる。
【図面の簡単な説明】
【図1】本発明を実施するデータ処理システムのブロッ
ク図である。
【図2】図1のシステムにおいて実施されるsync/strea
mサブシステム・アーキテクチャのブロック図である。
【図3】データ・ストリーミングの一般化モデルを表す
ブロック図である。
【図4】ソース・ストリーム・ハンドラ・オペレーショ
ンの流れ図である。
【図5】ターゲット・ストリーム・ハンドラ・オペレー
ションの流れ図である。
【図6】ターゲット・ストリーム・ハンドリング・オペ
レーションの流れ図である。
【図7】統一及び分割データ・バッファリングを表す図
である。
【図8】バッファリング・データ構造を示す図である。
【図9】sync/stream バッファ管理オペレーションをイ
ンターロックする流れ図である。
【図10】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図11】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図12】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図13】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図14】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図15】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図16】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図17】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図18】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図19】sync/stream バッファ管理オペレーションを
インターロックする流れ図である。
【図20】sync/stream マネージャ・ストリーム生成オ
ペレーションの流れ図である。
【図21】sync/stream マネージャ・ストリーム開始オ
ペレーションの流れ図である。
【図22】事象データ構造を示す図である。
【図23】事象許可オペレーションの流れ図である。
【図24】オペレーションがアプリケーション・プログ
ラムからsync/streamマネージャに移行する様子を示す
流れ図である。
【図25】事象検出オペレーションの例を示す流れ図で
ある。
【符号の説明】
22・・・SCSIバス 24・・・SCSIハード・ドライブ(HD) 37・・・制御バス 39・・・データ・バス 41・・・データ・バッファ 48・・・ビデオ信号プロセッサ(VSP) 49・・・デジタル信号プロセッサ(DSP) 60・・・ビデオRAM(VRAM) 62・・・マルチプレクサ(MUX) 66・・・デジタル−アナログ変換器(DAC) 88・・・アナログ・インタフェース制御装置(AI
C) 90・・・オーディオ制御装置 94・・・アダプタ・カード 96・・・マルチメディア装置(MMD) 98・・・オペレーティング・システム 100・・・アプリケーション・プログラム 102・・・マルチメディア・アプリケーション・プロ
グラム(MMAP) 106・・・メディア・デバイス・マネージャ(MD
M) 110・・・MIDIメディア・ドライバ 116・・・動的リンク・ライブラリ(DLL) 133・・・ストリーム・マネージャ・ヘルパ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル・ジェイ・コバル アメリカ合衆国33496、フロリダ州ボ カ・ラトン、アファームド・レーン 9080 (72)発明者 ウイリアム・ダブリュ・ロートン アメリカ合衆国33433、フロリダ州ボ カ・ラトン、バターフィールド・レーン 8290 (72)発明者 マーティン・ジェイ・ポーラット、ジュ ニア アメリカ合衆国33444、フロリダ州デル レイ・ビーチ、ゼダー・アベニュー 2409 (72)発明者 ジョン・ジー・タイラー アメリカ合衆国33437、フロリダ州ボイ ントン・ビーチ、ランチパー・ストリー ト 10686 (72)発明者 スコット・エル・ウインタース アメリカ合衆国33324、フロリダ州プラ ンテーション、ノースウエスト・シック スス・ストリート 10309 (72)発明者 ゲリー・ジー・オールラン アメリカ合衆国33431、フロリダ州ボ カ・ラトン、、オーチャード・リジ・レ ーン 117 (56)参考文献 特開 昭63−186336(JP,A) 実開 平2−145449(JP,U)

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】プロセッサと、 複数のバッファを有し、少なくとも1つのマルチメディ
    ア・アプリケーション・プログラム及びマルチタスキン
    グ・オペレーティング・システムを記憶するメモリと、 メディア・データを供給するソース・デバイスと、 前記メディア・データを受け取るターゲット・デバイス
    と、 前記オペレーティング・システムの下に動作し、前記ソ
    ース・デバイスから前記ターゲット・デバイスへデータ
    をストリーム転送するデータ・ストリーミング手段とを
    備え、 前記データ・ストリーミング手段が、 前記アプリケーション・プログラム中のストリーム生成
    命令の実行に応答して、前記ソース・デバイスから前記
    バッファへデータをストリーム転送するためのソース・
    スレッドを生成し、前記アプリケーション・プログラム
    中の開始命令に応答して、前記ソース・スレッドを実行
    することにより前記ソース・デバイスから前記バッファ
    へデータを読み込むソース・ストリーム・ハンドラと、 前記ストリーム生成命令の実行に応答して、前記バッフ
    ァから前記ターゲット・デバイスへデータをストリーム
    転送するためのターゲット・スレッドを生成し、前記開
    始命令に応答して前記ターゲット・スレッドを実行する
    ことにより前記バッファから前記ターゲット・デバイス
    へデータを読み出すターゲット・ストリーム・ハンドラ
    と、 前記ソース・デバイスからのデータの終わりに達するま
    で前記ソース・スレッド及び前記ターゲット・スレッド
    を交互に実行させることによって前記ストリーム転送を
    実時間で連続的に行うためのストリーム・マネージャ
    を含み、 前記ソース・スレッド及び前記ターゲット・スレッドは
    前記オペレーティング・システムの下で選択的に実行さ
    れるディスパッチ可能な実行単位であることを特徴とす
    る、 マルチメディア・データ処理システム。
  2. 【請求項2】前記プロセッサはオペレーションの異なる
    優先レベルを有し、各前記ストリーム・ハンドラは、あ
    る優先レベルにおいて実行されるダイナミック・リンク
    ・ライブラリ(DLL)・ストリーム・ハンドラと、前
    記ある優先レベルよりも高い優先レベルにおいて実行さ
    れる物理デバイス・ドライバ(PDD)・ストリーム・
    ハンドラを含むこと、 を特徴とする請求項1記載のマルチメディア・データ処
    理システム。
  3. 【請求項3】前記ソース・デバイスからの前記データは
    順次的にインタリーブされた複数のレコードに含まれ、
    前記ソース・ハンドラは各バッファを前記レコードによ
    り充填すること、 を特徴とする請求項1又は2記載のマルチメディア・デ
    ータ処理システム。
JP4325628A 1991-12-31 1992-12-04 マルチメディア・デ―タ処理システム Expired - Lifetime JP2521016B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US81651791A 1991-12-31 1991-12-31
US816517 1991-12-31

Publications (2)

Publication Number Publication Date
JPH05265781A JPH05265781A (ja) 1993-10-15
JP2521016B2 true JP2521016B2 (ja) 1996-07-31

Family

ID=25220858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4325628A Expired - Lifetime JP2521016B2 (ja) 1991-12-31 1992-12-04 マルチメディア・デ―タ処理システム

Country Status (4)

Country Link
US (1) US5487167A (ja)
EP (1) EP0550196A2 (ja)
JP (1) JP2521016B2 (ja)
CA (1) CA2084575C (ja)

Families Citing this family (274)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355450A (en) * 1992-04-10 1994-10-11 Avid Technology, Inc. Media composer with adjustable source material compression
US5530859A (en) * 1993-05-10 1996-06-25 Taligent, Inc. System for synchronizing a midi presentation with presentations generated by other multimedia streams by means of clock objects
JP2781345B2 (ja) * 1993-09-20 1998-07-30 松下電器産業株式会社 情報再生装置
CA2138301C (en) * 1994-01-21 1998-12-15 Hal Hjalmar Ottesen Apparatus and method for providing multimedia data
US5615401A (en) * 1994-03-30 1997-03-25 Sigma Designs, Inc. Video and audio data presentation interface
US5613161A (en) * 1994-05-06 1997-03-18 Sun Microsystems, Inc. Method and apparatus for preemptable multiplexing of connections to input/out devices
US5581706A (en) * 1994-06-30 1996-12-03 Rca Thomson Licensing Corporation Method forming an audio/video interactive data signal
US6343263B1 (en) * 1994-08-02 2002-01-29 Apple Computer, Inc. Real-time signal processing system for serially transmitted data
US5603016A (en) * 1994-08-03 1997-02-11 Intel Corporation Method for synchronizing playback of an audio track to a video track
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US5761417A (en) * 1994-09-08 1998-06-02 International Business Machines Corporation Video data streamer having scheduler for scheduling read request for individual data buffers associated with output ports of communication node to one storage node
US6126332A (en) * 1994-09-12 2000-10-03 Packard Bell Nec Apparatus and method for automatically disconnecting address and data buses in a multimedia system when docking with a portable personal computer
US8661477B2 (en) * 1994-10-12 2014-02-25 Touchtunes Music Corporation System for distributing and selecting audio and video information and method implemented by said system
US7424731B1 (en) * 1994-10-12 2008-09-09 Touchtunes Music Corporation Home digital audiovisual information recording and playback system
US7188352B2 (en) * 1995-07-11 2007-03-06 Touchtunes Music Corporation Intelligent digital audiovisual playback system
EP0786121B1 (fr) 1994-10-12 2000-01-12 Touchtunes Music Corporation Systeme de reproduction audio-visuelle numerique intelligent
US5619733A (en) * 1994-11-10 1997-04-08 International Business Machines Corporation Method and apparatus for synchronizing streaming and non-streaming multimedia devices by controlling the play speed of the non-streaming device in response to a synchronization signal
JPH08172365A (ja) * 1994-12-16 1996-07-02 Matsushita Electric Ind Co Ltd ディジタル音声データ位相変換装置
US5748956A (en) * 1995-01-13 1998-05-05 U.S. West Technologies, Inc. Method and system for managing multimedia assets for proper deployment on interactive networks
US5664164A (en) * 1995-02-24 1997-09-02 Apple Computer, Inc. Synchronization of one or more data streams
US5854898A (en) 1995-02-24 1998-12-29 Apple Computer, Inc. System for automatically adding additional data stream to existing media connection between two end points upon exchange of notifying and confirmation messages therebetween
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US5909595A (en) * 1995-05-15 1999-06-01 Nvidia Corporation Method of controlling I/O routing by setting connecting context for utilizing I/O processing elements within a computer system to produce multimedia effects
US5623696A (en) * 1995-05-30 1997-04-22 International Business Machines Corporation System for formatting a request into a packet which can be read by plurality of operating systems for providing a driver for a storage device
US5748983A (en) * 1995-06-07 1998-05-05 Advanced Micro Devices, Inc. Computer system having a dedicated multimedia engine and multimedia memory having arbitration logic which grants main memory access to either the CPU or multimedia engine
US5692211A (en) * 1995-09-11 1997-11-25 Advanced Micro Devices, Inc. Computer system and method having a dedicated multimedia engine and including separate command and data paths
US5784592A (en) * 1995-09-11 1998-07-21 Advanced Micro Devices, Inc. Computer system which includes a local expansion bus and a dedicated real-time bus for increased multimedia performance
US5905879A (en) * 1995-11-20 1999-05-18 Advanced Micro Devices, Inc. System and method for transferring periodic data streams on a multimedia bus
US5754801A (en) * 1995-11-20 1998-05-19 Advanced Micro Devices, Inc. Computer system having a multimedia bus and comprising a centralized I/O processor which performs intelligent data transfers
US6061756A (en) * 1995-11-20 2000-05-09 Advanced Micro Devices, Inc. Computer system which performs intelligent byte slicing/data packing on a multi-byte wide bus
US5754807A (en) * 1995-11-20 1998-05-19 Advanced Micro Devices, Inc. Computer system including a multimedia bus which utilizes a separate local expansion bus for addressing and control cycles
US5682484A (en) * 1995-11-20 1997-10-28 Advanced Micro Devices, Inc. System and method for transferring data streams simultaneously on multiple buses in a computer system
US6047350A (en) * 1995-11-20 2000-04-04 Advanced Micro Devices, Inc. Computer system which performs intelligent byte slicing on a multi-byte wide bus
US5748921A (en) * 1995-12-11 1998-05-05 Advanced Micro Devices, Inc. Computer system including a plurality of multimedia devices each having a high-speed memory data channel for accessing system memory
US5987527A (en) * 1995-12-21 1999-11-16 Intel Corporation Binding data sinks and sources across ring levels
US5933632A (en) * 1995-12-21 1999-08-03 Intel Corporation Ring transitions for data chunks
IL117133A (en) 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
JP2000504906A (ja) * 1996-02-14 2000-04-18 オリブル コーポレイション リミティド マルチメディアデータのプログレッシブ非同期伝送方法及びシステム
US6044225A (en) * 1996-03-13 2000-03-28 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
JP3867313B2 (ja) * 1996-03-29 2007-01-10 ソニー株式会社 Avデータ処理制御装置およびその方法
US5781737A (en) * 1996-04-30 1998-07-14 International Business Machines Corporation System for processing requests for notice of events
US5898892A (en) * 1996-05-17 1999-04-27 Advanced Micro Devices, Inc. Computer system with a data cache for providing real-time multimedia data to a multimedia engine
US6405255B1 (en) * 1996-07-01 2002-06-11 Sun Microsystems, Inc. Mixing and splitting multiple independent audio data streams in kernel space
US5828866A (en) * 1996-07-08 1998-10-27 Hewlett-Packard Company Real-time synchronization of concurrent views among a plurality of existing applications
US5896141A (en) * 1996-07-26 1999-04-20 Hewlett-Packard Company System and method for virtual device access in a computer system
US6721952B1 (en) 1996-08-06 2004-04-13 Roxio, Inc. Method and system for encoding movies, panoramas and large images for on-line interactive viewing and gazing
US5928330A (en) * 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5956729A (en) * 1996-09-06 1999-09-21 Motorola, Inc. Multimedia file, supporting multiple instances of media types, and method for forming same
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6317123B1 (en) * 1996-09-20 2001-11-13 Laboratory Technologies Corp. Progressively generating an output stream with realtime properties from a representation of the output stream which is not monotonic with regard to time
FR2753868A1 (fr) * 1996-09-25 1998-03-27 Technical Maintenance Corp Procede de selection d'un enregistrement sur un systeme numerique de reproduction audiovisuel et systeme pour mise en oeuvre du procede
US5928322A (en) * 1996-11-20 1999-07-27 Silicon Graphics, Inc. Low-latency real-time dispatching in general purpose multiprocessor systems
US5959621A (en) * 1996-12-06 1999-09-28 Microsoft Corporation System and method for displaying data items in a ticker display pane on a client computer
US5924110A (en) * 1996-12-06 1999-07-13 Ncr Corporation Multischeme memory management system for computer
US5913038A (en) * 1996-12-13 1999-06-15 Microsoft Corporation System and method for processing multimedia data streams using filter graphs
US6006241A (en) 1997-03-14 1999-12-21 Microsoft Corporation Production of a video stream with synchronized annotations over a computer network
US6330008B1 (en) * 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US6292834B1 (en) 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US5918002A (en) * 1997-03-14 1999-06-29 Microsoft Corporation Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network
US6173317B1 (en) 1997-03-14 2001-01-09 Microsoft Corporation Streaming and displaying a video stream with synchronized annotations over a computer network
US6151632A (en) * 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
US6728775B1 (en) 1997-03-17 2004-04-27 Microsoft Corporation Multiple multicasting of multimedia streams
US5946318A (en) * 1997-03-21 1999-08-31 International Business Machines Corporation Method and apparatus for processing and packetizing data from a data stream
US6449653B2 (en) 1997-03-25 2002-09-10 Microsoft Corporation Interleaved multiple multimedia stream for synchronized transmission over a computer network
US6412004B1 (en) 1997-03-27 2002-06-25 Microsoft Corporation Metaserver for a multimedia distribution network
US5925102A (en) * 1997-03-28 1999-07-20 International Business Machines Corporation Managing processor resources in a multisystem environment in order to provide smooth real-time data streams, while enabling other types of applications to be processed concurrently
US5948065A (en) * 1997-03-28 1999-09-07 International Business Machines Corporation System for managing processor resources in a multisystem environment in order to provide smooth real-time data streams while enabling other types of applications to be processed concurrently
US6654780B1 (en) * 1997-03-28 2003-11-25 International Business Machines Corporation System of managing processor resources in a non-dedicated computer system
US6282560B1 (en) * 1997-03-28 2001-08-28 International Business Machines Corporation Managing processor resources in a non-dedicated computer system
US6111567A (en) * 1997-04-03 2000-08-29 Microsoft Corporation Seamless multimedia branching
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
US6205492B1 (en) 1997-04-04 2001-03-20 Microsoft Corporation Method and computer program product for interconnecting software drivers in kernel mode
US6088716A (en) * 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US5968120A (en) * 1997-05-02 1999-10-19 Olivr Corporation Ltd. Method and system for providing on-line interactivity over a server-client network
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6289389B1 (en) * 1997-06-03 2001-09-11 Lextron Systems, Inc. Enhanced integrated data delivery system
US7058720B1 (en) 1997-06-30 2006-06-06 Microsoft Corporation Geographical client distribution methods, systems and computer program products
US6269403B1 (en) 1997-06-30 2001-07-31 Microsoft Corporation Browser and publisher for multimedia object storage, retrieval and transfer
US6604144B1 (en) 1997-06-30 2003-08-05 Microsoft Corporation Data format for multimedia object storage, retrieval and transfer
WO1999009467A2 (en) * 1997-08-20 1999-02-25 Koninklijke Philips Electronics N.V. A transient datastream-processing buffer memory organization with software management adapted for multilevel housekeeping
US6636733B1 (en) * 1997-09-19 2003-10-21 Thompson Trust Wireless messaging method
US6826407B1 (en) * 1999-03-29 2004-11-30 Richard J. Helferich System and method for integrating audio and visual messaging
US6253061B1 (en) * 1997-09-19 2001-06-26 Richard J. Helferich Systems and methods for delivering information to a transmitting and receiving device
US7003304B1 (en) * 1997-09-19 2006-02-21 Thompson Investment Group, Llc Paging transceivers and methods for selectively retrieving messages
FR2769165B1 (fr) 1997-09-26 2002-11-29 Technical Maintenance Corp Systeme sans fil a transmission numerique pour haut-parleurs
US6983138B1 (en) * 1997-12-12 2006-01-03 Richard J. Helferich User interface for message access
US6430652B1 (en) 1997-12-30 2002-08-06 Lsi Logic Corporation Method and apparatus for streaming data in a data processing system
US6708334B1 (en) * 1998-01-28 2004-03-16 Oak Technology, Inc. DVD navigation system with multiple threads
US6295608B1 (en) * 1998-02-17 2001-09-25 Microsoft Corporation Optimized allocation of data elements among cache lines
US6189069B1 (en) * 1998-02-17 2001-02-13 Microsoft Corporation Optimized logging of data elements to a data storage device
JPH11249949A (ja) * 1998-03-04 1999-09-17 Sharp Corp ファイル転送方法およびファイル転送装置ならびにファイル転送プログラムを記録したコンピュータで読取可能な記録媒体
FR2781582B1 (fr) * 1998-07-21 2001-01-12 Technical Maintenance Corp Systeme de telechargement d'objets ou de fichiers pour mise a jour de logiciels
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6574618B2 (en) 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
FR2781591B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Systeme de reproduction audiovisuelle
FR2781580B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Circuit de commande de son pour systeme de reproduction audiovisuelle numerique intelligent
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US8028318B2 (en) * 1999-07-21 2011-09-27 Touchtunes Music Corporation Remote control unit for activating and deactivating means for payment and for displaying payment status
US20010044850A1 (en) * 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
EP0981085A3 (en) * 1998-08-12 2005-01-19 Texas Instruments Incorporated Application controlled data flow between processing tasks
US6724772B1 (en) 1998-09-04 2004-04-20 Advanced Micro Devices, Inc. System-on-a-chip with variable bandwidth
US6560240B1 (en) 1998-09-04 2003-05-06 Advanced Micro Devices, Inc. System-on-a-chip with variable clock rate
US6314466B1 (en) * 1998-10-06 2001-11-06 Realnetworks, Inc. System and method for providing random access to a multimedia object over a network
US6952221B1 (en) 1998-12-18 2005-10-04 Thomson Licensing S.A. System and method for real time video production and distribution
US6909874B2 (en) * 2000-04-12 2005-06-21 Thomson Licensing Sa. Interactive tutorial method, system, and computer program product for real time media production
US7024677B1 (en) 1998-12-18 2006-04-04 Thomson Licensing System and method for real time video production and multicasting
US20030214605A1 (en) * 1998-12-18 2003-11-20 Snyder Robert J. Autokeying method, system, and computer program product
US9123380B2 (en) 1998-12-18 2015-09-01 Gvbb Holdings S.A.R.L. Systems, methods, and computer program products for automated real-time execution of live inserts of repurposed stored content distribution, and multiple aspect ratio automated simulcast production
US20040027368A1 (en) * 2002-05-09 2004-02-12 Parkervision, Inc. Time sheet for real time video production system and method
US6760916B2 (en) * 2000-01-14 2004-07-06 Parkervision, Inc. Method, system and computer program product for producing and distributing enhanced media downstreams
US7835920B2 (en) * 1998-12-18 2010-11-16 Thomson Licensing Director interface for production automation control
US20030001880A1 (en) * 2001-04-18 2003-01-02 Parkervision, Inc. Method, system, and computer program product for producing and distributing enhanced media
US11109114B2 (en) * 2001-04-18 2021-08-31 Grass Valley Canada Advertisement management method, system, and computer program product
US6452612B1 (en) * 1998-12-18 2002-09-17 Parkervision, Inc. Real time video production system and method
US8560951B1 (en) 1998-12-18 2013-10-15 Thomson Licensing System and method for real time video production and distribution
US8726330B2 (en) * 1999-02-22 2014-05-13 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US6341315B1 (en) * 1999-02-26 2002-01-22 Crossroads Systems, Inc. Streaming method and system for fiber channel network devices
KR100424231B1 (ko) * 1999-03-08 2004-03-25 파이쓰, 인크. 데이터 재생 장치, 데이터 재생 방법 및 정보 단말기
US6460108B1 (en) * 1999-03-31 2002-10-01 Intel Corporation Low cost data streaming mechanism
US7007096B1 (en) 1999-05-12 2006-02-28 Microsoft Corporation Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6748440B1 (en) 1999-05-12 2004-06-08 Microsoft Corporation Flow of streaming data through multiple processing modules
US6658477B1 (en) 1999-05-12 2003-12-02 Microsoft Corporation Improving the control of streaming data through multiple processing modules
DK1190302T3 (da) * 1999-05-12 2003-10-13 Microsoft Corp Opsplitning og blanding af strømmende datarammer
FR2796482B1 (fr) 1999-07-16 2002-09-06 Touchtunes Music Corp Systeme de gestion a distance d'au moins un dispositif de reproduction d'informations audiovisuelles
US6496826B1 (en) * 1999-10-12 2002-12-17 International Business Machines Corporation File list processing
US6449719B1 (en) * 1999-11-09 2002-09-10 Widevine Technologies, Inc. Process and streaming server for encrypting a data stream
US8055894B2 (en) * 1999-11-09 2011-11-08 Google Inc. Process and streaming server for encrypting a data stream with bandwidth based variation
US6594773B1 (en) 1999-11-12 2003-07-15 Microsoft Corporation Adaptive control of streaming data in a graph
US6983315B1 (en) 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
FR2805377B1 (fr) 2000-02-23 2003-09-12 Touchtunes Music Corp Procede de commande anticipee d'une selection, systeme numerique et juke-box permettant la mise en oeuvre du procede
FR2805072B1 (fr) 2000-02-16 2002-04-05 Touchtunes Music Corp Procede d'ajustement du volume sonore d'un enregistrement sonore numerique
FR2805060B1 (fr) 2000-02-16 2005-04-08 Touchtunes Music Corp Procede de reception de fichiers lors d'un telechargement
AUPQ732400A0 (en) * 2000-05-05 2000-06-01 Bullant Technology Pty Ltd Resource consumer structure
FR2808906B1 (fr) 2000-05-10 2005-02-11 Touchtunes Music Corp Dispositif et procede de gestion a distance d'un reseau de systemes de reproduction d'informations audiovisuelles
FR2811175B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Procede de distribution d'informations audiovisuelles et systeme de distribution d'informations audiovisuelles
FR2811114B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Dispositif et procede de communication entre un systeme de reproduction d'informations audiovisuelles et d'une machine electronique de divertissement
FR2814027B1 (fr) * 2000-09-14 2003-01-31 Cit Alcatel Procede de synchronisation d'un fichier multimedia
FR2814085B1 (fr) 2000-09-15 2005-02-11 Touchtunes Music Corp Procede de divertissement base sur les jeux concours a choix multiples
US7599753B2 (en) * 2000-09-23 2009-10-06 Microsoft Corporation Systems and methods for running priority-based application threads on a realtime component
US20020087717A1 (en) * 2000-09-26 2002-07-04 Itzik Artzi Network streaming of multi-application program code
US6757894B2 (en) 2000-09-26 2004-06-29 Appstream, Inc. Preprocessed applications suitable for network streaming applications and method for producing same
US7181206B2 (en) * 2001-10-11 2007-02-20 Lyndale Trading Company Ltd. Broadband communication platform and methods of network operation
US7391791B2 (en) * 2001-12-17 2008-06-24 Implicit Networks, Inc. Method and system for synchronization of content rendering
US7299292B2 (en) * 2002-03-29 2007-11-20 Widevine Technologies, Inc. Process and streaming server for encrypting a data stream to a virtual smart card client system
US7373414B2 (en) * 2002-08-29 2008-05-13 Amx Llc Multi-media system and method for simultaneously delivering multi-media data to multiple destinations
CN100405340C (zh) * 2002-08-30 2008-07-23 松下电器产业株式会社 流数据处理装置
US7822687B2 (en) 2002-09-16 2010-10-26 Francois Brillon Jukebox with customizable avatar
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US11029823B2 (en) 2002-09-16 2021-06-08 Touchtunes Music Corporation Jukebox with customizable avatar
US9646339B2 (en) * 2002-09-16 2017-05-09 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US8151304B2 (en) * 2002-09-16 2012-04-03 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US10373420B2 (en) 2002-09-16 2019-08-06 Touchtunes Music Corporation Digital downloading jukebox with enhanced communication features
US8103589B2 (en) 2002-09-16 2012-01-24 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US8332895B2 (en) 2002-09-16 2012-12-11 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US7007170B2 (en) * 2003-03-18 2006-02-28 Widevine Technologies, Inc. System, method, and apparatus for securely providing content viewable on a secure device
US7103603B2 (en) * 2003-03-28 2006-09-05 International Business Machines Corporation Method, apparatus, and system for improved duplicate record processing in a sort utility
US7735057B2 (en) 2003-05-16 2010-06-08 Symantec Corporation Method and apparatus for packaging and streaming installation software
US8081621B1 (en) 2003-07-22 2011-12-20 Google Inc. Speaker-buffer management for voice-over-internet-protocol (VoIP) triggered by microphone-buffer arrival
US20050100023A1 (en) * 2003-11-07 2005-05-12 Buckwalter Paul B. Isochronous audio network software interface
US7519274B2 (en) 2003-12-08 2009-04-14 Divx, Inc. File format for multiple track digital data
US8472792B2 (en) 2003-12-08 2013-06-25 Divx, Llc Multimedia distribution system
US20060200744A1 (en) * 2003-12-08 2006-09-07 Adrian Bourke Distributing and displaying still photos in a multimedia distribution system
FR2866729B1 (fr) * 2004-02-25 2006-08-11 Opencube Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste
WO2005093570A1 (fr) * 2004-02-25 2005-10-06 Opencube Technologies Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste
JP4285307B2 (ja) 2004-04-02 2009-06-24 株式会社日立製作所 データ処理装置およびその方法
US9609279B2 (en) * 2004-09-24 2017-03-28 Google Inc. Method and system for providing secure CODECS
US20060069662A1 (en) * 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US7865478B2 (en) * 2005-06-04 2011-01-04 International Business Machines Corporation Based on repeated experience, system for modification of expression and negating overload from media and optimizing referential efficiency
DE102005044728A1 (de) * 2005-09-19 2007-03-29 Silicon Software Gmbh Programmierung und Layoutdesign von Hardware
US20070067643A1 (en) * 2005-09-21 2007-03-22 Widevine Technologies, Inc. System and method for software tamper detection
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US8689016B2 (en) 2005-12-02 2014-04-01 Google Inc. Tamper prevention and detection for video provided over a network to a client
EP1999883A4 (en) 2006-03-14 2013-03-06 Divx Llc FEDERATED DIGITAL RIGHTS MANAGEMENT SYSTEM COMPRISING CONFIDENCE SYSTEMS
US20070229520A1 (en) * 2006-03-31 2007-10-04 Microsoft Corporation Buffered Paint Systems
US9135951B2 (en) * 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US20080111977A1 (en) * 2006-11-14 2008-05-15 Asml Holding N.V. Compensation techniques for fluid and magnetic bearings
US8120613B2 (en) * 2006-11-29 2012-02-21 Siemens Medical Solutions Usa, Inc. Method and apparatus for real-time digital image acquisition, storage, and retrieval
US8212805B1 (en) 2007-01-05 2012-07-03 Kenneth Banschick System and method for parametric display of modular aesthetic designs
US9171419B2 (en) 2007-01-17 2015-10-27 Touchtunes Music Corporation Coin operated entertainment system
US9330529B2 (en) * 2007-01-17 2016-05-03 Touchtunes Music Corporation Game terminal configured for interaction with jukebox device systems including same, and/or associated methods
US9953481B2 (en) * 2007-03-26 2018-04-24 Touchtunes Music Corporation Jukebox with associated video server
US20110019662A1 (en) 2007-06-28 2011-01-27 Rebelvox Llc Method for downloading and using a communication application through a web browser
US8825772B2 (en) * 2007-06-28 2014-09-02 Voxer Ip Llc System and method for operating a server for real-time communication of time-based media
US8688789B2 (en) * 2009-01-30 2014-04-01 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US20100198923A1 (en) 2009-01-30 2010-08-05 Rebelvox Llc Methods for using the addressing, protocols and the infrastructure of email to support near real-time communication
US11095583B2 (en) 2007-06-28 2021-08-17 Voxer Ip Llc Real-time messaging method and apparatus
US8533611B2 (en) * 2009-08-10 2013-09-10 Voxer Ip Llc Browser enabled communication device for conducting conversations in either a real-time mode, a time-shifted mode, and with the ability to seamlessly shift the conversation between the two modes
US8180029B2 (en) 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US9178916B2 (en) 2007-06-28 2015-11-03 Voxer Ip Llc Real-time messaging method and apparatus
US8645477B2 (en) * 2009-01-30 2014-02-04 Voxer Ip Llc Progressive messaging apparatus and method capable of supporting near real-time communication
US8243924B2 (en) * 2007-06-29 2012-08-14 Google Inc. Progressive download or streaming of digital media securely through a localized container and communication protocol proxy
US10290006B2 (en) 2008-08-15 2019-05-14 Touchtunes Music Corporation Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations
US8332887B2 (en) 2008-01-10 2012-12-11 Touchtunes Music Corporation System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server
US20090277226A1 (en) * 2007-10-16 2009-11-12 Santangelo Salvatore R Modular melter
US8099512B2 (en) * 2007-10-19 2012-01-17 Voxer Ip Llc Method and system for real-time synchronization across a distributed services communication network
US8090867B2 (en) * 2007-10-19 2012-01-03 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8001261B2 (en) * 2007-10-19 2011-08-16 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8559319B2 (en) * 2007-10-19 2013-10-15 Voxer Ip Llc Method and system for real-time synchronization across a distributed services communication network
US8145780B2 (en) 2007-10-19 2012-03-27 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8699383B2 (en) * 2007-10-19 2014-04-15 Voxer Ip Llc Method and apparatus for real-time synchronization of voice communications
US8699678B2 (en) * 2007-10-19 2014-04-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US20090103529A1 (en) * 2007-10-19 2009-04-23 Rebelvox, Llc Telecommunication and multimedia management method and apparatus
US7751362B2 (en) * 2007-10-19 2010-07-06 Rebelvox Llc Graceful degradation for voice communication services over wired and wireless networks
US8782274B2 (en) * 2007-10-19 2014-07-15 Voxer Ip Llc Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network
US8855276B2 (en) * 2007-10-19 2014-10-07 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8250181B2 (en) * 2007-10-19 2012-08-21 Voxer Ip Llc Method and apparatus for near real-time synchronization of voice communications
US8706907B2 (en) * 2007-10-19 2014-04-22 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8321581B2 (en) 2007-10-19 2012-11-27 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8391312B2 (en) * 2007-10-19 2013-03-05 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8380874B2 (en) * 2007-10-19 2013-02-19 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8682336B2 (en) 2007-10-19 2014-03-25 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US7751361B2 (en) * 2007-10-19 2010-07-06 Rebelvox Llc Graceful degradation for voice communication services over wired and wireless networks
US8111713B2 (en) * 2007-10-19 2012-02-07 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
JP4714202B2 (ja) * 2007-10-25 2011-06-29 日本電信電話株式会社 フィルタ処理装置、フィルタ処理方法およびフィルタ処理プログラム
CN101861583B (zh) 2007-11-16 2014-06-04 索尼克Ip股份有限公司 用于多媒体文件的分级及简化索引结构
US8868464B2 (en) 2008-02-07 2014-10-21 Google Inc. Preventing unauthorized modification or skipping of viewing of advertisements within content
US8321582B2 (en) * 2008-02-08 2012-11-27 Voxer Ip Llc Communication application for conducting conversations including multiple media types in either a real-time mode or a time-shifted mode
US8542804B2 (en) 2008-02-08 2013-09-24 Voxer Ip Llc Voice and text mail application for communication devices
US9054912B2 (en) 2008-02-08 2015-06-09 Voxer Ip Llc Communication application for conducting conversations including multiple media types in either a real-time mode or a time-shifted mode
US8401582B2 (en) 2008-04-11 2013-03-19 Voxer Ip Llc Time-shifting for push to talk voice communication systems
US8849435B2 (en) 2008-07-09 2014-09-30 Touchtunes Music Corporation Digital downloading jukebox with revenue-enhancing features
US20100023871A1 (en) * 2008-07-25 2010-01-28 Zumobi, Inc. Methods and Systems Providing an Interactive Social Ticker
US8325662B2 (en) * 2008-09-17 2012-12-04 Voxer Ip Llc Apparatus and method for enabling communication when network connectivity is reduced or lost during a conversation and for resuming the conversation when connectivity improves
CN102362269B (zh) * 2008-12-05 2016-08-17 社会传播公司 实时内核
US8270950B2 (en) * 2008-12-05 2012-09-18 Voxer Ip Llc Mobile communication device, method, and system for reducing exposure to radio frequency energy during transmissions by transmitting media in/out while the mobile communication device is safe distance away from user
CA2749170C (en) 2009-01-07 2016-06-21 Divx, Inc. Singular, collective and automated creation of a media guide for online content
US8849927B2 (en) * 2009-01-30 2014-09-30 Voxer Ip Llc Method for implementing real-time voice messaging on a server node
US9292166B2 (en) 2009-03-18 2016-03-22 Touchtunes Music Corporation Digital jukebox device with improved karaoke-related user interfaces, and associated methods
US10564804B2 (en) 2009-03-18 2020-02-18 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
CA2754990C (en) 2009-03-18 2015-07-14 Touchtunes Music Corporation Entertainment server and associated social networking services
US10719149B2 (en) 2009-03-18 2020-07-21 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8925034B1 (en) 2009-06-30 2014-12-30 Symantec Corporation Data protection requirements specification and migration
US8387047B1 (en) 2009-08-03 2013-02-26 Symantec Corporation Method of virtualizing file extensions in a computer system by determining an association between applications in virtual environment and a file extension
US8352937B2 (en) * 2009-08-03 2013-01-08 Symantec Corporation Streaming an application install package into a virtual environment
US8090744B1 (en) 2009-08-26 2012-01-03 Symantec Operating Corporation Method and apparatus for determining compatibility between a virtualized application and a base environment
US8473444B1 (en) 2009-08-28 2013-06-25 Symantec Corporation Management of actions in multiple virtual and non-virtual environments
US8438555B1 (en) 2009-08-31 2013-05-07 Symantec Corporation Method of using an encapsulated data signature for virtualization layer activation
US8458310B1 (en) 2009-09-14 2013-06-04 Symantec Corporation Low bandwidth streaming of application upgrades
CA2782825C (en) 2009-12-04 2016-04-26 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US8566297B1 (en) 2010-01-14 2013-10-22 Symantec Corporation Method to spoof data formats from image backups
CN105355221A (zh) 2010-01-26 2016-02-24 踏途音乐公司 具有改进的用户界面的数字点播设备和相关方法
US8290912B1 (en) 2010-01-29 2012-10-16 Symantec Corporation Endpoint virtualization aware backup
US9361130B2 (en) 2010-05-03 2016-06-07 Apple Inc. Systems, methods, and computer program products providing an integrated user interface for reading content
US8495625B1 (en) 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
US9247312B2 (en) 2011-01-05 2016-01-26 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8818171B2 (en) 2011-08-30 2014-08-26 Kourosh Soroushian Systems and methods for encoding alternative streams of video for playback on playback devices having predetermined display aspect ratios and network connection maximum data rates
WO2013033458A2 (en) 2011-08-30 2013-03-07 Divx, Llc Systems and methods for encoding and streaming video encoded using a plurality of maximum bitrate levels
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US8909922B2 (en) 2011-09-01 2014-12-09 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
JP6002770B2 (ja) 2011-09-18 2016-10-05 タッチチューンズ ミュージック コーポレーション カラオケおよび/またはプリクラ機能を備えたデジタルジュークボックス装置および関連手法
US8751800B1 (en) 2011-12-12 2014-06-10 Google Inc. DRM provider interoperability
US11151224B2 (en) 2012-01-09 2021-10-19 Touchtunes Music Corporation Systems and/or methods for monitoring audio inputs to jukebox devices
US10452715B2 (en) 2012-06-30 2019-10-22 Divx, Llc Systems and methods for compressing geotagged video
US9131023B2 (en) * 2012-08-09 2015-09-08 Allan VOSS Systems and methods for enhancing multimedia experience
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
US9880776B1 (en) 2013-02-22 2018-01-30 Veritas Technologies Llc Content-driven data protection method for multiple storage devices
US9906785B2 (en) 2013-03-15 2018-02-27 Sonic Ip, Inc. Systems, methods, and media for transcoding video data according to encoding parameters indicated by received metadata
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US9094737B2 (en) 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
US9921717B2 (en) 2013-11-07 2018-03-20 Touchtunes Music Corporation Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices
KR102303730B1 (ko) 2014-03-25 2021-09-17 터치튠즈 뮤직 코포레이션 향상된 사용자 인터페이스를 가지는 디지털 주크박스 장치 및 관련 방법.
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US9923985B2 (en) 2015-09-17 2018-03-20 International Business Machines Corporation Facilitating an efficient exchange of streaming data constructs between origin and target systems while making remote procedure calls
US10148989B2 (en) 2016-06-15 2018-12-04 Divx, Llc Systems and methods for encoding video content
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63186336A (ja) * 1987-01-28 1988-08-01 Nec Corp メツセ−ジ取出し切換え方式
US5170252A (en) * 1990-04-09 1992-12-08 Interactive Media Technologies, Inc. System and method for interconnecting and mixing multiple audio and video data streams associated with multiple media devices

Also Published As

Publication number Publication date
EP0550196A2 (en) 1993-07-07
US5487167A (en) 1996-01-23
CA2084575A1 (en) 1993-07-01
CA2084575C (en) 1996-12-03
EP0550196A3 (ja) 1994-01-19
JPH05265781A (ja) 1993-10-15

Similar Documents

Publication Publication Date Title
JP2521016B2 (ja) マルチメディア・デ―タ処理システム
US5339413A (en) Data stream protocol for multimedia data streaming data processing system
US5333299A (en) Synchronization techniques for multimedia data streams
US6052744A (en) System and method for transferring concurrent multi-media streams over a loosely coupled I/O bus
US7080386B2 (en) Architecture with digital signal processor plug-ins for general purpose processor media frameworks
US6179489B1 (en) Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US7140016B2 (en) Media accelerator quality of service
US6298370B1 (en) Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US7487511B2 (en) Method and apparatus for providing and integrating high-performance message queues in a interface environment
US5909559A (en) Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
JP4575528B2 (ja) 標準クロック・メカニズムを用いて、多重データ・ストリームの処理の同期と異なる処理速度のマッチングを行う方法
US7433746B2 (en) Extensible kernel-mode audio processing architecture
US8087020B2 (en) Method and system for performing real-time operation
US8171477B2 (en) Method and system for performing real-time operation
US7685599B2 (en) Method and system for performing real-time operation
KR19990082226A (ko) 버스 구조 위에서의 데이터 전달 및 버스 관리를 위한 응용 프로그래밍 인터페이스
US5630132A (en) Method and apparatus for facilitating real-time and asynchronous loading and temporally-overlapping of modular multimedia software tasks in a multimedia data processing system
US20040268354A1 (en) Method and system for performing real-time operation using processors
US20020170039A1 (en) System for operating system and platform independent digital stream handling and method thereof
EP1619581A1 (en) Method and computer program product for reducing inter-buffer data transfers between separate processing components
US20040267778A1 (en) Media foundation topology application programming interface
JP2003504753A (ja) アプリケーションライフサイクルに従ってアプリケーションを管理するための方法および装置
US7140015B1 (en) Microkernel for real time applications
US6104876A (en) PCI bus master retry fixup
JP2000315155A (ja) データ処理装置、データ処理方法及びプログラム提供媒体