JP2005056364A - デマルチプレクサのアプリケーションプログラムインターフェイス - Google Patents

デマルチプレクサのアプリケーションプログラムインターフェイス Download PDF

Info

Publication number
JP2005056364A
JP2005056364A JP2003299342A JP2003299342A JP2005056364A JP 2005056364 A JP2005056364 A JP 2005056364A JP 2003299342 A JP2003299342 A JP 2003299342A JP 2003299342 A JP2003299342 A JP 2003299342A JP 2005056364 A JP2005056364 A JP 2005056364A
Authority
JP
Japan
Prior art keywords
computer
demultiplexer
readable medium
presentation
data
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
JP2003299342A
Other languages
English (en)
Other versions
JP4249569B2 (ja
Inventor
Kirt Debique
デビキュー カート
Robin C B Speed
シー.ビー.スピード ロビン
C Alan Ludwig
ラドウィグ シー.アラン
Geoffrey T Dunbar
ティー.ダンバー ジェフリー
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005056364A publication Critical patent/JP2005056364A/ja
Application granted granted Critical
Publication of JP4249569B2 publication Critical patent/JP4249569B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

【課題】 マルチメディアデータの処理の制御を改善するためのマルチメディアデータのデマルチプレクサを代表する一連のインターフェイスとデータ構造(即ち、デマルチプレクサAPI)を提供する。
【解決手段】 このデータ構造は、各々がコマンドの要素を含むいくつかのフィールドを利用している。ひとつの実施例においては、デマルチプレクサの適切な動作のために少なくとも七つのコマンドが形成され、これらには、Initialize、SetPresentationDescriptor、GetPresentationDescriptor、GetPendingPresentationDescriptor、ProcessInput、ProcessOutput、Flushコマンドが含まれる。
【選択図】 図3

Description

本発明は、一般に電子的なデータ処理に関し、より詳細には、コンピューティング環境におけるマルチメディアデータの取り扱いに関する。
デジタルに基づくマルチメディア、即ち、デジタル装置上で観賞するためのデジタル形式のビデオおよびオーディオの組み合わせは、能力および普及において急速に増大している。今日、製造されるほとんどすべての新しいパーソナルコンピュータは、何らかの形式のマルチメディアを含んでいる。カメラ、ビデオレコーダ、電話、テレビのようなデジタル製品の販売は、着実に増加している。マルチメディアはまた、インターネットの成長が着実かつ急速に持続するにつれて、インターネットの領域においてますます普及して一般的になりつつある。この成長と共に、その種のコンピュータ機器のユーザーによる、更なる性能の期待が生じるに至った。これら更なるユーザーの期待は、ハードウェアの能力に対してだけでなく、データそれ自身の処理能力に対しても拡大している。
これら増大する期待を満たすために、マルチメディアのアプリケーションに対して、ストリーミングとして知られる技術が開発された。ストリーミングによりデータを転送し、その結果、データを安定かつ連続的なストリームとして処理することがきる。これにより、ファイル全体を伝送する前に、データを表示したり、聴いたりしたりすることができるという利点があり、大きなマルチメディアファイルにとっては必須である。
当初は、このストリーミングの枠組みは、チェーンマネージャからの僅かな情報しか持たない一連のデータ処理モジュール(例、キャプチャリングフィルタ、変換フィルタ、そしてレンダリングフィルタ)から構成されていた。フィルタとも呼ばれるこれら複数のデータ処理モジュールは、どのように接続され、どのデータ形式を使用し、そしてどのように相互に制御するかに関して決定を行う。フィルタをチェーン状に接続している期間、プロトコルがデータフローの予め決められた固定のシーケンスを定義し、接続の折衝を制御する。典型的な折衝シーケンスは、インターフェイス、媒体、データ形式、アロケータ、そしてマスタークロックの順番で折衝する。データ処理チェーンは、コンピュータのシステム内で端から端までの解決策(end−to−end solution)を提供する。
ストリーミングの複雑性が増したことで、この業界では、ビデオおよびオーディオの処理チェーンのようにリアルタイム性の制約と共にデータを処理する処理チェーンを最適化することが必要になったという点を認識した。ひとつの解決策は、Microsoft(登録商標)CorporationによるDirectShow(登録商標)であり、これはローカルファイルやインターネットサーバーからのマルチメディアストリームの再生、装置からのマルチメディアストリームのキャプチャ、そしてマルチメディアストリームのフォーマット変換を提供する。DirectShow(登録商標)は、Windows(登録商標) Media Audio、Windows(登録商標) Media Video、MPEG、Apple(登録商標)のQuickTime(登録商標)、AVI(Audio−Video Interleaved)、そしてWAV(Windows(登録商標) Wave)のようなファイルタイプのビデオおよびオーディオのコンテンツの再生を可能にしている。DirectShow(登録商標)は、プラグイン可能なフィルタコンポーネントのシステムを含んでいる。フィルタは、DirectShow(登録商標)インターフェイスをサポートすると共に、データのストリームに関して、データのファイルに対する読み出し、コピー、変更、および書き込みによるオペレーションを可能とするオブジェクトである。フィルタの基本タイプは、ソースフィルタを含む。このソースフィルタは、何らかのソース、例えば、ディスク上のファイルや、衛星による送出、インターネットサーバー、あるいはVCR(VTR)のような何らかのソースからデータを取り込み、そのデータを、フィルタの接続であるフィルタグラフの中に取り入れると共に複数のフィルタを接続する。フィルタグラフの中のこれらのフィルタは、変換フィルタ、同期ソースフィルタ、およびレンダリングフィルタ、即ち、データのフォーマットを変換する変換フィルタと、データを受信し、そしてそのデータを送信する同期ソースフィルタと、データを表示装置にレンダリングする場合のようにデータをレンダリングするレンダリングフィルタとを含む。データはまた、メディアを受け入れるいずれの場所に対してもレンダリングすることができる。DirectShow(登録商標)に含まれるその他のタイプのフィルタには、データタイプを変更することなく効果(effect)を付加するイフェクトフィルタと、ソースデータのフォーマットを理解し、どのようにして正しいバイトを読み出すかを知っており、タイムスタンプを作成し、およびシークを実行するパーサーフィルタが含まれている。
動作中に、すべてのデータが多量の制御情報と共にフィルタからフィルタへと通過する。各フィルタは、他のフィルタに接続するために使われる「ピン」と呼ばれるオブジェクトを含んでいる。フィルタがピンを用いて接続されると、フィルタグラフが作成される。接続されたフィルタの集まりの概念である「フィルタグラフ」と、この接続されたフィルタの集まり、即ち、「フィルタグラフ」を制御するDirectShow(登録商標)の中で作成されるオブジェクト「Filter Graph」との間に違いがあることに留意されたい。この「Filter Graph」は、より正確にはフィルタグラフマネージャと呼ばれる。フィルタグラフにおけるデータの流れと接続を制御するために、DirectShow(登録商標)はフィルタグラフマネージャを含んでいる。このフィルタグラフマネージャは、フィルタを適切な順番で接続することの保証を支援する。しかしながら、データと多くの制御情報はフィルタグラフマネージャを経由しない。フィルタは適切にリンクされなければならない。例えば、フィルタグラフマネージャはレンダリングの構成を検索し、利用可能なフィルタのタイプを決定し、与えられたデータタイプに対して適切な順番でフィルタをリンクし、適切なレンダリングフィルタを提供しなければならない。
フィルタは、大量のプログラムの再利用を可能にした一方で、これらフィルタの使用によっていくつかの予期しない問題も生じた。フィルタによって生じた問題のひとつは、誕生したフィルタの数多くのAPIである。各フィルタは本質的に別個のAPIを有している。結果として、ある特定のフィルタは、このフィルタが付随することになるあらゆるフィルタのAPIにインターフェイス接続する能力がなければならない。また、フィルタの使用によって、ある特定のフィルタを、問題のある状態でシャットダウンするという問題が生じる。グラフの中のある特定のフィルタがシャットダウンされると、シャットダウンされたフィルタとインターフェイスしているどのフィルタも別の関連のインターフェイスを必要とする。一般に、インターフェイスの喪失を上品に取り扱うようにフィルタをプログラミングすることは、インターフェイスが喪失した時のフィルタの状態を知り得ないので、困難である。インターフェイスの喪失は、それゆえ、フィルタにおける予測しない振る舞いにつながり、究極的には異常な振る舞いをするプログラムにつながる傾向がある。さらに、DirectShow(登録商標)における全体的な制御は、二つのブロック間に分散されている。フィルタマネージャがフィルタの生成と除去(instantiation and removal)を制御している間、フィルタ間のインターフェイスはデータの流れを制御する。このように制御を分散することは、必然的にブロック間の境界を横断する何らかの制御機能が存在するので、ソフトウェア設計を厄介なものにする。DirectShowに伴うもうひとつの問題は、フィルタがメディアフォーマットの折衝とバッファ管理機能の責務を担っていることである。フィルタはこのタスクを遂行するために他のフィルタと通信を行う。フィルタに関するこの依存性により、DirectShow上で構築しているアプリケーションが、フィルタの中にプログラムされている可能性のあるバグや非効率性に対して影響を受けやすくなる。このようにして、下手に書かれたフィルタは、フィルタグラフとフィルタグラフに関連付けられたアプリケーションを簡単に停止させる可能性がある。
このため、DirectShow(登録商標)のアーキテクチャを改善する必要性がある。より詳細には、マルチメディアデータの処理の制御を改善する必要性がある。
本発明は、マルチメディアデータのデマルチプレクサを表すインターフェイス、データ構造、イベントの一式を含む。データ構造はいくつかのフィールドを利用し、各々のフィールドはコマンドの要素を含んでいる。ひとつの実施例においては、デマルチプレクサの適切な動作のために、少なくとも7つのコマンドが形成され、これらにはInitialize、SetPresentationDescriptor、GetPresentationDescriptor、GetPendingPresentationDescriptor、ProcessInput、ProcessOutput、Flushコマンドが含まれている。これらのインターフェイスは、集合的に、デマルチプレクサアプリケーションプログラミングインターフェイス(Demux API)として知られている。このDemux APIは、オーディオおよびビデオ(圧縮あるいは非圧縮)のような要素ストリームデータを生成するために、統一的な方法で消費者がDVのような多重化ストリームデータを利用できる。
Initializeメソッドは、デマルチプレクサオブジェクトを初期化し、構成するために使われ、このデマルチプレクサを構成するために使われるパラメータを有している。これらのパラメータは、以下のパラメータ、即ち、多重化ストリームを記述する多重化ストリーム記述子オブジェクトと、この多重化ストリーム記述子に関する選択のメディアタイプと、ユーザーがデマルチプレクサからの出力として取り出すことに関心のある要素ストリームのメジャータイプの配列と、このメジャータイプの配列におけるメジャータイプの総数を含む。
SetPresentationDescriptorメソッドは、デマルチプレクサオブジェクトのアクティブプレゼンテーション記述子を動的に設定するために使われる。SetPresentationDescriptorメソッドは、プレゼンテーション記述子オブジェクトに対するポインタを有している。ProcessInputメソッドは、新規入力の多重化ストリームをデマルチプレクサオブジェクトに提供するために使われ、サンプルオブジェクトに対するポインタを含む。ProcessInputメソッドは、新たなプレゼンテーションのフラグを有する戻り値を有している。この新たなプレゼンテーションのフラグが真(TRUE)の値である場合、多重化サンプルのプレゼンテーション記述子に基づいて、このプレゼンテーションは変更される。ユーザーは、次に保留中のプレゼンテーションを取り出すためのGetPendingPresentationDescriptorメソッドを呼び出し、所望のストリームを選択し、デマルチプレクサの入力待ち行列(「キュー」とも呼ばれる)からのサンプルの処理を可能にするSetPresentationDescriptorを呼び出さなければならない。
ProcessOutputメソッドは、アクティブプレゼンテーションから少なくとも一つの要素ストリームを取り出すために使われる。ProcessOutputメソッドは、ストリーム識別子とサンプルオブジェクトに対するポインタへのポインタを含む。ProcessOutputメソッドは、出力戻り値をさらに含む。出力戻り値には、ストリームの終わりというエラーコードと、これ以上データがないというエラーコードを含む。
Flushメソッドは、現在、待ち行列中の入力および出力サンプルを一括消去するために使われる。Flushメソッドにはパラメータは必要ない。
GetPresentationDescriptorメソッドは、デマルチプレクサオブジェクトの現在のアクティブプレゼンテーション記述子のコピーを取り出すために使われる。GetPresentationDescriptorメソッドは、プレゼンテーション記述子を含む。
GetPendingPresentationDescriptorメソッドは、次に保留中のプレゼンテーションを取り出すために使われる。GetPendingPresentationDescriptorメソッドは、保留中のプレゼンテーション記述子を含む。
本発明の更なる特徴および利点は、添付の図面を参照して説明する例示の実施形態の詳細な説明から明らかとなるであろう。
特許請求の範囲は、個々に本発明の特徴を述べているけれども、本発明は、その目的および利点と共に、添付の図面を参照して行われる詳細な説明から最も良く理解されよう。
本発明は、マルチメディアデータのデマルチプレクサを表すインターフェイス、データ構造、イベントの一式、即ち、集合的にデマルチプレクサAPIと呼ばれる一式を提供する。このAPIにより、オーディオおよびビデオ(圧縮あるいは非圧縮)のような要素ストリームデータを生成し、統一的な方法で消費者はDVや、MPEG2、ASFなどのような多重化ストリームデータを利用することができる。このデマルチプレクサAPIは、多重化ストリームの初期化データに基づく新たなストリーム記述子の動的な生成をサポートし、多重化ストリームサンプルに基づく新たなストリーム記述子の動的な生成をサポートする。さらに、このデマルチプレクサAPIは、多重化ストリームについてのメタデータを経由しての帯域外の初期化、あるいは多重化ストリームサンプルを経由しての帯域内の初期化のいずれか一方をサポートし、複数のバッファにまたがることのある、デマルチプレクスされたサンプルの生成をサポートする。Microsoft(登録商標)Corporationによるメディアファンデーション(Media Foundation)アーキテクチャと関連(context)して、このデマルチプレクサAPIは、以下に説明するメディアプロセッサによって、主に制御され、メディアプロセッサに出力を受け渡す。デマルチプレクサAPIは、いずれのマルチメディアアーキテクチャがデマルチプレクサを明確な方法で利用することできるように設計されている。
図面を参照すると、これらの図面では同様の番号が同様の要素を示すが、本発明が、適切なコンピューティング環境において実装されているように図示されている。要求されるものではないが、本発明は、パーソナルコンピュータによって実行される、プログラムモジュールのような、コンピュータで実行可能な命令という一般的な状況(context)において説明されるであろう。一般に、プログラムモジュールは、特定のタスクを実行したり、特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造を含む。さらに、当業者は、本発明が、携帯型の端末、マルチプロセッサシステム、マイクロプロセッサベースあるいはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、その他同種類のものを含む、他のコンピュータシステムの構成で実施可能であることを認めるであろう。本発明は、また、通信ネットワークを通してリンクされている遠隔処理装置によってタスクが実行される分散型コンピューティング環境においても実施することができる。分散型コンピューティング環境においては、プログラムモジュールは、ローカルおよびリモートの両方のメモリ記憶装置に配置されていることもある。
図1は、本発明がその上で実施することができる適切なコンピューティングシステム環境100の例を図示している。このコンピューティングシステム環境100は、適切なコンピューティング環境100の単なるひとつの例であり、本発明の使用の範囲または機能について何らの限定を示唆するように意図されたものではない。コンピューティング環境100は、例示の動作環境100で図示された構成要素のどのひとつまたは組み合わせに関連してどのような依存性または要求を有するものとして解釈されるべきではない。
本発明は、数多くのその他の汎用あるいは特定目的のコンピューティングシステム環境あるいは構成で動作することができる。よく知られたコンピューティングシステム、環境および/または構成の例、即ち、本発明と共に使用することに適する可能性のある例には、これらに限定されるものではないが、パーソナルコンピュータ、サーバーコンピュータ、携帯型またはラップトップ式の装置、タブレット型装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、任意の上記システムまたは装置およびその他同種類のものを含む分散型コンピュータ環境が含まれる。
本発明は、コンピュータによって実行される、プログラムモジュールのような、コンピュータで実行可能な命令という一般的な状況(context)において説明されることがある。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データタイプを実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、また、通信ネットワークを通してリンクされている遠隔処理装置によってタスクが実行される分散型コンピューティング環境において実施することができる。分散型コンピューティング環境においては、プログラムモジュールは、メモリ記憶装置を含むローカルおよび/または遠隔のコンピュータ記憶媒体に配置されていることもある。
図1を参照して、本発明を実施するための例示的なシステムは、コンピュータ110の形態で汎用コンピューティング装置を含む。コンピュータ110の構成要素は、これらに限定されないが、処理ユニット120、システムメモリ130、そしてシステムメモリから処理ユニット120を含む様々なシステム構成要素を連結するシステムバス121を含むことができる。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを用いたローカルバスを含む何種類かのバス構造のいずれかとすることができる。限定ではなく、例示として、この種のアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、拡張ISA(EISA)バス、VESA(Video Electronics Standards Association)ローカルバス、そしてメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、典型的には種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110でアクセスでき、そして揮発性および不揮発性媒体と、取り外し可能および取り外し不可の媒体の双方とを含む、利用可能ないずれの媒体とすることができる。限定ではなく、例示として、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を有してもよい。コンピュータ記憶媒体には、コンピュータ読み取り可能命令、データ構造、プログラムモジュールまたはその他のデータのような情報の保存のためのいずれかの方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可の媒体が含まれる。コンピュータ記憶媒体には、これらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、あるいは所望の情報を保存するために使用することができ、コンピュータ110によってアクセスできるいずれかのその他の媒体が含まれる。通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュールあるいはその他のデータを搬送波または他のトランスポート機構のような変調されたデータ信号中に組み込むのが通常であり、およびいずれの情報配信媒体を含む。この「変調されたデータ信号」という用語は、一つ以上の特徴量(its characteristics set)を有する信号、あるいは情報を信号中で符号化するような方法で変更された信号を意味する。限定ではなく、例示として、通信媒体には、有線ネットワークまたは直接の有線接続(direct−wired connection)のような有線媒体、そして音響、RF、赤外線およびその他の無線媒体のような無線媒体が含まれる。上記のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
システムメモリ130は、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132のような揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。スタートアップの期間などに、コンピュータ110内で要素間の情報を転送する助けとなる基本ルーチンを格納している基本入出力システム133(BIOS)は、通常、ROM131に保存されている。RAM132は、通常、即座にアクセスでき、そして/あるいは、処理ユニット120によって現時点で処理させられているデータおよび/またはプログラムモジュールを格納している。限定ではなく、例示として、図1は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、そしてプログラムデータ137を図示している。
コンピュータ110は、また、その他の取り外し可能/取り外し不可の、揮発性/不揮発性のコンピュータ記憶媒体を有することもある。単に例示のために、図1には、取り外し不可の、不揮発性の磁気媒体から読み出したり、書き込みをするハードディスクドライブ141や、取り外し可能な、不揮発性の磁気ディスク152から読み出したり、書き込みをする磁気ディスクドライブ151や、CD−ROMやその他の光媒体のような取り外し可能な、不揮発性の光ディスク156から読み出したり、書き込みをする光ディスクドライブ155を図示している。例示的なオペレーティング環境において使用することができる他の取り外し可能/取り外し不可の、揮発性/不揮発性のコンピュータ記憶媒体には、これらに限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体(IC)のRAM、固体(IC)のROM、その他同種類のものが含まれる。ハードディスクドライブ141は、通常、インターフェイス140のような取り外し不可のメモリインターフェイスを通してシステムバスに接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェイス150のような取り外し可能なメモリインターフェイスによってシステムバス121に接続される。
上記で説明され、図1に図示された、これらドライブおよびそれらに付属するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびコンピュータ110のその他のデータの保管をする。図1において、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を格納するように図示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同一であっても、異なっていても良いということに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には、これらが少なくとも異なるコピーであることをここに図示するために異なる数字が与えられている。ユーザーは、キーボード162、一般にマウスと呼ばれるポインティング装置161、トラックボールやタッチパッド、マイクロフォン163、そしてタブレットや電子デジタイザ164のような入力装置を通してコンピュータ110に対してコマンドおよび情報を入力することができる。その他の入力装置(図示せず)には、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、またはその種の他のものを含んでもよい。これらおよびその他の入力装置は、システムバスに結合されるユーザー入力インターフェイス160を通して処理ユニット120に接続されることが多いが、パラレルポートや、ゲームポート、ユニバーサルシリアルバス(USB)のようなその他のインターフェイスおよびバス構造によって接続されることもある。モニター191やその他の種類の表示装置もまた、ビデオインターフェイス190のようなインターフェイス経由でシステムバス121に接続される。モニター191はまた、タッチスクリーンパネルまたはその種の他のものと一体化されていることもある。モニターおよび/またはタッチスクリーンパネルは、タブレット型のパーソナルコンピュータのような、コンピューティング装置110がその中に組み込まれている筐体に物理的に結合可能であることに留意されたい。さらに、コンピューティング装置110のようなコンピュータは、出力周辺装置インターフェイス195またはその種の他のものを通して接続されることのあるスピーカー197およびプリンタ196のようなその他の周辺出力装置を含んでもよい。
コンピュータ110は、遠隔コンピュータ180のような、一つ以上の遠隔コンピュータに論理コネクションを用いてネットワーク化された環境において動作することができる。遠隔コンピュータ180は、パーソナルコンピュータ、サーバー、ルータ、ネットワークPC、ピア装置あるいはその他の共通ネットワークノードとすることができ、単にメモリ記憶装置181だけが図1に図示されているが、コンピュータ110に関連して上述した要素の多くあるいはすべてを含むのが通常である。図1に示された論理コネクションには、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれているが、その他のネットワークを含んでもよい。この種のネットワーキング環境は、オフィスや、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的である。例えば、コンピュータシステム110は、データがそこから移転されるソースマシーンを含むことができ、遠隔コンピュータ180は、デスティネーションマシーンを有することができる。ソースおよびデスティネーションマシーンは、しかしながら、ネットワークまたは何らかのその他の手段によって接続されている必要はなく、その代わりに、データをソースのプラットフォームによって書き込むことができて、一つのあるいは複数のデスティネーションのプラットフォームによって読み出すことができる任意の媒体を経由してデータを移転することもできることに留意されたい。
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインターフェイスあるいはアダプタ170を通してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、インターネットのようなWAN173に渡って通信を確立するためにモデム172またはその他の手段を含むのが典型的である。モデム172は、内蔵、または、外付けとすることができ、ユーザー入力インターフェイス160経由で、あるいはその他の適切な機構で、システムバス121に接続することができる。ネットワーク化された環境において、プログラムモジュールは、コンピュータ110に関連して示すプログラムモジュール、あるいはそれらの部分は、遠隔メモリ記憶装置に保管することができる。限定ではなく、例示として、図1は、リモートアプリケーションプログラムをメモリ装置181上に常駐するものとして図示している。示されたネットワーク接続は例示であり、これらコンピュータ間の通信リンクを確立するその他の手段を使用することができることが理解されるであろう。
以下の説明においては、本発明は、別途明示されない限り、一つ以上のコンピュータによって実行される動作およびオペレーションの記号表示を参照して説明されるであろう。従って、時にコンピュータによって実行されているとみなされるそのような動作およびオペレーションには、構造化された形態でデータを表す電気的信号についてのコンピュータの処理ユニットによる操作が含まれる点は理解されよう。この操作はデータを変換するか、または、データをコンピュータのメモリシステムの場所に保持し、これにより、当業者によってよく理解されている方法でコンピュータの動作を再構成し、そうでなければ変更する。データを保持するデータ構造は、データのフォーマットによって規定された特定の属性を有するメモリの物理的な場所である。しかしながら、本発明は、前述の文脈において説明されている一方で、当業者は以降に説明される各種の動作およびオペレーションがハードウェアにおいても実施されうるということ認めるであろうから、本発明が限定的であるということを意味しない。
図2を参照すると、本発明のデマルチプレクサは、マイクロソフトのマルチメディアアーキテクチャのひとつの実装である、メディアファンデーション(Media Foundation)アーキテクチャにおいて動作することができる。図2はメディアファンデーションアーキテクチャにおけるデマルチプレクサを示しているけれども、本発明のデマルチプレクサAPIは、その他のマルチメディアアーキテクチャにおいても使用可能である。デマルチプレクサを説明する前に、メディアファンデーションについて説明する。メディアファンデーションは、コンポーネント化されたアーキテクチャである。図のように、メディアファンデーションは、メディアファンデーションにおける機能の基本ユニットのいくつかを担うコアレイヤ211のコンポーネントおよび、下にあるコアコンポーネントを用いて、より汎用的なタスクの実行を担う制御レイヤ201を含む。
コアレイヤ211のコンポーネントには、メディアソース210とストリームソース214が含まれ、これらは、汎用的で明確に定義されたインターフェイスを通してマルチメディアデータを提供する。メディアソース210は、アクセスされるストリームを含む、プレゼンテーションを記述する。異なるマルチメディアのファイルタイプまたは装置からマルチメディアデータを提供するために、多くのメディアソースが実装される。コアレイヤ211はさらに、ブロック208に示された変換部を含み、これは、汎用的で明確に定義されたインターフェイスを通してマルチメディアデータに関しある種の変換オペレーションを実行する。変換の例には、コーデック、ビデオサイズ変更、オーディオ再サンプラ、統計処理装置、カラー再サンプラ、その他がある。入力としてインターリーブされたマルチメディアデータを取り込み、そしてこのデータを個々に有用なマルチメディアデータのメディアストリームに分離する、本発明のデマルチプレクサが、図2のアーキテクチャにおける変換部である。ブロック208はさらにマルチプレクサを含み、これは、個々のメディアストリームを取り込み、それらをインターリーブされたマルチメディアデータに結合する。マルチプレクサは、共通の明確に定義されたインターフェイスを共有し、異なるタイプのマルチメディアデータに多重化するための多くの実施例がある。コアレイヤ211はさらに、ストリームシンク212とメディアシンク230を含む。メディアシンク230は、入力として汎用的で明確に定義されたインターフェイスを通してマルチメディアデータを受け入れる。マルチメディアデータと共に異なる機能を実行するためのメディアシンクには多くの実施例がある。例としては、マルチメディアデータをある特定のファイルタイプに書き込んだり、ビデオカードを用いてモニター上にマルチメディアデータを表示したりすることである。
制御レイヤ201のコンポーネントは、より高いレベルのタスクをより簡単な方法で実行するためにコアレイヤ211のコンポーネントを用いる。典型的には、制御レイヤのコンポーネントは、ある与えられたタスクに対して多くの異なるコアレイヤのコンポーネントを使うであろう。例としては、マルチメディアファイルを再生するには、メディアソースがディスクからファイルを読み出し、データを解析し、一つ以上の変換処理により圧縮のマルチメディアデータを展開し、そして一つ以上のメディアシンクがマルチメディアデータを表示することを含む。制御レイヤ201は、メディアストリームを受け取ったり、送ったりするためにアプリケーション202とやり取りを行うメディアエンジン260と、メディアセッション240と、メディアプロセッサ220と、メディアセッション240内に示されているトポロジーローダー250を含む。トポロジーローダー250は、コアレイヤのコンポーネント間でのデータフローの記述を担う、制御レイヤのコンポーネントである。制御レイヤのコンポーネントを、制御レイヤによって使用されるより原始的なコアレベルのコンポーネントへのアクセスを回避するように構成することができる。データは、システムを通して流れ、メディアソース210から始まり、メディアセッション240を通してメディアプロセッサ220へ、そしてメディアシンク230の出力に流れる。メディアプロセッサ220は、トポロジー中のメディアソースとその他のコンポーネントのパイプラインを駆動する。メディアセッション240は、いつトポロジー中のイベントが起こるかをガイドし、そしてトポロジーローダー250は、トポロジー中で指定されたイベントが起こることを保証する。メディアセッション240はまた、メディアプロセッサ220を構成し、メディアプロセッサによって戻されたサンプルを処理(consume)する。これは、メディアエンジン260の関連で行われ、メディアセッション240がメディアエンジン260の呼び出し元(例、アプリケーション202)と折衝したサンプルをメディアプロセッサ220からメディアシンクへ送る。トポロジー中のコンポーネントには、メディアソース210のコンポーネントおよびメディアシンク230のコンポーネントだけでなくその他のノードも含まれる。メディアファンデーションシステム200は、ストリーミングメディアオブジェクトを接続するためのインターフェイスとレイアウトを提供する。このシステムにより、ユーザーはトポロジーのコンセプトを使用して記号による抽象化を経由して、汎用または指定のソース、変換、およびシンクオブジェクト間の接続を指定することができる。
図3を参照して、デマルチプレクサ300の概要をこれから説明する。以下の説明において、コマンドが説明の中で参照される。これらのコマンドは、後述する。デマルチプレクサAPIは、データのソースからデータのフォーマットを分離する。デマルチプレクサAPIは、多重化されたデータをデータのインメモリバッファとして取り込み、およびデマルチプレクスのオペレーションを行う。これには、この動作を行うために多くの異なるデータソースが同一の実装のデマルチプレクサを用いることができるという望ましい効果がある。例えば、DVデータを、DVカメラから直接もたらすこともできるが、ハードディスク上のファイルとして保存させることもできる。この場合、多重化されたDVデータを生成するための二つのコードがあるが(例、カメラと通信するものと、ファイルシステムと通信するもの)、同一の実装のデマルチプレクサを使うことができる。デマルチプレクサ300は、IMFDemultiplexerインターフェイスをサポートし、多重化ストリームをその要素ストリームの部分に分割する責任を担っている。デマルチプレクサ300は、同期の形態で動作し(DMOと類似)、および多重化ストリーム中の変化により生じる、利用可能な要素ストリーム中の動的な変化を取り扱うことができる。デマルチプレクサは、IMFSampleインターフェイス経由で送られるサンプルを受け入れ、複数のバッファにまたがって生成サンプルを収容する。
多重化ストリーム302は、一つ以上の要素ストリームを含む単一ストリームである。要素ストリーム304、306は、同種の要素(例、オーディオ、ビデオなど)のストリームである。多重化サンプル308と要素サンプル310、312の間には、必ずしも何らかの種類の一対一の対応があるわけではない。例えば、多重化サンプルごとの要素ストリームごとに完全な要素サンプルがあることもあれば、ないこともある。加えて、要素サンプルが多重化ストリーム中で正しい順番になるという特別な必要性もない。ストリームから出てきた要素サンプルが同一のタイムスタンプを共有しないこともある。ある要素ストリームは、その他の要素ストリームからオフセットがあるかもしれない。いくつかの多重化ストリームは、そのストリームの期間中に単一系列(single set)の要素ストリームのみからなることがある。いくつかの多重化ストリームは、異なった時間に異なった系列の要素ストリームを有することもある。
整合された要素ストリームの各系列は、プレゼンテーション320と呼ばれる。各系列は、対応するプレゼンテーション記述子322を有している。このプレゼンテーション記述子322は、二つの主な目的を有する。第一に、それは各要素ストリームのメディアタイプを記述する。第二に、それはどの利用可能なストリームをデマルチプレクサ300によって抽出するかを選択するためのメカニズムを提供する。現在のプレゼンテーション324(The Current Presentation)は、常に、選択されたストリームと現在の出力ストリームのデータタイプを記述する。
デマルチプレクサ300によってサンプルを処理する前に、多重化されたサンプルを要素サンプルに変換するために使われる分割アルゴリズムは、どのストリームが抽出されることになるかを知る必要がある。この情報は、プレゼンテーション記述子322の中に含まれている。ストリームが選択される前には、プレゼンテーション記述子は「保留中」である。一度、ストリームが選択されると、プレゼンテーション記述子は「アクティブ(動作中)」となる。プレゼンテーションをアクティブにさせるためには、GetPendingPresentationDescriptorを呼び出すことによって保留中プレゼンテーション待ち行列326(「キュー」とも呼ばれる)からプレゼンテーションを取り出す。適切なストリームを選択し、その後、呼び出し元がSetPresentationDescriptorメソッドを起動する。この時点で(ある条件が合えば)、このプレゼンテーションはアクティブのプレゼンテーション324になり、保留中プレゼンテーション待ち行列326から取り除かれる。保留中のプレゼンテーションは、前のアクティブのプレゼンテーションからすべて出力された場合にだけアクティブ可能となる。
デマルチプレクサ300は、少なくとも二組の待ち行列を含んでいる。これらの待ち行列は、入力待ち行列330と、出力待ち行列340、342である。ProcessInput()がデマルチプレクサ300に関して呼び出されると、この入力はすぐに処理されるか、あるいは入力待ち行列330に入れることができる。一旦、このデータが処理されると、それは出力待ち行列340、342に入れられる。出力待ち行列にある利用可能なデータタイプとストリームは、常に、現在のアクティブなプレゼンテーション324に対応している。
デマルチプレクサ300の全般的な説明について述べられた今、デマルチプレクサ300の状態と遷移について説明されるべきであろう。次に続く説明において、コマンドが説明の中で参照されるであろう。これらのコマンドを以下に説明する。ここで図4を参照する。デマルチプレクサ300が作成されたが、Initializeがまだ呼び出されていないときに、デマルチプレクサ300は非初期化の状態にある。Initializeは、この状態におけるデマルチプレクサオブジェクト300に関して唯一の有効なオペレーションである。Initialize()を呼び出すことにより、デマルチプレクサ300が保留中の状態402に遷移する。
保留中の状態402は、有効なアクティブプレゼンテーションがないことを示している。ProcessOutputに対する呼び出しは、失敗するであろう。アクティブプレゼンテーションを設定するには、メディアプロセッサ220がGetPendingPresentationDescriptor()を呼び出し、適切なストリームを選択し、SetPresentationDescriptor()を呼び出す。GetPendingPresentationDescriptor()に対する呼び出しが失敗に終わる場合、次にProcessInput()が呼び出される。その後、プレゼンテーション記述子322を得ることができるまで、GetPendingPresentationDescriptor()が再び呼び出される。一旦、PresentationDescriptor(プレゼンテーション記述子)がデマルチプレクサ300上で設定されると、デマルチプレクサ300は中立(Neutral)の状態404に遷移する。Flush()を呼び出すことにより、すべての待ち行列中の入力および出力データを破棄し、デマルチプレクサ300は保留中の状態402に遷移する。
中立の状態404において、すべての関数の呼び出しが(初期化を除いて)有効である。ProcessInputの呼び出しに関して発見された新たなプレゼンテーションがあり、現在のプレゼンテーションの最後のサンプルが出力待ち行列から出力(Service)されるとき、デマルチプレクサ300は保留中の状態402に遷移する。
いくつかのストリームは、ストリームのコンテンツに基づいて検出することができる、固定の限られた期間を有している。この条件が検出され、すべてが出力されたとき、デマルチプレクサは、end_of_streamの状態406に遷移する。その後のすべての呼び出しに対しては、適切なエラーコードが返される。
回復不能なエラーがデマルチプレクサ300に起こると、エラー状態408に遷移する。エラー状態408へは、他のどの状態からでも達する。デマルチプレクサ300が除去されることになると、Release()が呼び出され、デマルチプレクサ300がシステムから除去されるのに先立って、デマルチプレクサ300が終わりの状態410に遷移する。デマルチプレクサ300が最後の参照から解放されると、その後デマルチプレクサ300がどの状態にあるかを顧慮することなく、デマルチプレクサ300はメモリから除去される。Release()は、非初期化状態を含む、どの状態からでも呼び出すことができる。
デマルチプレクサ300の状態と遷移が説明された今、上記で参照されたコマンドをこれから説明する。これらのコマンドには、Initialize()、SetPresentationDescriptor()、GetPresentationDescriptor()、GetPendingPresentationDescriptor()、ProcessInput()、ProcessOutput()、そしてFlush()が含まれる。
図5は例示のデータ構造図である。データ構造図は、本発明のデマルチプレクサAPIの7つのメッセージを構成するために使われる基本メッセージデータ構造460を示す。明らかなように、メッセージデータ構造460は、いくつかのフィールド4621‐Nを有している。好ましい実施例では、最初のフィールド462は、ヘッダーのために確保される。残りのフィールドは、パラメータである。
本発明のデータ構造に従って、Initializeコマンドが構築される。図6のデータ構造図から明らかなように、Initializeコマンド480は、いくつかのフィールド482〜490で構築されている。これらのフィールドは、ヘッダーフィールド482、ストリーム記述子オブジェクトフィールド484、メディアタイプフィールド486、メジャータイプカウントフィールド488、そしてメジャータイプアレイフィールド490である。それぞれの各コマンドは、図5に図示されたものと同様の態様で構築される。各々を以下で説明する。
Initialize()メソッドは、デマルチプレクサオブジェクト300を構成し、および初期化する。多重化ストリーム記述子は、(任意のヘッダーデータなどを含む)デマルチプレクサの状態を初期化するのに適切なメタデータを含んでもよい。このコマンドのシンタックスは、
Figure 2005056364
である。
pMuxedStreamDescriptorパラメータは、入力パラメータであり、多重化ストリームを記述するストリーム記述子オブジェクトに対するポインタである。このパラメータの主目的は、ストリーム記述子上にあるかもしれない任意のメタデータをデマルチプレクサ300が使用できるようにするためである。pSelectedMediatypeパラメータは、pMuxedStreamDescriptorのために選択されたメディアタイプを指定する入力パラメータである。これは、ProcessInput()に対する呼び出しにおいてデマルチプレクサ300に渡されるサンプルに対応しているメディアタイプである。cMajorTypesパラメータは、aMajorType配列におけるメジャータイプの総数である入力パラメータである。このパラメータはゼロであってもよい。aMajorTypesパラメータは、入力パラメータであり、呼び出し元がデマルチプレクサ300からの出力として取り出そうとしている要素ストリームのメジャータイプの配列である。このパラメータは、cMajorTypesがゼロに等しければ、ヌル(NULL)であっても良い。この配列に見られる各々のメジャータイプのデフォルトストリームは、GetPendingPresentationDescriptor()から返されるプレゼンテーション記述子において選択される。このメソッドが成功すると、メソッドはS_OKの値を返す。このメソッドが失敗すると、エラーコードを返す。プレゼンテーションが利用可能であれば、そのときそのプレゼンテーションは、GetPendingPresentationDescriptor経由で取り出すことができる。プレゼンテーションが初期化の後に利用可能でない場合は、次にデータがProcessInput経由でデマルチプレクサに送り込まれた後に、プレゼンテーションが利用可能になる。
SetPresentationDescriptorメソッドは、新たなストリームの選択、即ち、呼び出し元が関心のある新たなストリームの選択を指示しているデマルチプレクサ300についてアクティブプレゼンテーション記述子を設定する。このプレゼンテーション記述子は、GetPresentationDescriptorメソッドあるいはGetPendingPresentationDescriptorメソッド経由で生成された記述子でなければならない。このコマンドのシンタックスは、
Figure 2005056364
である。
pPresentationDescriptorパラメータは、プレゼンテーション記述子オブジェクトに対するポインタである。このメソッドが成功すると、S_OKが返される。プレゼンテーション記述子が無効であると、それはMF_E_INVALID_PRESENTATIONで失敗することがある。プレゼンテーション記述子が保留中のプレゼンテーションであり、および現在のアクティブプレゼンテーションからまだ保留中の出力がある場合、それはMF_E_OUTPUT_PENDINGで失敗することがある。現在のアクティブプレゼンテーションから保留中の出力がある場合、SetPresentationDescriptor()を保留中のプレゼンテーションと共に呼び出さないかもしれない。ストリームを選択したり、非選択したりするために、SetPresentationDescriptor()をアクティブプレゼンテーションと共に呼び出してもよい。あるストリームが選択されない場合は、そのとき出力待ち行列にあるそのストリームのすべてのサンプルが失われる。新たなストリームが選択されると、そのストリームのサンプルは、いずれ利用可能になるであろう。ストリームが異なれば、入力および出力のバッファリング要求も異なるので、新たなストリームのサンプルがどの時点で利用可能になるかは個々のデマルチプレクサによるであろう。
GetPresentationDescriptorメソッドは、デマルチプレクサ300の現在アクティブなプレゼンテーション記述子のコピーを取り出す。このコマンドのシンタックスは、
Figure 2005056364
である。
ppPresentationDescriptorは、プレゼンテーション記述子オブジェクトに対するポインタに対するポインタである。このメソッドが成功すると、S_OKが返される。失敗すると、エラーコードが返される。保留中の出力があると、そのときGetPresentationDescriptorは、その出力に対応するプレゼンテーション記述子を返す。
GetPendingPresentationDescriptorメソッドは、次の保留中のプレゼンテーションを取り出す。このコマンドのシンタックスは、
Figure 2005056364
である。
ppPendingPresentationDescriptorパラメータは、プレゼンテーション記述子オブジェクトに対するポインタに対するポインタである。このメソッドが成功すると、S_OKが返される。保留中のプレゼンテーションがなければ、メソッドは、MF_E_PRESENTATION_NOT_AVAILABLEを返す。ProcessInputが何回か呼び出されると、いくつかの保留中のプレゼンテーションが待ち行列に並んでいることがある。このメソッドは、単に次の保留中のプレゼンテーションを返すだけであろう。現在のアクティブなプレゼンテーションのすべての出力が処理されると、保留中のプレゼンテーションがSetPresentationを呼び出すことによってアクティブにされる。
ProcessInputメソッドは、呼び出し元が新たな入力の多重化ストリームサンプルをデマルチプレクサに提供可能にする。デマルチプレクサが、プレゼンテーション中の新たなストリームの存在を検出すると、*pfNewPresentationAvailableが真に設定される。その呼び出し元は、::GetPendingPresentationDescriptor経由で保留中のプレゼンテーション記述子を取り出すことができる。このコマンドのシンタックスは、
Figure 2005056364
である。
pSampleパラメータは、サンプルオブジェクトに対するポインタである。このメソッドが成功すると、S_OKを返す。pfNewPresentationAvailableパラメータは、ProcessInputに対する呼び出しによって、新たなプレゼンテーション記述子が保留中のプレゼンテーション待ち行列に加えられることになると、真を返す。このデマルチプレクシングのオペレーションは、デマルチプレクサのProcessInputあるいはProcessOutputに対する呼び出しのどちらかによって、行うことができる。どちらの場合でも、ユーザーがProcessOutputを呼び出すか、Flush()に対する呼び出しでデータを破棄するまで、ProcessInputに対する呼び出しに基づいて、データが待ち行列に入れられる。一つのプレゼンテーションだけが、同時にアクティブ可能となる。新たなプレゼンテーションが利用可能になると、呼び出し元は、ProcessOutputを呼び出して、すべての保留中の出力をクリアし、GetPendingPresentationDescriptorを呼び出してこの新たなプレゼンテーションを取り出し、それからSetPresentationを呼び出してアクティブプレゼンテーションを設定しなければならない。
ProcessInputメソッドは、呼び出し元がアクティブプレゼンテーションの要素ストリームや複数のストリームを取り出し可能にする。このコマンドのシンタックスは、
Figure 2005056364
である。
dwStreamIdentifierパラメータは、要求されたサンプルのアクティブプレゼンテーションのストリーム識別子を含む32ビット値である。ppSampleパラメータは、サンプルオブジェクトに対するポインタに対するポインタである。このメソッドが成功すると、S_OKを返す。失敗すると、エラーコードを返す。ストリームの終わりに達すると、MF_E_ENDOFSTREAMエラーコードが返される。E_NO_MORE_DATAが返される場合は、処理するために利用可能なデータがない。ProcessInput()を別の多重化されたデータサンプルと共に呼び出すことにより、このエラーを軽減することができる。利用可能なデータの処理が、アクティブプレゼンテーションがもはや有効ではないという理由でブロックされると、このメソッドはMF_E_NEW_PRESENTATIONを返す。プレゼンテーションが変わるときには、利用可能な新たな系列のストリームが存在する。ユーザーは、どのストリームを抽出するかをデマルチプレクサ300に指示しなければならない。GetPendingPresentationDescriptorを呼び出し、所望のストリームを選択し、そしてSetPresentationDescriptor()を呼び出すことにより、入力待ち行列の更なるサンプルの処理が可能になる。このデマルチプレクサオブジェクト300は、必要に応じてこれらサンプルの空間を割り当てる。このデマルチプレクシングのオペレーション、デマルチプレクサのProcessInputあるいはProcessOutputに対する呼び出しのどちらかによって、行うことができる。どちらの場合でも、データは、ユーザーがProcessOutputを呼び出すか、Flush()に対する呼び出しでデータが破棄されるまで、ProcessInputに対する呼び出しに基づいて待ち行列に入れられる。
Flushメソッドにより、呼び出し元がデマルチプレクサ300のすべての現在の待ち行列中の入力および出力サンプルを一括消去可能となる。Flushは、また、ActivePresentationDescriptorもクリアする。これは、アップストリームのデータが新たな場所でシークされているか、呼び出し元が単純にすべてのバッファされたデータを破棄したいときに行われる。このコマンドのシンタックスは、
Figure 2005056364
である。
このFlushコマンドには、パラメータはない。このメソッドが成功すると、S_OKを返す。失敗すると、エラーコードを返す。Flushを呼び出すことにより、デマルチプレクサ300のすべての待ち行列中のデータのクリアはもとより、アクティブプレゼンテーション記述子もクリアする。特定のデマルチプレクサに依存して、保留中のプレゼンテーションは、GetPendingPresentationを呼び出すことによってすぐに利用可能になることもあるし、保留中のプレゼンテーションが利用可能になるまで、呼び出し元が繰り返しProcessInputを呼び出す必要があることもある。
デマルチプレクサ300のコマンドが説明された今、ソース(例、アプリケーション202)が、多重化ストリームを受け入れるシンクについて折衝しない場合の典型的なオペレーションについて説明する。ここで図7を参照して、ソースがアプリケーションによる選択のために多重化ストリームを公開する(例、ビデオキャプチャのソースがDVを公開するか、または、TVのソースがMPEG2プログラムストリームを公開する)(ステップ500)。制御レイヤ201は、アプリケーションがこの多重化ストリームに対するシンクについて折衝したかどうかを判断する(ステップ502)。アプリケーション202がその多重化ストリームに対するシンクについて折衝していなければ、メディアセッション240は、適切なデマルチプレクサをロードし、それを多重化ストリーム記述子と共に初期化する(ステップ504)。
プレゼンテーションがデマルチプレクサから利用可能であれば(ステップ506)、メディアセッション240は、要素ストリーム記述子を用いて再折衝を試みる(ステップ508)。トポロジーの残りの部分が構築される(ステップ510)。公開された要素ストリームは、DMO(例、デコーダ)を用いてメディアプロセッサ220によって処理される。
プレゼンテーションが利用できなければ、そのときメディアセッションは、更なる情報が利用できるようになるまで、多重化ストリームに対するトポロジーを終了するためにヌルのメディアシンクを使用する(ステップ512)。セッションが開始され、サンプルが流れているときはいつでも、このデマルチプレクサ300には、プレゼンテーション記述子が利用可能になるまで、サンプルが与えられる(ステップ514)。これは、多重化ストリームを描写するメディアプロセッサノード上で呼び出されるIMFMediaStream::ProcessSampleを呼び出すことによって行われる。メディアプロセッサ220は、基礎を成している多重化ストリームに関してIMFMediaStream::ProcessSampleを呼び出す(例、AVIソースがDVストリームを公開)。この多重化ストリームサンプルが取り出されると、メディアプロセッサがデマルチプレクサ300上でIMFDemultiplexer::ProcessInputを呼び出す。このProcessSampleおよびProcessInputの呼び出しは、新たなプレゼンテーションのフラグがIMFDemultiplexer::ProcessInputからの戻り値に関して真になるまで続く。メディアプロセッサ220は、その後、現在のトポロジーをデマルチプレクサの変更に起因して更新する必要があるというイベントを経由してメディアセッション240に信号を送る。メディアセッション240は、新たに利用可能になった要素ストリーム記述子にアクセスできるようにIMFDemultiplexer::GetCurrentPresentationを呼び出す。このプレゼンテーション記述子が利用可能になると、メディアセッションは、これらの要素ストリーム記述子を用いて再折衝することができる(ステップ516)。
マルチメディアデータストリームのデマルチプレクサAPIについて説明した。デマルチプレクサAPIは、マルチメディアデータのデマルチプレクサを代表するための一連のインターフェイス、データ構造およびイベントを具備している。このAPIは、オーディオおよびビデオ(圧縮あるいは非圧縮)のような要素ストリームデータを生成するために、統一的な方法で消費者がDVのような多重化ストリームデータを使用できるようにする。このAPIは、デマルチプレクサを独立したコンポーネントとして利用可能にする。このAPIにより、フィルタのための数多くのAPIに対する必要性を低減し、ある特定のフィルタについて、遺物となったフィルタがサポートされていないシステムにおいてそのフィルタが付随する可能性のあるあらゆるフィルタのAPIにインターフェイスできるようにする必要はもはやなくなる。また、メディアプロセッサが、フィルタグラフ中のフィルタではなく、デマルチプレクサを制御しているので、このデマルチプレクサは上品にシャットダウンされうる。
特許、特許出願、および出版物を含む、本文に引用されたすべての参考文献は、参照により、そのすべてが本明細書に包含される。
本発明の原理を適用することができる多くの可能な実施例があることを考慮すると、図面と関連して本明細書で説明された実施例は、例示のためだけに意図されたものであり、発明の範囲を限定するものとして受け取られるべきではないということを認識すべきである。例えば、当業者には、ソフトウェアで示されたこの例示としての実施例の要素をハードウェアで実装し、そしてその逆も同様であり、あるいはこの例示された実施例が本発明の精神から逸脱することなく構成および細部において変更することができることが認識できよう。そのため、本明細書に記載されているような発明は、特許請求の範囲およびその均等物の範囲内に入るようなこの種のあらゆる実施態様を考慮している。
本発明がその上に備わっている例示のコンピュータシステムを一般的に示すブロック図である。 本発明がその中で動作する例示のコンピュータ環境を一般的に示すブロック図である。 本発明の教示に従うデマルチプレクサを示すブロック図である。 本発明のデマルチプレクサの状態遷移図である。 本発明の呼び出しの構成を可能にするデータ構造を示すデータ構造図である。 本発明の例示のメッセージの構成を示す簡易化したデータ構造図である。 アプリケーションがマルチメディアのシンクと折衝していない場合の本発明の教示に従うデマルチプレクサをロードし、動作するために取られるステップを示すフローチャートである。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 取り外し不可の不揮発性メモリインターフェイス
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能な不揮発性メモリインターフェイス
151 磁気ディスクドライブ
152 取り外し可能な不揮発性磁気ディスク
155 光ディスクドライブ
156 取り外し可能な不揮発性光ディスク
160 ユーザー入力インターフェイス
161 マウス
162 キーボード
163 マイクロフォン
164 タブレット
170 ネットワークインターフェイス
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 遠隔コンピュータ
181 メモリ記憶装置
185 リモートアプリケーションプログラム
190 ビデオインターフェイス
191 モニター
195 出力周辺装置インターフェイス
196 プリンタ
197 スピーカー
300 デマルチプレクサ
302 多重化ストリーム
304 要素ストリーム
306 要素ストリーム
308 多重化サンプル
310 要素サンプル
312 要素サンプル
320 プレゼンテーション
322 プレゼンテーション記述子
324 現在のプレゼンテーション
326 保留中のプレゼンテーション待ち行列
330 入力待ち行列
340 出力待ち行列
342 出力待ち行列

Claims (21)

  1. デマルチプレクサオブジェクトと通信するためのインターフェイスの公開に関するステップを実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、前記インターフェイスは、
    前記デマルチプレクサオブジェクトを構成するためのInitializeメソッドと、
    前記デマルチプレクサオブジェクトに関してアクティブプレゼンテーション記述子を動的に設定するためのSetPresentationDescriptorメソッドと、
    前記デマルチプレクサオブジェクトに対して新たな入力の多重化ストリームを提供するためのProcessInputメソッドと、
    アクティブプレゼンテーションから少なくとも一つの要素ストリームを取り出すためのProcessOutputメソッドと、
    現時点で待ち行列に入れられている入力および出力のサンプルを一括消去するためのFlushメソッドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  2. 前記インターフェイスは、前記デマルチプレクサオブジェクトに関して現時点でのアクティブプレゼンテーションのコピーを取り出すためのGetPresentationDescriptorメソッドをさらに備えたことを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  3. 前記GetPresentationDescriptorメソッドは、プレゼンテーション記述子を含むことを特徴とする請求項2に記載のコンピュータ読み取り可能媒体。
  4. 前記インターフェイスは、次の保留中のプレゼンテーションを取り出すためのGetPendingPresentationDescriptorメソッドをさらに備えることを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  5. 前記GetPendingPresentationDescriptorメソッドは、保留中のプレゼンテーション記述子を含むことを特徴とする請求項4に記載のコンピュータ読み取り可能媒体。
  6. 前記Initializeメソッドは、多重化ストリーム記述子、該多重化ストリーム記述子のための選択されたメディアタイプ、要素ストリームのメジャータイプの配列、および該メジャータイプの配列における前記メジャータイプの総数のパラメータを含むことを特徴する請求項1に記載のコンピュータ読み取り可能媒体。
  7. 前記SetPresentationDescriptorメソッドは、プレゼンテーション記述子オブジェクトに対するポインタを含むことを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  8. 前記ProcessInputメソッドは、サンプルオブジェクトに対するポインタを含むことを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  9. 前記ProcessInputメソッドは、新たなプレゼンテーションのフラグを有する戻り値をさらに含むことを特徴する請求項8に記載のコンピュータ読み取り可能媒体。
  10. 新たなプレゼンテーションのフラグは、真の値を有する場合に、
    次の保留中のプレゼンテーションを取り出すためのGetPendingPresntationDescriptorメソッドを呼び出すステップと、
    所望のストリームを選択するステップと、
    デマルチプレクサの入力待ち行列からのサンプルの処理を可能にするためのSetPresentationDescriptorメソッドを呼び出すステップと
    を実行するためのコンピュータ実行可能命令をさらに備えたことを特徴とする請求項9に記載のコンピュータ読み取り可能媒体。
  11. 前記ProcessOutputメソッドは、ストリーム識別子と、サンプルオブジェクトに対するポインタに対するポインタを含むことを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  12. 前記ProcessOutputメソッドは、出力戻り値をさらに含むことを特徴とする請求項11に記載のコンピュータ読み取り可能媒体。
  13. 前記出力戻り値は、ストリームの終わりエラーコードおよびこれ以上のデータ無しのエラーコードのひとつを含むことを特徴とする請求項12に記載のコンピュータ読み取り可能媒体。
  14. 前記インターフェイスは、データのインメモリバッファとして多重化されたデータを受け取ることを特徴とする請求項1に記載のコンピュータ読み取り可能媒体。
  15. 前記多重化されたデータは、デジタルビデオ(Digital Video)、MPEG2、ASFの少なくとも一つを有するフォーマットを有することを特徴とする請求項14に記載のコンピュータ読み取り可能媒体。
  16. デマルチプレクサでの使用のためのInitializeのデータ構造をその上に保存したコンピュータ読み取り可能媒体であって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    多重化ストリーム記述子を含む第2のフィールドと、
    多重化ストリーム記述子の選択されたメディアタイプを含む第3のフィールドと、
    要素ストリームのメジャータイプの配列を含む第4のフィールドと、
    前記メジャータイプの配列における前記メジャータイプの総数を含む第5のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  17. デマルチプレクサでの使用のためのSetPresentationDescriptorのデータ構造をその上に保存したコンピュータ読み取り可能媒体であって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    プレゼンテーション記述子を含む第2のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  18. デマルチプレクサでの使用のためのGetPresentationDescriptorのデータ構造をその上に保存したコンピュータ読み取り可能媒体あって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    プレゼンテーション記述子を含む第2のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  19. デマルチプレクサでの使用のためのGetPendingPresentationDescriptorのデータ構造をその上に保存したコンピュータ読み取り可能媒体であって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    保留中のプレゼンテーション記述子を含む第2のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  20. デマルチプレクサでの使用のためのProcessInputのデータ構造をその上に保存したコンピュータ読み取り可能媒体であって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    サンプルオブジェクトに対するポインタを含む第2のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  21. デマルチプレクサでの使用のためのProcessOutputのデータ構造をその上に保存したコンピュータ読み取り可能媒体であって、前記データ構造は、
    ヘッダーを含む第1のフィールドと、
    ストリーム識別子を含む第2のフィールドと、
    サンプルオブジェクトに対するポインタに対するポインタを含む第3のフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
JP2003299342A 2003-08-06 2003-08-22 デマルチプレクサのアプリケーションプログラムインターフェイス Expired - Fee Related JP4249569B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/635,730 US7882510B2 (en) 2003-08-06 2003-08-06 Demultiplexer application programming interface

Publications (2)

Publication Number Publication Date
JP2005056364A true JP2005056364A (ja) 2005-03-03
JP4249569B2 JP4249569B2 (ja) 2009-04-02

Family

ID=33552948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003299342A Expired - Fee Related JP4249569B2 (ja) 2003-08-06 2003-08-22 デマルチプレクサのアプリケーションプログラムインターフェイス

Country Status (8)

Country Link
US (1) US7882510B2 (ja)
EP (1) EP1505501A1 (ja)
JP (1) JP4249569B2 (ja)
KR (1) KR20050015930A (ja)
CN (1) CN1581067B (ja)
AU (1) AU2003236379A1 (ja)
CA (1) CA2438418A1 (ja)
MX (1) MXPA03007574A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006254433A (ja) * 2005-03-07 2006-09-21 Agilent Technol Inc デマルチプレクサを自動的に構成するネットワークアナライザおよび方法
JP2007164734A (ja) * 2005-12-16 2007-06-28 Matsushita Electric Ind Co Ltd ストリーム制御装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US8165449B2 (en) * 2003-10-01 2012-04-24 Microsoft Corporation DV metadata extraction
US7827554B2 (en) * 2005-06-20 2010-11-02 Microsoft Corporation Multi-thread multimedia processing
US7802005B2 (en) * 2007-03-30 2010-09-21 Motorola, Inc. Method and apparatus for configuring buffers for streaming data transfer
CN108319438B (zh) * 2017-01-16 2019-05-17 视联动力信息技术股份有限公司 一种音频数据采集的方法和装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2351002A (en) * 1941-11-18 1944-06-13 Burton Gus Emergency landing runway
US5065396A (en) * 1990-01-02 1991-11-12 At&T Bell Laboratories Inverse multiplexer and demultiplexer techniques
US5455910A (en) * 1993-01-06 1995-10-03 International Business Machines Corporation Method and system for creating a synchronized presentation from different types of media presentations
WO1994018776A2 (en) 1993-02-03 1994-08-18 Novell, Inc. Multimedia distribution system
US5576843A (en) * 1993-10-29 1996-11-19 Time Warner Entertainment Co., L.P. System and method for controlling play of multiple dialog audio tracks of a software carrier
US5583562A (en) * 1993-12-03 1996-12-10 Scientific-Atlanta, Inc. System and method for transmitting a plurality of digital services including imaging services
BR9406125A (pt) * 1993-12-18 1996-02-13 Sony Corp Suporte de armazenamento de dados e aparelho de reprodução de dados
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
JP3078215B2 (ja) * 1995-01-06 2000-08-21 ミツビシ・エレクトリック・インフォメイション・テクノロジー・センター・アメリカ・インコーポレイテッド ディスプレイ装置
EP0863509A4 (en) * 1995-11-24 2002-08-14 Toshiba Kk MULTI-LANGUAGE RECORDING MEDIUM AND RELATED REPRODUCING DEVICE
FR2743245B1 (fr) * 1995-12-29 1998-01-23 Thomson Multimedia Sa Dispositif de demultiplexage
US6172988B1 (en) * 1996-01-31 2001-01-09 Tiernan Communications, Inc. Method for universal messaging and multiplexing of video, audio, and data streams
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
EP0922360A4 (en) * 1997-04-07 1999-12-29 At & T Corp ADAPTIVE CONTROL ENABLING SYSTEM AND METHOD FOR INTERFACING WITH MPEG-CODED AUDIOVISUAL OBJECTS
RU2143726C1 (ru) 1997-07-15 1999-12-27 Козлов Михаил Кириллович Формульный процессор с командоподобными логическими управляющими элементами
US6535530B1 (en) * 1997-07-23 2003-03-18 Matsushita Electric Industrial Co., Ltd. Apparatus and method for demultiplexing multiplexed data
US6631403B1 (en) * 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
JP3593883B2 (ja) * 1998-05-15 2004-11-24 株式会社日立製作所 映像ストリーム送受信システム
US6636222B1 (en) * 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US7174560B1 (en) * 1999-02-25 2007-02-06 Sharp Laboratories Of America, Inc. Method of synchronizing events with a digital television audio-visual program
JP4362906B2 (ja) 1999-09-21 2009-11-11 ソニー株式会社 情報処理装置および方法、並びに記録媒体
CN100442393C (zh) * 1999-10-21 2008-12-10 松下电器产业株式会社 半导体存储卡的访问装置、初始化方法和半导体存储卡
KR100590185B1 (ko) * 1999-11-20 2006-06-14 삼성전자주식회사 부가정보를 포함하는 오디오/비디오데이터의 저장 및검색장치
WO2001045417A1 (en) * 1999-12-14 2001-06-21 General Instrument Corporation Dynamic configuration of input filtering parameters for an mpeg re-multiplexer
GB9930787D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for convrerting data streams
GB9930788D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for converting data streams
US7035916B1 (en) 2000-02-16 2006-04-25 Microsoft Corporation Coupling a filter graph space to a network driver space
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US7010004B2 (en) * 2001-08-03 2006-03-07 Optibase Ltd. Method for multiplexing data for packet networks
KR100436759B1 (ko) * 2001-10-16 2004-06-23 삼성전자주식회사 수신된 멀티미디어 데이터를 저장하는 버퍼의 용량을가변할 수 있는 멀티미디어 데이터 복원장치
US7116712B2 (en) * 2001-11-02 2006-10-03 Koninklijke Philips Electronics, N.V. Apparatus and method for parallel multimedia processing
TWI247295B (en) * 2002-03-09 2006-01-11 Samsung Electronics Co Ltd Reproducing method and apparatus for interactive mode using markup documents
US7246318B2 (en) * 2002-06-28 2007-07-17 Microsoft Corporation Application programming interface for utilizing multimedia data
US7269836B2 (en) * 2003-03-24 2007-09-11 International Business Machines Corporation System and method for providing multiplexing and remultiplexing of MPEG-2 streams

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006254433A (ja) * 2005-03-07 2006-09-21 Agilent Technol Inc デマルチプレクサを自動的に構成するネットワークアナライザおよび方法
JP2007164734A (ja) * 2005-12-16 2007-06-28 Matsushita Electric Ind Co Ltd ストリーム制御装置

Also Published As

Publication number Publication date
AU2003236379A1 (en) 2005-02-24
CA2438418A1 (en) 2005-02-06
JP4249569B2 (ja) 2009-04-02
CN1581067A (zh) 2005-02-16
EP1505501A1 (en) 2005-02-09
US7882510B2 (en) 2011-02-01
US20050030980A1 (en) 2005-02-10
MXPA03007574A (es) 2005-02-09
CN1581067B (zh) 2010-10-06
KR20050015930A (ko) 2005-02-21

Similar Documents

Publication Publication Date Title
RU2487395C2 (ru) Медиа-процессор для организации мультимедийных данных
US7609653B2 (en) Resolving partial media topologies
JP5005895B2 (ja) インバンド制御情報を伝送するためのストラテジー
US20040267778A1 (en) Media foundation topology application programming interface
KR20060059334A (ko) 데이타를 스트리밍하기 위한 분산 토팔로지의 해결
US7555756B2 (en) Dynamic reconfiguration of multimedia stream processing modules
US7774375B2 (en) Media foundation topology
JP4249569B2 (ja) デマルチプレクサのアプリケーションプログラムインターフェイス
US7725920B2 (en) Media foundation media sink
US20140141875A1 (en) Temporary modification for extending functionality of computer games and software applications.
US20050198623A1 (en) Managing topology changes in media applications
RU2351002C2 (ru) Программный интерфейс приложения демультиплексора
WO2016107174A1 (zh) 多媒体文件数据的处理方法及系统、播放器和客户端
US20050068976A1 (en) Data transmitting apparatus, data transmitting/receiving system, and data transmitting/receiving method
JP2005275643A (ja) コンテンツデータ処理装置及び方法
KR101051182B1 (ko) 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치
Gangadhara Distributed video encoding for wireless low-power surveillance network
WO2009130446A1 (en) Remote use of computer games and software applications
Pinto Transcodificação de conteúdos multimédia utilizando um sistema de processamento em grid

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081219

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090115

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

Free format text: PAYMENT UNTIL: 20120123

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4249569

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130123

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees