JP5194005B2 - メディアファイルを管理するためのアプリケーションプログラムインターフェース - Google Patents

メディアファイルを管理するためのアプリケーションプログラムインターフェース Download PDF

Info

Publication number
JP5194005B2
JP5194005B2 JP2009515403A JP2009515403A JP5194005B2 JP 5194005 B2 JP5194005 B2 JP 5194005B2 JP 2009515403 A JP2009515403 A JP 2009515403A JP 2009515403 A JP2009515403 A JP 2009515403A JP 5194005 B2 JP5194005 B2 JP 5194005B2
Authority
JP
Japan
Prior art keywords
file
value
virtual file
name
page
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 - Fee Related
Application number
JP2009515403A
Other languages
English (en)
Other versions
JP2009540466A (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.)
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 JP2009540466A publication Critical patent/JP2009540466A/ja
Application granted granted Critical
Publication of JP5194005B2 publication Critical patent/JP5194005B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/32Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/36Monitoring, i.e. supervising the progress of recording or reproducing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • H04N5/772Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera the recording apparatus and the television camera being placed in the same enclosure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/84Television signal recording using optical recording
    • H04N5/85Television signal recording using optical recording on discs or drums

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、メディアファイルを管理するためのアプリケーションプログラムインターフェースに関する。
パーソナルビデオレコーダやデジタルビデオレコーダなどのメディア装置を使用して、デジタルメディアコンテンツを格納および複製することができる。デジタルメディアコンテンツの例は、テレビジョン番組、ムービー、ホームビデオ、歌、イメージ、写真などを含むことができる。ケーブルプロバイダ、サテライトプロバイダ、デジタルバーサタイルディスク(DVD)プレーヤ、コンパクトディスク(CD)プレーヤ、デジタルビデオホームシステム、メディアコンテンツプロバイダなどの様々なメディアソースからインターネット接続、コンピュータファイルなどを介してデジタルメディアコンテンツを受け取ることができる。その結果として、メディア装置は、複数のファイルおよびファイルタイプを使用する様々なメディアソースから、ますます多量のメディアコンテンツを格納する必要がある可能性がある。これにより、ファイル管理操作、ファイル構造の複雑さ、および関連するコストが著しく増大する可能性がある。
したがって、上記およびその他の問題を解決するために改良型のファイル管理技法が求められる可能性がある。
この概要は、以下の発明を実施するための最良の形態でさらに説明される、単純化した形の1組の概念を紹介するために与えられるものである。この概要は、特許請求される主題の主要な特徴または不可欠な特徴を識別することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
様々な実施形態は、一般にメディアシステムを対象とすることができる。ある実施形態は、具体的にはメディアシステムのためのファイル管理技法を対象とすることができる。一実施形態では、例えば、メディア処理システムまたはサブシステムは、プロセッサ、メモリ、および通信インターフェースを含むことができる。メモリを使用して、プロセッサで実行されるメディアファイルマネージャを格納することができる。メディアファイルマネージャを使用して、複数のメディアストリームおよび/またはメディアファイルを単一の仮想ファイルに格納するなどの様々な使用シナリオのために仮想ファイル内にスペースを割り振るファイルアロケーション方式を実装することができる。
様々な実施形態は、ソフトウェアオブジェクトのソフトウェアライブラリと、アプリケーションプログラムインターフェース(API)層が仮想ファイルにアクセスし、それを管理することをサポートするための定義済みAPIコマンドとをさらに含むことができる。API層は、様々なカスタムアプリケーションがメディアファイルマネージャを使用して実装されるファイルアロケーション方式を利用することを可能にすることができる。所与の実装について望まれる通りに、API層をメディアファイルマネージャと共に、メディアファイルマネージャとは別々に、またはメディアファイルマネージャの代わりに使用することができる。
動作の際に、メディア処理システムは、1つまたは複数の通信インターフェースを介して、様々なメディアソースからメディア情報の複数のメディアストリームを受け取ることができる。メディアファイルマネージャは、名前−値対(name−value pair)の階層を使用する単一仮想ファイルを有する物理メモリに複数のメディアストリームを格納することができる。単一仮想ファイルは、仮想ファイルを格納するのに使用される物理ファイルフォーマットとは異なる論理ファイルフォーマットを有することができる。例えば、物理ファイルフォーマットは、物理メモリの非連続部分および/または非順次部分を使用して仮想ファイルの各部分を格納することができる。このようにして、単一仮想ファイルを使用して複数のメディアストリームまたはメディアファイルを格納することができ、それによってファイルの複雑さおよびファイル管理操作が低減される。他の実施形態が説明され、特許請求の範囲に記載される。
様々な実施形態は、例えばオンディスクストレージなどの任意の形態のマシン可読媒体またはコンピュータ可読媒体を使用してメディアコンテンツを格納、検索、または管理するのに使用することのできるファイルアロケーション方式をサポートするためのアプリケーションプログラムインターフェース(API)層を対象とする。ファイルアロケーション方式を使用して、様々なメディアソースから受け取った様々なタイプのメディアコンテンツを、単一仮想ファイルを含む一様なファイル構造に格納することができる。あるケースでは、仮想ファイルは、メディアコンテンツを実際に格納するのに使用される物理ファイル構造とは異なる論理ファイル構造を有することができ、それによって仮想ファイルを物理的な制約および要件から解放する。ファイルアロケーション方式は、例えばテレビジョン番組およびムービーに関連する比較的大容量のメディアコンテンツが与えられたとして、PVR応用例およびマルチメディア応用例に特に適している。しかし、ファイルアロケーション方式は非常に柔軟性および拡張性があり、必ずしもPVR応用例またはマルチメディア応用例に束縛されるわけではない。ファイルアロケーション方式を、多くの応用例および使用シナリオ向けのオンディスクストレージコンテナとして使用することができる。ファイルアロケーション方式は何らかの所与のタイプの応用例にしっかりと一体化されるわけではなく、したがって非常に拡張性があるので、大量のデータをを管理しなければならない任意の形態の現在および将来の応用例にファイルアロケーション方式を適用することができる。
様々な実施形態において、ファイルアロケーション方式は、ファイル内のスペースを管理するために、メディアファイルフォーマットのためのファイルアロケーション層を提供する。一部の実施形態において、ファイルアロケーション方式は、基本ファイルセマンティクスのサポート、ファイル保全性およびクラッシュ回復可能性のサポート、複数のライタと複数のリーダの同時サポート、旧バージョンとの後方互換性を可能にし、所与のメディアの性能要件を実施すること、および多数の名前−値対が独立に増大するのを可能にすることなどの様々な設計特徴を含む。ファイルアロケーション方式はまた、所与の実装について望まれる通りに他の設計特徴も含む。
様々な実施形態は、ファイルアロケーション層をサポートするためのAPI層を含む。API層は、ソフトウェアオブジェクトのAPIソフトウェアライブラリと、1組の定義済みAPIコマンドとを含むことができる。様々なアプリケーションプログラムは、APIコマンドを使用して、様々なソフトウェアオブジェクトを起動し、本明細書に記載のファイルアロケーション方式に従って所望のファイル管理操作を実施することができる。具体的には、ファイルアロケーションAPI層は、様々なファイルアロケーション関数、メソッド、サービス、または手続きをモデル化する。一実施形態では、例えば、API層は、仮想ファイルについてのファイルヘッダ内のシグネチャおよびバージョン、仮想ファイルに関するアロケーション統計、仮想ファイル内の名前−値対の階層(名前−値対を作成および削除する能力を含む)、仮想ファイルとしてモデル化されたショート値およびロング値、ショート値またはロング値内の範囲を0にする能力、読取りおよび書込みのためのショート値およびロング値の明示的ロッキング、および値が変化したときを示すイベントへの加入をモデル化することができる。他のファイルアロケーション関数、メソッド、サービス、または手続きをモデル化することもでき、実施形態はこの文脈に限定されない。ファイルアロケーション層をサポートするのに適した様々なAPIコマンドおよび対応するソフトウェアオブジェクトを、図8を参照しながら後で説明することができる。
ファイルアロケーション層
図1は、メディアシステム100についてのブロック図を示す。メディアシステム100は、様々な実施形態を実装するのに適した一般的システムアーキテクチャを表すことができる。メディアシステム100は複数の要素を含むことができる。要素は、一定の操作を実施するように構成された物理構造または論理構造を含むことができる。各要素は、所与の1組の設計パラメータまたは性能制約について望まれる通りに、ハードウェア、ソフトウェア、またはそれらの任意の組合せとして実装することができる。ハードウェア要素の例は、デバイス、構成要素、プロセッサ、マイクロプロセッサ、回路、回路素子(例えばトランジスタ、抵抗器、コンデンサ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むことができる。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、インターフェース、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組合せを含むことができる。図1に示されるメディアシステム100は、一定のトポロジ内に限られた数の要素を有するが、メディアシステム100は、所与の実装について望まれる通りに、代替トポロジ内により多数または少数の要素を含むことができる。実施形態はこの文脈に限定されない。
様々な実施形態において、メディア情報や制御情報などの様々なタイプの情報を通信、管理、または処理するようにメディアシステム100を構成することができる。メディア情報の例は一般に、音声情報、ビデオ情報、オーディオ情報、イメージ情報、テキスト情報、数値情報、英数シンボル、グラフィックスなどのユーザに対するコンテンツを表す任意のデータを含むことができる。制御情報は、自動化システムに対するコマンド、命令、または制御語を表す任意のデータを指すことができる。例えば、制御情報を使用してシステムを介してメディア情報をルーティングし、装置間の接続を確立することができ、所定の方式でメディア情報を処理するように装置に指令することなどができる。
様々な実施形態において、メディアシステム100は、メディアソース102−1−nを含むことができる。メディアソース102−1−nは、メディア処理装置106に対してメディア情報(例えばデジタルビデオ信号、オーディオ信号など)および/または制御情報をソーシングまたは配信することのできる任意の物理的実体または論理的実体を含むことができる。メディアソース102−1−nの例は、DVD装置、VHS装置、デジタルVHS装置、パーソナルビデオレコーダ(PVR)、デジタルビデオレコーダ(DVR)、コンピュータ、ゲーミングコンソール、CDプレーヤ、デジタルカメラ、デジタルカムコーダなどを含むことができる。メディアソース102−1−nの他の例は、ブロードキャストまたはストリーミングアナログまたはデジタルメディア情報をメディア処理装置106に提供するためのメディア配布システムを含むことができる。メディア配布システムの例は、over the air(OTA)放送システム、地上ケーブルシステム、(CATV)、衛星放送システムなどを含むことができる。メディアソース102−1−nは、所与の実装について望まれる通りに、メディア処理装置106の内部または外部でよい。
様々な実施形態において、メディアシステム100は、1つまたは複数の通信メディア104−1−mを介して1つまたは複数のメディアソース102−1−nに接続するためのメディア処理装置106を含むことができる。メディア処理装置106は、メディアソース102−1−nから受信されたメディア情報を処理するように構成された任意の論理実体または物理実体を含むことができる。様々な実施形態において、メディア処理装置106は、コンピュータ、セットトップボックス(STB)、メディアサーバ、デスクトップコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ハンドヘルドコンピュータ、ホームエンターテイメントシステム、ホームシアターシステムなどのコンピューティング装置を含むことができ、またはこうしたコンピューティング装置として実装することができる。
様々な実施形態において、メディア処理装置106はメディア処理サブシステム108を含むことができる。メディア処理サブシステム108は、メディアソース102−1−nから受け取ったメディア情報を処理するように構成されたプロセッサ、メモリ、およびアプリケーションハードウェア、および/またはソフトウェアを含むことができる。例えば、メディア情報の受信、メディア情報の格納、メディア情報の記録、メディア情報の再生、メディア情報についてのトリックモード装置の実施、メディア情報についてのシーク操作の実施などの様々なメディア管理操作を実施するようにメディア処理サブシステム108を構成することができる。メディア処理サブシステム108は、処理したメディア情報をディスプレイ110に出力することができる。ディスプレイ110は、メディアソース102−1−nから受け取ったメディア情報を表示することのできる任意のディスプレイでよい。
図2は、メディア処理装置106のより詳細なブロック図を示す。その最も基本的な構成では、メディア処理装置106は通常、少なくとも1つの処理装置202およびメモリ204を含む。処理装置202は、汎用プロセッサ、専用プロセッサ、メディアプロセッサ、コントローラ、マイクロコントローラ、組込みプロセッサ、デジタル信号プロセッサ(DSP)などの、ソフトウェアを実行することのできる任意のタイプのプロセッサとすることができる。揮発性メモリと不揮発性メモリのどちらも含む、データを格納することのできる任意のマシン可読媒体またはコンピュータ可読媒体を使用してメモリ204を実装することができる。例えば、メモリ204は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、同期DRAM(SDRAM)、静的RAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電体ポリマーメモリなどのポリマーメモリ、オーボニックメモリ、相変化または強誘電体メモリ、シリコン酸化窒化酸化シリコン(SONOS)メモリ、磁気カードまたは光カード、あるいは情報を格納するのに適した任意の他のタイプの媒体を含むことができる。図1に示されるように、メモリ204は、1つまたは複数のメディアアプリケーション206(メディアアプリケーションリーダ206aおよびメディアアプリケーションライタライタ206bを含む)、メディアファイルマネージャ208、付随するデータなどの様々なソフトウェアプログラムを格納することができる。
メディア処理装置106はまた、構成106を超える追加の特徴および/または機能も有することができる。例えば、メディア処理装置106は、取外し可能ストレージ210および取外し不能ストレージ212を含むことができ、それらは、上述のような様々なタイプのマシン可読媒体またはコンピュータ可読媒体を含むこともできる。メディア処理装置106は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの1つまたは複数の入力装置214も有することができる。ディスプレイ(例えばディスプレイ110)、スピーカ、プリンタなどの1つまたは複数の出力装置216をメディア処理装置106に含めることもできる。
メディア処理装置106は、メディア処理装置106が他の装置と通信することを可能にする1つまたは複数の通信接続218をさらに含むことができる。通信接続218は、1つまたは複数の通信インターフェース、ネットワークインターフェース、ネットワークインターフェースカード(NIC)、ラジオ、ワイヤレス送信機/受信機(トランシーバ)、有線および/またはワイヤレス通信媒体、物理コネクタなどの様々なタイプの標準通信要素を含むことができる。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送機構などの被変調データ信号で具体化し、通信媒体は任意の情報送達媒体を含む。「被変調データ信号」という用語は、その特性集合のうちの1つまたは複数を有する信号、または情報を信号中に符号化するように変化する信号を意味する。例えば、通信媒体は、有線通信媒体およびワイヤレス通信媒体を含むが、これらに限定されない。有線通信媒体の例は、ワイヤ、ケーブル、金属リード、プリント回路板(PCB)、バックプレーン、スイッチファブリック、半導体材料、撚線対ワイヤ、同軸ケーブル、光ファイバ、伝播信号などを含むことができる。ワイヤレス通信媒体の例は、音響媒体、無線周波数(RF)スペクトル媒体、赤外線媒体、および他のワイヤレス媒体を含むことができる。本明細書で使用されるマシン可読媒体およびコンピュータ可読媒体という用語は、記憶媒体と通信媒体のどちらも含むことを意味する。
一般の動作では、メディア処理装置106は、通信接続218を介して1つまたは複数のメディアソース102−1−nから様々なタイプのメディア情報を受信および格納することができる。メディア処理装置106は、例えばストレージ210、212を使用してメディア情報を格納することができる。メディアファイルマネージャ208は、名前−値対の階層を使用する単一仮想ファイルを有する物理メモリに、複数のメディアストリームからのメディア情報を格納することができる。単一仮想ファイルは、仮想ファイルを格納するのに使用される物理ファイルフォーマットとは異なる論理ファイルフォーマットを有することができる。例えば、物理ファイルフォーマットは、ストレージ210、212からメモリ非連続部分を使用して仮想ファイルの各部分を格納することができる。言い換えれば、論理ファイル構造は物理ファイル構造から切断される。このようにして、メディアファイルマネージャ208は、複数のメディアファイルを1つの仮想ファイルに併合することができ、それによってファイルの複雑さおよびファイル管理操作を低減する。一般にはメディア処理装置106、具体的にはメディアファイルマネージャ208を、図3〜8および付随する例と共にさらに説明することができる。
以下の図および付随する例を参照しながら、上記の実施形態についての動作をさらに説明することができる。図の一部は論理フローを含む場合がある。本明細書で提示されるそのような図は、特定の論理フローを含むことがあるが、論理フローは本明細書に記載の一般的機能をどのように実装することができるかについての一例を与えるものに過ぎないことを理解することができる。さらに、別段の指示がない限り、与えられる論理フローを必ずしも提示される順序で実行する必要はない。さらに、与えられる論理フローを、ハードウェア要素、プロセッサで実行されるソフトウェア要素、またはそれらの任意の組合せで実装することができる。実施形態はこの文脈に限定されない。
図3は、論理フロー300の一実施形態を示す。論理フロー300は、メディアシステム100、メディア処理装置106、および/またはメディア処理サブシステム108などの本明細書に記載の1つまたは複数の実施形態で実行される動作を表すことができる。図3に示されるように、ブロック302で、メディア情報の複数のメディアストリームを受け取ることができる。ブロック304で、複数のメディアストリームを、名前−値対(NVP)の階層を使用する単一の仮想ファイルに格納することができる。実施形態はこの文脈に限定されない。
メディア処理サブシステム108のメディアファイルマネージャ208を、仮想メディアファイルなどの仮想ファイル内のスペースを割り振るファイルアロケーション方式を実装するように構成することができる。仮想ファイルは、例えば、1つまたは複数のコンテナ内の複数のNVPを含むことができる。NVPは、名前とバイナリ値との間の特定のバインディングを表すことができる。1つの特定のタイプのコンテナは、ルートコンテナと呼ばれることがある。ルートコンテナは、所与のファイル内の最高レベルコンテナを含むことができる。
NVPは、NVP名およびNVP値を含むことができる。NVP名は、グローバル固有識別子(GUID)、ファイル名、テキスト名、文字列、または何らかの他の固有ファイル識別子を含むことができる。NVP値は、常駐値(resident value)、ショート値、またはロング値を含むいくつかのタイプの値を含むことができる。異なるタイプのNVP値は、値サイズに関する性能および効率の意味合いを有する区別を提供する。常駐値は、対応するNVP名に隣接する帯域内に格納される。ショート値は、複数のショートページを含む仮想ファイルを実装するページテーブル技法を使用して格納される。ショートページは、定義された長さのファイル内の2つのアロケーションユニットの短い方を指すことができる。ページテーブルは、ショートページに含まれるテーブルページと呼ばれるページ参照の固定長配列のツリーを使用して実装されたロングページまたはショートページの配列を含むことができる。ロング値は、ロングページに適用されるのと同一または類似のページテーブル技法を使用して格納される。ロングページは、定義された長さのファイル内の2つのアロケーションユニットの長い方を指すことができる。
様々な実施形態において、メディアファイルマネージャ208は、仮想ファイルをロングページに区分化することができ、ロングページの長さは、ファイルが作成されたときに決定される。典型的ロングページサイズは、例えば256kバイトでよい。所与のロングページをいくつかのショートページに区分化することができ、ショートページの長さも、ファイルが作成されるときに決定される。典型的なショートページサイズは、例えば4kバイトとすることができる。すべてのロングページは、ファイル保全性を保証するように一貫した方式で区分化されるべきである。新しいロングページは、ファイルの終りに割り振られる。ロングページを、SAL_File Header FreeLongPagesページテーブルから割り振ることもできる。ページテーブルが空である場合、ページがファイルの終りに割り振られる(例えばファイルが増大する場合)。まずロングページを割り振り、次いでそれからショートページを割り振ることによって新しいショートページが割り振られる。
一般には、ページサイズは様々な設計制約を有することがある。例えば、ショートページサイズおよびロングページサイズ(バイトとして表現される)は通常、2のべき乗である。別の例では、ロングページは一般にショートページよりも長い。さらに別の例では、ショートページは通常、少なくともファイルヘッダと同様の長さである。さらに別の例では、全ファイルサイズは通常、ショートページサイズの4,294,967,296倍に制限される(例えば、ショートページサイズが4kバイトである場合、16テラバイト)。
ページは、ショートページとして表現されるファイル内のそのオフセット値によって参照される。したがって、ファイル内の第1ショートページは、ファイル内の第1ロングページがそうであるのと同様に、参照0を有する。ファイル内の第2ショートページは参照1を有し、第2ロングページは、ロングページサイズをショートページサイズで割ったものに等しい参照を有する。例えば、前のシナリオでの値が与えられるとすると、第2ロングページは参照値64を有することができる(例えば256k/4k=64)。
様々な実施形態において、ファイル内の第1ロングページは常にショートページに区分化される。ファイル内の第1ショートページは通常、ファイルヘッダのみを含む。例えば、メディアファイルマネージャ208は、仮想ファイルについてのファイルヘッダを仮想ファイルの第1ショートページに格納することができる。ファイルヘッダは、シグネチャおよびバージョン、ページサイズ、ルートコンテナについてのページテーブル、ならびにファイル内の自由空間管理に関する様々なフィールドを含む。メディアファイルマネージャ208は、2つの定義済みシグネチャGUIDを使用することができる。第1シグネチャGUIDは、ファイルが本明細書に記載のフォーマットに準拠することを示す。第2シグネチャGUIDは、次の層でファイルがどのようにフォーマットされるかを示すためにアプリケーションによって使用される。2つのバージョン番号はまた、両方の層でフォーマットの後方互換性のある改訂に関しても定義される。
ルートコンテナは、仮想ファイル内の最高レベルNVPを含むショート値である。ショート値は、ショートページのページテーブルを含むことができる。こうしたNVPの値の一部は、コンテナ自体でよく、したがってNVPは、任意の深さの階層を形成することができる。ファイルヘッダの一例を以下のように示すことができる。
Figure 0005194005
NVPが、ルートコンテナまたは他の何らかのNVPの値のどちらかのコンテナに格納される。NVPは、GUIDまたはテキスト名をバイナリ値にバインドする。NVPは、コンテナの先頭で開始して、次々に格納される。一実施形態では、例えば、NVPは64ビット境界にパディングされる。コンテナ内のNVPの集合の終りは、コンテナの終りに遭遇することによって、またはGUID_NULLおよびValueSizeゼロのラベルを有するNVPによって示される。NVPのラベルをGUID_NULLに設定することによってNVPを効果的に削除することができる。NVPに関する例示的なタイプ定義は以下のように示される。
Figure 0005194005
一部の実施形態において、ValueSizeの4つの最上位ビットを使用して、所与のNVPについての情報を提供することができる。例えば、NVP_FLAG_TEXT値は、NVPがテキスト名を有し、ヘッダがTextNvpHeaderの形を取ることを示す。NVP_FLAG_CONTAINER値は、NVP値がより多くのNVPを含むことを示す。NVP_FLAG_SHORT値は、値が実際にショートページのページテーブルに格納され、ヘッダの後の値がPageTable構造であることを示す。NVP_FLAG_LONGは、値が実際にロングページのページテーブルに格納され、ヘッダの後の値がPageTable構造であることを示す。こうした定義の一例が以下のように示される。
Figure 0005194005
一部の実施形態において、ページテーブル技法を使用してNVPを格納することができる。ページテーブルは、ショートページに含まれるテーブルページと呼ばれる、ページ参照の固定長配列のツリーを使用して実装されたロングページまたはショートページの配列を含むことができる。例えば、ページテーブルからショートページを参照し、ショートページからテーブルページを参照し、テーブルページからデータページを参照して、ツリーを構築することができる。
ページテーブルは、データページの疎配列(sparse array)の形を取ることができる。ショートページのページテーブルが「ショート」値を格納するのに使用される。ロングページのページテーブルが「ロング」値を格納するのに使用される。どちらの場合も、配列は、ショートページ内の固定長テーブルの階層として実装される。各「テーブルページ」は、データページまたは他のテーブルページへのページ参照を含むことができる。いくつかの例示的ページテーブルを図4〜7を参照しながら図示および説明することができる。
図4は、第1ページテーブルの例示的実施形態を示す。図4はページテーブル400を示す。ページテーブル400についてのルート構造402は、トップページ404および整数テーブル深さ406への参照を含むことができる。ページテーブルについてのタイプ定義の一例を以下のように示すことができる。
Figure 0005194005
図4に示されるように、ページテーブル400は、ヌルトップページを有するトップページ404と、ゼロのテーブル深さ406とを有する基本ページテーブルを含む。この構成では、ページテーブル400は、完全にゼロからなる値を表す。ページテーブルは通常は長さセマンティクスを有さないことに留意されたい。例えば、ページテーブル400は、任意の数のゼロからなる値を表すことができる。
図5は、第2ページテーブルの例示的実施形態を示す。図5はページテーブル500を示す。ページテーブル500は、矢印508で示されるように単一データページ510を参照するトップページ504と、ゼロのテーブル深さ506とを有するルート構造502を有するページテーブルの一例を与える。データページ510内のデータは、表される値の中のオフセット0で生じると解釈される。
図6は第3ページテーブルの例示的実施形態を示す。図6はページテーブル600を示す。ページテーブル600は、矢印608で示されるように単一テーブルページ610を参照するトップページ604と、1のテーブル深さ606とを有するルート構造602を有するページテーブルの一例を与える。1のテーブル深さ606では、テーブルページ610は、データページまたはヌル参照を参照することのできるテーブルページ値(TPV)0からN−1を含む。図6で示されるように、例えば、ページテーブル600は、データページ614−1への参照612−1を有するTPV[0]と、データページ614−2への参照612−2を有するTPV[3]とを含み、残りのTPVはヌル参照を有する。
図7は、第4ページテーブルの例示的実施形態を示す。図7はページテーブル700を示す。ページテーブル700は、矢印708で示されるように第1テーブルページ710を参照するトップページ704と、2のテーブル深さ706とを有するルート構造702を有するページテーブルの一例を与える。2のテーブル深さ706では、第1テーブルページ710−1は、他のテーブルページまたはヌル参照を参照することのできるTPV 0からN−1を含む。図7に示されるように、例えば、ページテーブル700は、第2テーブルページ710−2への参照712を有するTPV[1]を含み、残りのTPVはヌル参照を有する。第2テーブルページ710−2も、データページまたはヌル参照を参照することのできるTPV 0からN−1を含む。例えば、第2テーブルページ710−2は、データページ718−1への参照716−1を有するTPV[0]と、データページ718−2への参照716−2を有するTPV[3]とを含むことができ、残りのTPVはヌル参照を有する。テーブルページ710−1、710−2はそれぞれテーブル深さ1を有することができることを理解することができる。ページテーブル深さに対して定義された制限はないが、3よりも深い深さは非定型である。
様々な実施形態において、メディアファイルマネージャ208は、ショートページおよびロングページの配列についてそれぞれ第1リサイクル済みページテーブルおよび第2リサイクル済みページテーブルを使用して、仮想ファイルに関する自由空間を管理することができる。メディアファイルマネージャ208は、ショートページおよびロングページについて、2つの類似しているが別々の方式で自由空間を管理することができる。リサイクル済みページの2つのページテーブルが、ショートページについて1つ、およびロングページについて1つ存在する。第1リサイクル済みページテーブルは、例えばHeader.FreeShortPagesと呼ばれることがある。第1リサイクル済みページテーブルHeader.FreeShortPagesは常に、インデックス0からインデックスHeader.FreeShortPageCountまで完全にポピュレートされる。第2リサイクル済みページテーブルは、例えばHeader.FreeLongPagesと呼ばれることがある。第2リサイクル済みページテーブルHeader.FreeLongPagesは常に、インデックス0からインデックスHeader.FreeLongPageCountまで完全にポピュレートされる。リサイクル済みページが配列の終りで追加および除去される。
あるケースでは、フリーロングページについては特に、スタックよりもキューが望ましいことがある。これは、あるシナリオでの時間とファイル位置の間の逆相関を防止するためである。ショート値のために使用されるショートページも、キューで管理されることから利点を得ることがあるが、他の目的のために使用されるショートページはスタックで保持されることがある。2つのインデックスを使用してキューを実装するのにページテーブルを使用することができる。しかし、この手法は、ファイルが循環バッファを実装するために数日間使用される場合などに、長い期間にわたって不必要に深いページテーブルを作成する傾向を有することになる。深さは大きくなり過ぎるべきではないが、1つの非ヌル参照のみを含むトップページを省略し、インデックスを必要に応じて調節することが、このシナリオを管理することになる。
Header.NextShortPageおよびHeader.NextLongPageを使用して、フレッシュページをどこに割り振るべきかを示すことができる。ショートページは、Header.NextShortPageから、Header.NextShortPageがロングページ境界に達するまで割り振られる。これが行われたとき、新しいロングページが割り振られるべきであり、新しく割り振られたロングページからショートページを割り振ることができる。Header.NextLongPageからロングページを割り振ることができる。これはまさにファイルの終りである。あるケースでは、フリーショートページをフリーロングページに併合することが望ましいことがあり、これは圧縮ツールとして有用であることがある。
一部の実施形態において、電源分断やシステム障害などの障害状態の場合に仮想ファイルを回復するために仮想ファイルを構築する間に、状態情報を回復ログに書き込むようにメディアファイルマネージャ208を配置することができる。この回復ログは、現スナップショットで確立された仮想ファイル終了後に(例えばHeader.NextLongPageで)ロングページに書き込まれる。回復ログ内のロングページは、第1ショートページ中のヘッダと、最終ショートページ中のトレーラと、第2ショートページで開始するショートデータページとからなる。回復ログは、仮想ファイルに対する回復不能な書込みと衝突しないように保証するように管理されるべきである。回復ログヘッダおよび回復ログトレーラの一例を以下のように示すことができる。
Figure 0005194005
あるページサイズ組合せについて、上述のRecoveryLogHeaderはショートページの長さを超過することがある。例えば、ページサイズを制限することによってそのようなケースを許可しないことにより、回復ログヘッダについて複数のショートページを使用することにより、かつ/またはログに対して使用されるロングページ当たりのショートページ数を制限することにより、このシナリオに関する確率を低減し、または完全に防ぐことができる。
一部の実施形態において、メディアファイルマネージャ208は、様々なキャッシュ技法を実装して性能を向上させることができる。メディアファイルマネージャ208は、仮想ファイルを1つまたは複数のロングページおよびショートページに区分化し、ロングページおよびショートページの一部をキャッシュに書き込み、キャッシュしたページに複数のスレッドでアクセスすることができる。一実施形態では、例えば、名前付き共有メモリを使用してプロセス間でキャッシュを共有することができる。キャッシュしたページを、(1)クリーン、(2)ダーティ、(3)スナップショット、および(4)スナップショットゴーストという4つの状態のうちの1つに割り当てることができる。さらに、ファイルのどの部分から来るかに応じて、あるページは回復可能であるが、他のページは回復可能ではない。例えば、すべてのロングページは通常は回復不能である。ショートページが高い頻度で書き込まれ、それに関して回復が必要ではないシナリオがあるのでない限り、ショートページは通常は回復可能である。
すべてのページについて、以下の3つの規則に従って、ページに関する初期状態を定義することができる。(1)ディスクから読み取られるすべてのページはクリーンで始まる、(2)すべての新しく作成されるページはダーティで始まる、(3)書込みのためにロックされ、書き込まれず、次いでロック解除されるクリーンページはクリーンなままとなる。ディスク手順に対するコミットは、クライアント読取り/書込み活動と同時に行われる。回復可能ページよりも高い頻度で回復不能ページをコミットすることができるが、回復可能ページがコミットされるときはいつでも回復不能ページをコミットすべきである。
回復不能ページをコミットするプロセスを以下のように実施することができる。例えば、すべての(回復不能)ダーティページがスナップショットとなる。スナップショットページが書き込まれ、コピーが作成され、コピーがダーティであり、元のものがスナップショットゴーストであるときを除いて、スナップショットページはクリーンページのように扱われる。スナップショットページおよびスナップショットゴーストページは、ファイル内のそれぞれの場所に書き込まれる。スナップショットゴーストページはフラッシュされる。スナップショットページはクリーンとなる。
すべてのページをコミットするプロセスを以下のように実施することができる。すべてのダーティページがスナップショットとなる。スナップショットページが書き込まれ、コピーが作成され、コピーがダーティであり、元のものがスナップショットゴーストであるときを除いて、スナップショットページはクリーンページのように扱われる。そのスナップショットゴーストバージョンではなく、ダーティコピーがIOのためのキャッシュの外に公開される。回復不能スナップショットページおよび回復不能スナップショットゴーストページは、ファイル内のそれぞれの場所に書き込まれる。回復可能スナップショットページおよび回復可能スナップショットゴーストページは回復ログに書き込まれる。回復可能スナップショットページおよび回復可能スナップショットゴーストページは、ファイル内のそれぞれの場所に書き込まれる。スナップショットゴーストページがフラッシュされる。スナップショットページがクリーンとなる。回復ログがフラッシュされる。
一部の実施形態において、メディアファイルマネージャ208は、衝突を防止するために様々な同時性規則を実装することができる。メディアファイルマネージャ208は、仮想ファイルを、ロックをそれぞれ有する複数の資源に区分化し、資源ロックを使用して複数のアプリケーションによって仮想ファイルからメディア情報を読み取ることができる。アロケーション層で実装される同時性規則は、様々なファイルリーダ、ファイルライタ、およびディスク入出力(I/O)間の最高度の独立性を達成するように意図される。キャッシュを使用して、リーダおよびライタ間で通信することができ、ディスクI/Oからリーダおよびライタを分離することもできる。
仮想ファイルを様々な「ファイル資源」に区分化することができる。例えば、ファイル資源は、(1)ヘッダ、(2)ショートページアロケーション、(3)ロングページアロケーション、(4)ルートコンテナ拡張、(5)ルートコンテナアクセス、(6)値拡張(例えば値当たりの)、および(7)値アクセス(例えば値当たりの)を含むことができる。各資源はそれ自体のロックを有することができる。大部分のロックは、アロケーション層に対する単一呼出しで行われ、解放される。例外は、「値アクセス」および「値拡張」である。アロケーション層APIは、アプリケーションがこうした資源をアロケーション層に多数の呼出しにわたって明示的にロックすることを可能にすべきである。様々な依存関係規則を確立して、他の資源がロックされるときどの資源を所与の消費者によってロックすることができるかを決定することができる。こうした規則は、普通ならアロケーション層をデッドロックすることになるサイクルを防止する。こうした規則はまた、コンテンツがすべてそこにある前にリーダがコンテンツを読み取ることを防止することにより、「アプリケーション層」がNVP値に対してセマンティクスを実施することを可能にする。
(1)読取りロック、(2)書込みロックという2つの方式の一方で大部分の資源をロックすることができる。ロッキング規則は以下の通りである。(1)任意の数のリーダはゼロライタと資源を共有することができ、(2)書込みロックはすべての他のロックと排他的である。
一部の例では、短い間隔についてブロック層コードによってロックが行われ、NVP、ページテーブル、アロケーションテーブルなどの一貫性が保証される。他の例では、アプリケーションの制御下で、ブロック層APIに対する呼出しによって決定される間隔にわたってロックが行われる。
読取りロックは、一連の相関読取り操作が継続するためにデータおよび当該の資源の意味的一貫性を維持しなければならない間隔にわたって、リーダによって行われる。読取りロックを行わずに読取りは試行されない。書込みロックは、一連の相関書込み操作が資源のコヒーレンシを維持するように行われるべき間隔にわたって、ライタによって行われる。書込みロックを行わずに書込みは試行されない。
ライタがファイル資源に書き込んでいる間にリーダが同じファイル資源から読み取ることを可能にするために、ライタは、所与の資源をロック中に、1組のプライベートダーティページを保持する。ライタが書込みロックを解放するプロセスでリーダにコミットするまで、リーダはこうしたダーティページを見ることはない。データは必ずしも、ライタがライタロックを解放するときに解放されない。ライタがコミットすることなくいくつかの書込みを行う(その度ごとにロックし、ロック解除する)ことは申し分ない。2つのライタによって同時に生成されたダーティページをマージするための一般的な方式がない場合、一度に単一のライタだけが許可される。ダーティページがバージョンされる場合、コミットロックを低減し、またはなくすことができる。
複数のファイル資源にわたってコヒーレンシを保証するために、アロケーション層は、コミットされた変更が順序が乱れてディスクに送られることは決してないことをリーダに対して保証すべきである。キャッシュは、このタイプの問題を低減すべきである。ページが順序が乱れてコミットされる可能性があるが、ページが適切にキャッシュ内にとどまる限り、リーダは、リーダのコンテンツを正しい順序で取得することができる。書込みがコミットされるとき、リーダが値変更の通知を受けることができるようにイベントを投じる必要があることがある。
アプリケーションプログラムインターフェース層
様々な実施形態は、上記で参照したファイルアロケーション層をサポートするために、対応する定義済みAPIコマンドと相互運用可能なソフトウェアオブジェクトのAPIソフトウェアライブラリを含むAPI層をさらに含むことができる。API層は、様々なカスタムアプリケーションが、メディアファイルマネージャ208を使用して実装されたファイルアロケーション方式を利用することを可能にすることができる。所与の実装について望まれる通りに、API層をメディアファイルマネージャ208と共に使用することができ、メディアファイルマネージャ208とは別々に使用することができ、またはメディアファイルマネージャ208の代わりに使用することができる。
一般には、APIは、他のプロセスが一緒に機能することを可能にするコンピュータプロセスまたは技法である。オペレーティングシステムとMICROSOFT WORD(登録商標)などの様々なアプリケーションとを実行するパーソナルコンピュータの普通の設定では、APIは、アプリケーションがオペレーティングシステムと通信することを可能にする。アプリケーションは、オペレーティングシステムAPIに対する呼出しを行って、オペレーティングシステムサービスを起動する。オペレーティングシステムAPIの背後にある実際のコードは、ダイナミックリンクライブラリ(DLL)の集合内に配置される。
他のソフトウェア要素と同様に、別のソフトウェア要素によってそのサービスが起動されるコンピュータ実行可能命令の形態でAPIを実装することができる。コンピュータ実行可能命令を多数の異なる形態で実施することができる。最終的には、命令は、コンピュータプロセッサで処理するためにマシン可読ビットにされる。しかし、こうしたマシン可読ビットの生成の前に、API実装を様々な形態に変換する機能の層が存在することができる。例えば、C++で実装されるAPIはまず、一連の人間が読めるコードの行のように見える。次いでAPIは、コンパイラソフトウェアにより、例えば処理装置202などのプロセッサ上で実行するためのマシン可読コードにコンパイルされる。
様々なプログラミング言語および実行環境の急増により、API実装などのプログラミングコードの元の実装と、装置上での処理のためのビットへの変形との間の機能の追加の層が必要となった。例えば、C++などの高水準言語で最初に作成されたコンピュータプログラムを、まずMICROSOFT(登録商標)Intermediate Language(MSIL)などの中間言語に変換することができる。次いで、特定の環境で実行する直前に、中間言語をJust−in−Time(JIT)コンパイラでコンパイルすることができる。これにより、複数のコンパイル済みバージョンを配布する必要なしにコードを多種多様な処理環境で実行することが可能となる。APIを実装することのできる多数のレベル、およびコードを作成、管理、および処理する技法が引き続き進化していることに鑑みて、実施形態は、どのような特定のプログラミング言語または実行環境にも限定されない。
図8は、ソフトウェアアーキテクチャ800のための論理図を示す。ソフトウェアアーキテクチャ800は、図1〜7を参照しながら説明したファイルアロケーション方式を実装および/または使用するように構成された様々なソフトウェア要素を示すことができる。図8に示されるように、ソフトウェアアーキテクチャ800は、様々なカスタムアプリケーション802−1〜p、API層804、およびAPIソフトウェアライブラリ808を含むことができる。APIソフトウェアライブラリ808は、複数のファイルオブジェクト806−1〜qを含むことができる。ソフトウェアアーキテクチャ800は、所与の実装について望まれる通りに、より多数または少数のソフトウェア要素を含むことができることを理解することができる。
カスタムアプリケーション802−1〜pは、前述のファイルアロケーション方式と対話し、またはそれを利用するように設計された任意のアプリケーションソフトウェア、アプリケーションハードウェア、またはそれらの組合せを含むことができる。カスタムアプリケーション802の一例は、メディアアプリケーション206を含むことができる。メディアアプリケーション206は、メディアアプリケーションリーダ(MAR)206aおよびメディアアプリケーションライタ(MAW)206bをさらに含むことができる。
API層804で定義される様々なAPIコマンドを使用するようにカスタムアプリケーション802−1〜pをプログラムまたは設計することができる。API層804の様々な定義済みAPIコマンド(および関連パラメータ)が、APIソフトウェアライブラリ808へのアクセスを与える。APIソフトウェアライブラリ808は、本明細書でファイルオブジェクト806−1〜qと呼ぶ様々なソフトウェアオブジェクトを含むことができる。カスタムアプリケーション802−1〜pは、1つまたは複数のAPIコマンドを使用して、1つまたは複数の対応するファイルオブジェクト806−1〜qを起動し、特定の1組のファイル関連機能を実施することができる。1組のAPIコマンドおよび対応するファイルオブジェクト806−1〜qは、後でより詳細に説明する。
様々な実施形態において、1つまたは複数のカスタムアプリケーション802−1〜pは、APIソフトウェアライブラリ808の1つまたは複数のファイルオブジェクト806−1〜qに対応し、またはそれを起動する1つまたは複数のAPIコマンドを使用して、仮想ファイルにアクセスし、仮想ファイルを操作し、あるいは仮想ファイルと対話する。ファイルオブジェクト806−1〜qと、図および付随する説明でオブジェクトとして識別される任意の他の要素とは、通常はオブジェクト指向プログラミング技法を使用して生成されるソフトウェアの離散的単位である。あるケースでは、カスタムアプリケーション802−1〜p、API層804、および/または様々なAPIコマンドを1つまたは複数のオブジェクトとして実装することができる。多数のオブジェクトタイプが業界では入手可能であり、広く使用されており、特定のオブジェクトタイプは、所与の実装について望まれる通りに変更することができる。オブジェクトによって実施される本明細書および特許請求の範囲に記載の機能を、互いに対話するように設計された複数のオブジェクトによって達成することもできることに留意されたい。実施形態はこの文脈に限定されない。
より具体的には、ファイルオブジェクト806−1〜qは、前述のメディアファイルアロケーション方式の1つまたは複数の態様を実装するのに必要な様々なファイル関連操作を実施するように構成されたソフトウェアの離散的単位を表すことができる。様々な実施形態において、様々なメディアファイルアロケーション関数、メソッド、および手続きをモデル化するようにAPI層804およびAPIソフトウェアライブラリ808を設計することができる。例えば、API層804およびAPIソフトウェアライブラリ808は、仮想ファイルに関するファイルヘッダ内のシグネチャおよびバージョンのサポート、仮想ファイルに関するアロケーション統計の定義および検索、仮想ファイル内のNVPの階層のサポート(NVPを作成および削除する能力を含む)、(仮想ファイルとしてモデル化された)ショート値およびロング値の生成、ショート値またはロング値中の範囲をゼロにする能力、読取りおよび書込みに関するショート値およびロング値の明示的ロッキング、値が変化したときを示すイベントへの加入などの機能、ならびに他の機能もモデル化およびサポートすることができる。実施形態はこの文脈に限定されない。
様々な実施形態において、1つまたは複数のファイルオブジェクト806−1〜qが特定のクラスのインスタンスを含むことができる。あるクラスは、例えばファイルを作成するサービスを提供するオブジェクトを含むことがあり、別のクラスは、ファイルからデータを読み取るオブジェクトを含むことがあり、さらに別のクラスは、ファイルにデータを書き込むオブジェクトを含むことがある。通常、プログラマは、そのオブジェクトのインスタンスを実行する前にオブジェクトのクラスを知っている。オブジェクトのクラスが、APIソフトウェアライブラリ808またはそのサブセットなどのクラスライブラリ内で検索される。そのようなライブラリは、オブジェクトのすべての利用可能なクラスのディレクトリへのアクセスを有する。クライアントアプリケーションは、クライアントアプリケーションの望むオブジェクトのクラスと、クライアントアプリケーションがそれに対するポインタを望む最初にサポートされるインターフェースとを指定するライブラリ内の関数を呼び出すことができる。次いでライブラリは、そのクラスのオブジェクトを実装するサーバアプリケーションに実行を開始させる。ライブラリはまた、開始クライアントアプリケーションに、新しくインスタンス化されたオブジェクトに関する要求されたインターフェースへのポインタを返す。次いでクライアントは、オブジェクトがサポートする任意の他のインターフェースへのポインタについてオブジェクトに尋ねることができる。
オブジェクトによってサポートされるインターフェースは一般に、オブジェクトとそのクライアントの間の契約と考えられる。オブジェクトは、インターフェースのメソッドをインターフェースが定義するようにサポートすることを保証し、クライアントアプリケーションは、メソッドを正しく起動することを保証する。したがって、オブジェクトとクライアントは、各インターフェースを明示的に識別する方式、インターフェース内のメソッドを記述または定義する共通の方式、およびインターフェースをどのように実装するかについての具体的な定義に関して合意しなければならない。したがって、オブジェクトが継承するインターフェースパラメータならびにオブジェクトが継承するクラスパラメータによってオブジェクトを記述することができる。例えば、オブジェクトのクラスがファイルにデータを書き込む関数を有する場合、クラスを継承するインスタンス並びにインスタンスで提供される任意の追加の特徴も、ファイルにデータを書き込むことができる。クラスが特定のインターフェースをサポートする場合、クラスのインスタンスは「契約」を継承し、したがってやはりインターフェースをサポートする。実施形態の様々な態様がそれによって実装されるオブジェクトは一般に、こうしたプログラミング原理と、オブジェクト、クラス、継承、およびインターフェースについての理解に準拠する。しかし、オブジェクト指向プログラミング技法に対する修正および改善が常に行われており、実施形態が特定のタイプのオブジェクトまたは何らかの特定の特徴に限定されないことは明らかである。提供されるAPIを、現在使用されており、または後に開発される任意の種類のオブジェクトによって実装することができる。
一実施形態では、例えば、API層804は、インターフェースISALクラスを含むことができる。インターフェースISALクラスによれば、API層804は、ファイル作成(file create)コマンドを受け取って仮想ファイルを作成する。ファイル作成オブジェクトは、file createコマンドに応答して、ファイルハンドルと共に仮想ファイルを作成する。ファイル作成オブジェクトは、仮想ファイルに関するファイルハンドルを呼出し側アプリケーション802に返すことができる。同様に、ファイルオープン(open file)コマンドを使用して、所与の仮想ファイルを開くことができる。インターフェースISALクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
一実施形態では、例えば、API層804はインターフェースISALFileクラスを含むことができる。インターフェースISALFileクラスに従って、API層804は、ファイル情報取得(get file information)コマンドを受け取り、get file informationコマンドに応答して仮想ファイルに関するファイル情報を返すことができる。インターフェースISALFileクラスは、ルートコンテナ取得(get root container)コマンドも含むことができ、ルートコンテナからNVPのリストを送ることができる。インターフェースISALFileクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
一実施形態では、例えば、API層804はインターフェースISALContainerReaderクラスを含むことができる。インターフェースISALContainerReaderクラスに従って、API層804は、コンテナ読取り(container read)コマンドを受け取り、コンテナからNVPを読み取ることができる。インターフェースISALContainerReaderクラスはまた、読取りロック獲得(read lock acquire)コマンド、読取りロックリリース(read lock release)コマンド、常駐値取得(get resident value)コマンド、値取得(get value)コマンド、およびコンテナ取得(get container)コマンドを含むことができる。インターフェースISALContainerReaderクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
一実施形態では、例えば、API層804はインターフェースISALContainerWriterクラスを含むことができる。インターフェースISALContainerWriterクラスに従って、API層804は、コンテナ書込み(container write)コマンドを受け取り、コンテナにNVPを書き込むことができる。インターフェースISALContainerWriterクラスはまた、書込みロック獲得(write lock acquire)コマンド、変更コミットおよび書込みロックリリース(commit changes and release write lock)コマンド、変更破棄および書込みロックリリース(discard changes and release write lock)コマンド、常駐値設定(set resident value)コマンド、値クリア(clear value)コマンド、ショート値設定(set short value)コマンド、ロング値設定(set long value)コマンド、およびコンテナ作成(create container)コマンドを含むことができる。インターフェースISALContainerWriterクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
一実施形態では、例えば、API層804はインターフェースISALVNPReaderクラスを含むことができる。インターフェースISALNVPReaderクラスに従って、API層804は、値リーダ(value reader)コマンドを受け取り、コンテナからショート値またはロング値を読取ることができる。インターフェースISALNVPReaderクラスはまた、イズロング(is long)コマンド、長さ取得(get length)コマンド、読取りロック獲得(read lock acquire)コマンド、読取りロックリリース(read lock release)コマンド、およびコピーフロム(copy from)コマンドを含むことができる。インターフェースISALNVPReaderクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
一実施形態では、例えば、API層804はインターフェースISALNVPWriterクラスを含むことができる。インターフェースISALNVPWriterクラスに従って、API層804は、値ライタコマンドを受け取り、コンテナにショート値またはロング値を書き込むことができる。インターフェースISALNVPWriterクラスはまた、書込みロック獲得(write lock acquire)コマンド、変更コミットおよび書込みロックリリース(commit changes and release write lock)コマンド、変更破棄および書込みロックリリース(discard changes and release write lock)コマンド、コピートゥ(copy to)コマンド、長さ設定(set length)コマンド、オフセットに後退(retire to offset)コマンド、および値域後退(retire range)コマンドを含むことができる。インターフェースISALNVPWriterクラスおよび付随するAPIコマンドの一例を以下のように示すことができる。
Figure 0005194005
実施形態の完全な理解を与えるために多数の特定の詳細を本明細書で説明した。しかし、こうした特定の詳細を用いずに実施形態を実施できることを当業者は理解されよう。他の例では、実施形態を不明瞭にしないように、周知の操作、構成要素、および回路を詳細には説明していない。本明細書で開示される特定の構造的詳細および機能的詳細は代表的なものであることがあり、必ずしも実施形態の範囲を限定するものではないことを理解することができる。
「一実施形態」または「実施形態」への任意の参照は、実施形態に関連して説明した特定の機能、構造、特徴が少なくとも一実施形態に含まれることを意味することにも留意されたい。本明細書の様々な場所での「一実施形態では」という語句の出現は、必ずしもすべて同一の実施形態を指すわけではない。
ある実施形態が、「結合された」および「接続された」という表現およびその派生語を使用して説明されることがある。こうした用語は互いについて同義語として意図されないことを理解されたい。例えば、ある実施形態が、2つ以上の要素が互いに直接的に物理的または電気的に接触していることを示すために、「接続された」という用語を使用して説明されることがある。別の例では、ある実施形態が、2つ以上の要素が直接的に物理的または電気的に接触していることを示すために、「結合された」という用語を使用して説明されることがある。しかし、「結合された」という用語は、2つ以上の要素が互いに直接的には接触していないが、それでも互いに協働または対話することを意味することもある。実施形態はこの文脈に限定されない。
ある実施形態を、例えば、マシンによって実行された場合に実施形態による方法および/またはオペレーションをマシンに実施させることのできる命令または1組の命令を格納することのできるマシン可読媒体または物品を使用して実装することができる。そのようなマシンは、例えば、任意の適切な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティング装置、コンピューティング装置、コンピューティングシステム、処理システム、コンピュータ、プロセッサなどを含むことができ、ハードウェアおよび/またはソフトウェアの任意の適切な組合せを使用して実装することができる。マシン可読媒体または物品は、例えば、任意の適切なタイプのメモリユニット、メモリ装置、メモリ物品、メモリ媒体、記憶デバイス、記憶物品、記憶媒体、および/または記憶ユニット、例えばメモリ、取外し可能媒体または固定媒体、消去可能媒体または消去不能媒体、書込み可能媒体または書換可能媒体、デジタル媒体またはアナログ媒体、ハードディスク、フロッピィディスク、コンパクトディスク読取り専用メモリ(CD−ROM)、追記型コンパクトディスク(CD−R)、書換可能コンパクトディスク(CD−RW)、光ディスク、磁気メディア、光磁気媒体、取外し可能メモリカードまたはディスク、様々なタイプのデジタルバーサタイルディスク(DVD)、テープ、カセットなどを含むことができる。
構造的特徴および/または方法動作に特有の術語で主題を説明したが、添付の特許請求の範囲で定義される主題は必ずしも上述の特定の特徴または動作に限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は、特許請求の範囲を実装する例示的形態として開示される。
メディアシステムの例示的実施形態を示す図である。 メディア処理装置の例示的実施形態を示す図である。 論理フローの例示的実施形態を示す図である。 第1ページテーブルの例示的実施形態を示す図である。 第2ページテーブルの例示的実施形態を示す図である。 第3ページテーブルの例示的実施形態を示す図である。 第4ページテーブルの例示的実施形態を示す図である。 アプリケーションプログラムインターフェースに関する論理図の例示的実施形態を示す図である。

Claims (20)

  1. コンピュータシステムに、
    名前−値対の階層を使用して、複数のメディアストリームを仮想ファイル内に格納するステップであって、
    前記仮想ファイルは第1の定義された長さの1または複数のロングページに分割され、
    前記仮想ファイルの少なくとも1つのロングページは、前記第1の定義された長さより短い第2の定義された長さの1または複数のショートページに分割され、
    前記名前−値対の階層は、前記ページの範囲内で、前記仮想ファイルに関する名前−値対を1または複数のコンテナ内に格納することにより形成され
    前記コンテナは、前記階層のハイレベルにおいて前記仮想ファイルに関する1または複数のハイレベルの名前−値対を格納するルートコンテナを含み、
    前記ルートコンテナに格納された少なくとも1つのハイレベルの名前−値対は、前記階層のより低いレベルにおいて前記名前−値対の1または複数の値を格納するロングページまたはショートページの配列として実装されるページテーブル構造を表す値を含む、仮想ファイル内に格納するステップと、
    ソフトウェアライブラリから、ソフトウェアオブジェクトに対応するアプリケーションプログラムインタフェースコマンドを受信するステップと、
    前記アプリケーションプログラムインタフェースコマンドに応答して、前記仮想ファイルに関する名前−値対を格納する前記仮想ファイルの少なくとも1つのコンテナにアクセスするステップと
    を実行させるコンピュータプログラムを記憶したことを特徴とするコンピュータ読取可能記憶媒体。
  2. 前記コンピュータプログラムは、前記コンピュータシステムに、ファイル作成コマンドを受信して、前記仮想ファイルを作成し、前記ファイル作成コマンドに応答してファイルハンドルを有する前記仮想ファイルを作成し、前記仮想ファイルに関する前記ファイルハンドルを送信するステップさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  3. 前記コンピュータプログラムは、前記コンピュータシステムに、ファイル情報取得コマンドを受信し、前記ファイル情報取得コマンドに応答して前記仮想ファイルに関するファイル情報を送信するステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  4. 前記コンピュータプログラムは、前記コンピュータシステムに、ルートコンテナ取得コマンドを受信し、ルートコンテナから名前−値対のリストを送信するステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  5. 前記コンピュータプログラムは、前記コンピュータシステムに、コンテナ読取りコマンドを受信し、コンテナから名前−値対を読み取るステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  6. 前記コンピュータプログラムは、前記コンピュータシステムに、コンテナ書込みコマンドを受信し、コンテナに名前−値対を書き込むステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  7. 前記コンピュータプログラムは、前記コンピュータシステムに、値リーダコマンドを受信し、コンテナからショート値またはロング値を読み取るステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  8. 前記コンピュータプログラムは、前記コンピュータシステムに、値ライタコマンドを受信し、コンテナにショート値またはロング値を書き込むステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  9. 前記コンピュータプログラムは、前記コンピュータシステムに、読取りロックコマンドを受信し、読取りのためにショート値またはロング値をロックするステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  10. 前記コンピュータプログラムは、前記コンピュータシステムに、書込みロックコマンドを受信し、書込みのためにショート値またはロング値をロックするステップをさらに実行させることを特徴とする請求項1に記載のコンピュータ読取可能記憶媒体。
  11. プロセッサおよびメモリを有するメディア処理サブシステムを含む装置であって、前記メモリが、複数のソフトウェアオブジェクトを有するアプリケーションプログラムインターフェースソフトウェアライブラリを格納し、前記プロセッサが、複数のメディアストリームからのメディアコンテンツを格納するのに使用される名前−値対の階層を含む仮想ファイルを管理するために、アプリケーションプログラムインターフェースコマンドに応答して前記ソフトウェアオブジェクトを実行し、
    前記仮想ファイルは第1の定義された長さの1または複数のロングページに分割され、
    前記仮想ファイルの少なくとも1つのロングページは、前記第1の定義された長さより短い第2の定義された長さの1または複数のショートページに分割され、
    前記名前−値対の階層は、前記ページの範囲内で、前記仮想ファイルに関する名前−値対を1または複数のコンテナ内に格納することにより形成され、
    前記コンテナは、前記階層のハイレベルにおいて前記仮想ファイルに関する1または複数のハイレベルの名前−値対を格納するルートコンテナを含み、
    前記ルートコンテナに格納された少なくとも1つのハイレベルの名前−値対は、前記階層のより低いレベルにおいて前記名前−値対の1または複数の値を格納するロングページまたはショートページの配列として実装されるページテーブル構造を表す値を含み、
    前記ソフトウェアオブジェクトの1または複数は、対応するアプリケーションプログラムインタフェースコマンドに応答して、前記仮想ファイルに関する名前−値対を格納する前記仮想ファイルの少なくとも1つのコンテナをアクセスすることを特徴とする装置。
  12. 前記アプリケーションプログラムインターフェースソフトウェアライブラリが、ファイル作成コマンドに応答するファイル作成オブジェクト、ファイル情報取得コマンドに応答するファイル情報オブジェクト、ルートコンテナ取得コマンドに応答するルートコンテナオブジェクト、コンテナ読取りコマンドに応答するコンテナ読取りオブジェクト、コンテナ書込みコマンドに応答するコンテナ書込みオブジェクト、値リーダコマンドに応答する値リーダオブジェクト、値ライタコマンドに応答する値ライタオブジェクト、読取りロックコマンドに応答する読取りロックオブジェクト、または書込みロックコマンドに応答する書込みロックオブジェクトのうちの少なくとも1つを含むことを特徴とする請求項11に記載の装置。
  13. 前記アプリケーションプログラムインターフェースソフトウェアライブラリを使用して前記仮想ファイルから名前−値対を読み取るためのメディアアプリケーションリーダを含むことを特徴とする請求項11に記載の装置。
  14. 前記アプリケーションプログラムインターフェースソフトウェアライブラリを使用して前記仮想ファイルに名前−値対を書き込むためのメディアアプリケーションライタを含むことを特徴とする請求項11に記載の装置。
  15. 前記仮想ファイルを管理するためのメディアファイルマネージャを含むことを特徴とする請求項11に記載の装置。
  16. コンピュータが実行する方法であって、
    前記コンピュータのメモリに格納されたソフトウェアライブラリからのソフトウェアオブジェクトに対応するアプリケーションプログラムインターフェースコマンドを受信するステップと、
    前記ソフトウェアオブジェクトにより前記コンピュータに格納された複数のメディアストリームに関するメディア情報を有する仮想ファイルにアクセスするステップと
    を含み、
    前記仮想ファイルは第1の定義された長さの1または複数のロングページに分割され、
    前記仮想ファイルの少なくとも1つのロングページは、前記第1の定義された長さより短い第2の定義された長さの1または複数のショートページに分割され、
    前記仮想ファイルは、前記ページの範囲内で、複数の名前−値対を1または複数のコンテナ内に格納することにより形成された名前−値対の階層を含み、
    前記コンテナは、前記階層のハイレベルにおいて前記仮想ファイルに関する1または複数のハイレベルの名前−値対を格納するルートコンテナを含み、
    前記ルートコンテナに格納された少なくとも1つのハイレベルの名前−値対は、前記階層のより低いレベルにおいて前記名前−値対の1または複数の値を格納するロングページまたはショートページの配列として実装されるページテーブル構造を表す値を含み、
    前記ソフトウェアオブジェクトは、前記アプリケーションプログラミングインタフェースコマンドに応答して、前記仮想ファイルに関する名前−値対を格納する前記仮想ファイルの少なくとも1つのコンテナをアクセスすることを特徴とする方法。
  17. 前記ソフトウェアライブラリからの第1ソフトウェアオブジェクトにより前記仮想ファイルにメディア情報を書き込むステップを含むことを特徴とする請求項16に記載の方法。
  18. 前記ソフトウェアライブラリからの第2ソフトウェアオブジェクトにより前記仮想ファイルからメディア情報を読み取るステップを含むことを特徴とする請求項17に記載の方法。
  19. 前記ソフトウェアライブラリからの第3ソフトウェアオブジェクトにより前記仮想ファイルを作成するステップを含むことを特徴とする請求項18に記載の方法。
  20. 前記ソフトウェアライブラリからの第4ソフトウェアオブジェクトにより前記名前−値対を作成するステップを含むことを特徴とする請求項19に記載の方法。
JP2009515403A 2006-06-16 2007-05-16 メディアファイルを管理するためのアプリケーションプログラムインターフェース Expired - Fee Related JP5194005B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/454,409 2006-06-16
US11/454,409 US7783686B2 (en) 2006-06-16 2006-06-16 Application program interface to manage media files
PCT/US2007/011771 WO2007149167A1 (en) 2006-06-16 2007-05-16 Application program interface to manage media files

Publications (2)

Publication Number Publication Date
JP2009540466A JP2009540466A (ja) 2009-11-19
JP5194005B2 true JP5194005B2 (ja) 2013-05-08

Family

ID=38833722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009515403A Expired - Fee Related JP5194005B2 (ja) 2006-06-16 2007-05-16 メディアファイルを管理するためのアプリケーションプログラムインターフェース

Country Status (7)

Country Link
US (1) US7783686B2 (ja)
EP (1) EP2035952A4 (ja)
JP (1) JP5194005B2 (ja)
CN (1) CN101473316B (ja)
BR (1) BRPI0711732A2 (ja)
MX (1) MX2008014857A (ja)
WO (1) WO2007149167A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234623B2 (en) * 2006-09-11 2012-07-31 The Mathworks, Inc. System and method for using stream objects to perform stream processing in a text-based computing environment
US8904400B2 (en) 2007-09-11 2014-12-02 2236008 Ontario Inc. Processing system having a partitioning component for resource partitioning
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US8209514B2 (en) * 2008-02-04 2012-06-26 Qnx Software Systems Limited Media processing system having resource partitioning
US20100083268A1 (en) * 2008-09-29 2010-04-01 Morris Robert P Method And System For Managing Access To A Resource By A Process Processing A Media Stream
US9176769B2 (en) 2012-06-29 2015-11-03 Microsoft Technology Licensing, Llc Partitioned array objects in a distributed runtime
US8924944B2 (en) 2012-06-29 2014-12-30 Microsoft Corporation Implementation of distributed methods that support generic functions
US8893155B2 (en) * 2013-03-14 2014-11-18 Microsoft Corporation Providing distributed array containers for programming objects
US9678787B2 (en) 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
US20160070656A1 (en) * 2014-09-05 2016-03-10 Qualcomm Incorporated Write protection management systems
US10691426B2 (en) * 2017-10-26 2020-06-23 Saudi Arabian Oil Company Building flexible relationships between reusable software components and data objects
EP4014120A4 (en) * 2019-08-12 2024-04-10 Audio Visual Preservation Solutions Inc FORENSIC SOURCE DETECTION SYSTEM, APPARATUS AND METHOD FOR MULTIMEDIA FILES
US11979454B2 (en) 2022-08-29 2024-05-07 Vertiv It Systems, Inc. Writeback to a virtual media mapped image in HTML5

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2014799A1 (en) * 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JPH0659953A (ja) * 1992-05-21 1994-03-04 Nec Corp 仮想ファイル入出力制御方法
WO1994029807A1 (en) * 1993-06-03 1994-12-22 Network Appliance Corporation Write anywhere file-system layout
WO1996017313A1 (en) * 1994-11-18 1996-06-06 Oracle Corporation Method and apparatus for indexing multimedia information streams
US6937729B2 (en) * 1995-04-03 2005-08-30 Scientific-Atlanta, Inc. Representing entitlements to service in a conditional access system
US5815703A (en) * 1996-06-28 1998-09-29 Microsoft Corporation Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US6208999B1 (en) * 1996-12-12 2001-03-27 Network Associates, Inc. Recoverable computer file system with a signature area containing file integrity information located in the storage blocks
US5987477A (en) * 1997-07-11 1999-11-16 International Business Machines Corporation Parallel file system and method for parallel write sharing
US5963963A (en) * 1997-07-11 1999-10-05 International Business Machines Corporation Parallel file system and buffer management arbitration
US5940838A (en) * 1997-07-11 1999-08-17 International Business Machines Corporation Parallel file system and method anticipating cache usage patterns
US5960446A (en) * 1997-07-11 1999-09-28 International Business Machines Corporation Parallel file system and method with allocation map
US6366988B1 (en) * 1997-07-18 2002-04-02 Storactive, Inc. Systems and methods for electronic data storage management
US6128713A (en) * 1997-09-24 2000-10-03 Microsoft Corporation Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
US6134602A (en) * 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6751623B1 (en) * 1998-01-26 2004-06-15 At&T Corp. Flexible interchange of coded multimedia facilitating access and streaming
US6205457B1 (en) * 1998-06-22 2001-03-20 Intel Corporation Ordered ole file structure
US6430549B1 (en) * 1998-07-17 2002-08-06 Electronic Data Systems Corporation System and method for selectivety defining access to application features
US6269254B1 (en) * 1998-09-28 2001-07-31 Motorola, Inc. Radio communications device and method with API between user application program and telephony program and method
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6324581B1 (en) * 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US6990677B1 (en) * 1999-03-18 2006-01-24 Microsoft Corporation Application program interfaces for electronic program guide data services
US6718445B1 (en) * 1999-03-26 2004-04-06 International Business Machines Corporation System and method for performing dynamic buffer management in an HFS (hierarchical file system DF/SMS)
JP3464172B2 (ja) * 1999-06-30 2003-11-05 株式会社次世代情報放送システム研究所 送信装置および送信方法、受信装置および受信方法、ならびに、送受信システムおよび送受信方法
US6499039B1 (en) * 1999-09-23 2002-12-24 Emc Corporation Reorganization of striped data during file system expansion in a data storage system
US7392481B2 (en) * 2001-07-02 2008-06-24 Sonic Solutions, A California Corporation Method and apparatus for providing content-owner control in a networked device
US6523046B2 (en) * 2000-02-25 2003-02-18 Microsoft Corporation Infrastructure and method for supporting generic multimedia metadata
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US6745207B2 (en) * 2000-06-02 2004-06-01 Hewlett-Packard Development Company, L.P. System and method for managing virtual storage
EP1168174A1 (en) * 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Automatic backup/recovery process
US6738875B1 (en) * 2000-07-31 2004-05-18 Microsoft Corporation Efficient write-watch mechanism useful for garbage collection in a computer system
US7657916B2 (en) * 2000-07-31 2010-02-02 Cisco Technology, Inc. Digital subscriber television networks with local physical storage devices and virtual storage
US7240358B2 (en) * 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
US6886033B1 (en) * 2000-12-08 2005-04-26 At&T Corp. Flexible media request identification technique
US7213075B2 (en) * 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
US7046805B2 (en) * 2001-03-20 2006-05-16 Digeo, Inc. System and method for efficiently storing and processing multimedia content
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7020663B2 (en) * 2001-05-30 2006-03-28 George M. Hay System and method for the delivery of electronic books
US7305011B2 (en) * 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7024427B2 (en) * 2001-12-19 2006-04-04 Emc Corporation Virtual file system
US7007046B2 (en) * 2002-03-19 2006-02-28 Network Appliance, Inc. Format for transmission file system information between a source and a destination
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7289716B2 (en) * 2002-06-14 2007-10-30 Microsoft Corporation Scalable programmable video recorder
US7286748B2 (en) * 2002-07-25 2007-10-23 Microsoft Corporation Sharing live advanced streaming format indexed files
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
AU2003291014A1 (en) * 2002-11-14 2004-06-15 Isilon Systems, Inc. Systems and methods for restriping files in a distributed file system
US7099881B2 (en) * 2002-12-06 2006-08-29 Stmicroelectronics, Inc. Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes
US20060031889A1 (en) * 2002-12-11 2006-02-09 Bennett James D Video processing system with simultaneous multiple outputs each with unique formats
US20040177371A1 (en) * 2003-03-07 2004-09-09 Rami Caspi System and method for integrated communications center
US7336888B2 (en) * 2003-04-24 2008-02-26 Ulead Systems, Inc. Method and apparatus for performing continuous capture during recording real-time data
EP1494130A1 (en) * 2003-06-30 2005-01-05 Sap Ag Method and system for displaying additional data fields in web based business applications
US8782020B2 (en) * 2003-11-18 2014-07-15 Oracle International Corporation Method of and system for committing a transaction to database
US7328217B2 (en) * 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
KR100550288B1 (ko) * 2003-12-02 2006-02-08 주식회사 하우리 Ext2파일 시스템의 데이터 복구방법과 그 프로그램을기록한 기록매체
US7512878B2 (en) * 2004-04-30 2009-03-31 Microsoft Corporation Modular document format
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
US7370273B2 (en) * 2004-06-30 2008-05-06 International Business Machines Corporation System and method for creating dynamic folder hierarchies
WO2006012418A2 (en) * 2004-07-21 2006-02-02 Beach Unlimited Llc Distributed storage architecture based on block map caching and vfs stackable file system modules
BRPI0519612A2 (pt) * 2004-12-31 2009-02-25 British Telecomm aparelho de comutaÇço em uma rede de comunicaÇÕes, mÉtodos de modificar aparelho de comutaÇço posicionado em uma rede de comunicaÇÕes, de comutar pacotes atravÉs de uma rede de comunicaÇÕes compreendendo uma pluralidade de aparelhos de comutaÇço interconectados, de gerar uma conexço de extremidade a extremidade atravÉs de uma rede de comunicaÇÕes compreendendo uma pluralidade de aparelhos de comutaÇço prÉ-configurados para suportar um protocolo de comunicaÇÕes sem conexço, de fornecer modos de encaminhar diferenciados para dados empacotados, de configurar aparelho de comutaÇço para receber informaÇço de gerenciamento e/ou de sinalizaÇço, rede de comunicaÇÕes, processador de plano de controle, e, esquema de comunicaÇço para configurar uma rede
US8024356B2 (en) * 2006-02-03 2011-09-20 Autodesk, Inc. Database-managed image processing

Also Published As

Publication number Publication date
BRPI0711732A2 (pt) 2011-11-29
JP2009540466A (ja) 2009-11-19
US20070294311A1 (en) 2007-12-20
MX2008014857A (es) 2008-12-01
EP2035952A1 (en) 2009-03-18
US7783686B2 (en) 2010-08-24
CN101473316B (zh) 2010-12-15
CN101473316A (zh) 2009-07-01
WO2007149167A1 (en) 2007-12-27
EP2035952A4 (en) 2017-03-22

Similar Documents

Publication Publication Date Title
JP5194005B2 (ja) メディアファイルを管理するためのアプリケーションプログラムインターフェース
US6789094B2 (en) Method and apparatus for providing extended file attributes in an extended attribute namespace
KR101376937B1 (ko) 플래시 컴포넌트 질의 시스템, 플래시 컴포넌트 질의 방법 및 컴퓨터 판독가능 저장 매체
US6353837B1 (en) Method and apparatus providing mass storage access from systems using different meta-data formats
US7860907B2 (en) Data processing
KR100868410B1 (ko) 관리화된 파일 시스템 필터 모델 및 아키텍쳐
US7996427B1 (en) Unified system for accessing metadata in disparate formats
US20110167049A1 (en) File system management techniques for computing environments and systems
US8396833B2 (en) Inode management in redirect-on-write file system
TW200408980A (en) System and method for managing file names for file system filter drivers
US20080005524A1 (en) Data processing
EP2715649A1 (en) Brokered item access for isolated applications
US7603387B2 (en) Techniques to manage media files
US20060184554A1 (en) System and method for extensible metadata architecture for digital images using in-place editing
US20060184576A1 (en) System and method for extensible metadata architecture for digital images
US20060277221A1 (en) Transactional file system with client partitioning
US7028287B2 (en) Method and apparatus for facilitating compact object headers
US20070203877A1 (en) Intermediate cache utility for file system access
Stockinger et al. Data management for grid environments
US8886656B2 (en) Data processing
CN109478181A (zh) 用于使得能够修改文件系统卷内的多个数据对象的系统和方法
US9547656B2 (en) Method and system for implementing a multilevel file system in a virtualized environment
Hwang et al. A reliable and portable multimedia file system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120330

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

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: 20130104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160208

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees