(57)【要約】  ＤＶビデオ入力ソース（１０４）は、コンピュータ（１０２）にＤＶビデオコンテンツを転送できる任意のタイプの装置または通信ネットワーク、例えばポータブル記憶媒体（１０４）（１）（磁気ディスク、メディアカード、光ディスクなど）、ＤＶビデオ録画装置（１０４）（２）（例えば、デジタルカムコーダ）、またはインターネット、企業ネットワーク、ホームネットワークなどのネットワーク（１０４）（３）などでよい。コンピュータ（１０２）は、一般に様々なソース（１０４）からビデオコンテンツを受信し、常駐するマルチメディアアーキテクチャを使用してそのビデオコンテンツを操作し、編集および再生できる様々なコンピューティング装置でよい。
2007521695.tif 000002
【特許請求の範囲】
【請求項１】
ＤＶデータストリームから抽出する追加のフレームあたりのＤＶメタデータを指定する命令を受け取るステップと、
前記命令に応答して前記ＤＶデータストリームのＤＶフレームから前記メタデータを抽出するステップと
を実行するように構成されたプロセッサ実行可能命令を備えることを特徴とするプロセッサ読取可能媒体。
【請求項２】
前記メタデータをコンテナに格納するステップと、
前記コンテナを前記ＤＶフレームのビデオサンプルに添付するステップと
を実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１に記載のプロセッサ読取可能媒体。
【請求項３】
前記命令を受け取るステップは、
抽出リストにＤＶＰａｃｋＩＤを追加するＡｄｄＰａｃｋ呼び出しを受け取るステップと、
前記抽出リストからＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＰａｃｋ呼び出しを受け取るステップと、
前記抽出リストからすべてのＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＡｌｌＰａｃｋｓ呼び出しを受け取るステップとを備えることを特徴とする請求項１に記載のプロセッサ読取可能媒体。
【請求項４】
ＧｅｔＣｏｕｎｔ呼び出しに応答して前記抽出リスト内に存在するＤＶＰａｃｋＩＤの量を示す数値を返すステップと、
インデックスを指定するＧｅｔＰａｃｋＩＤ呼び出しに応答して前記抽出リスト内の前記インデックスにあるＤＶＰａｃｋＩＤを返すステップと
を実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項３に記載のプロセッサ読取可能媒体。
【請求項５】
前記抽出するステップは、
抽出リストのＤＶＰａｃｋＩＤを決定するステップと、
前記ＤＶＰａｃｋＩＤに基づいて前記ＤＶフレーム内の前記メタデータを識別するステップとを備えることを特徴とする請求項１に記載のプロセッサ読取可能媒体。
【請求項６】
前記コンテナを管理するステップを実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項２に記載のプロセッサ読取可能媒体。
【請求項７】
前記コンテナを管理するステップは、
Ａｄｄ呼び出しに応答して前記コンテナにＤＶ＿ＭＥＴＡＤＡＴＡ構造体を追加するステップと、
Ｒｅｍｏｖｅ呼び出しに応答して前記コンテナからＤＶ＿ＭＥＴＡＤＡＴＡ構造体を削除するステップと、
ＲｅｍｏｖｅＡｌｌ呼び出しに応答して前記コンテナからすべての項目を削除するステップと、
ＧｅｔＣｏｕｎｔ呼び出しに応答して前記コンテナ内に存在する項目の量を示す数値を返すステップと、
Ｌｏｃｋ呼び出しに応答して前記コンテナをロックして排他的にアクセスするステップと、
Ｕｎｌｏｃｋ呼び出しに応答して前記コンテナのロックを解除するステップと、
ＧｅｔＦｉｒｓｔ呼び出しに応答して前記コンテナの最初のインデックスにある項目を前記コンテナから取り出すステップと、
ＧｅｔＮｅｘｔ呼び出しに応答して前記コンテナの次のインデックスにある項目を前記コンテナから取り出すステップとを備えることを特徴とする請求項６に記載のプロセッサ読取可能媒体。
【請求項８】
前記ＤＶ＿ＭＥＴＡＤＡＴＡ構造体は、アンパックされた形のＤＶメタデータパックを備えることを特徴とする請求項７に記載のプロセッサ読取可能媒体。
【請求項９】
前記ＤＶ＿ＭＥＴＡＤＡＴＡ構造体は、
前記ＤＶメタデータパックからアンパックされた２進の値と、
各２進の値に関連付けられた別々の変数名とを備えることを特徴とする請求項８に記載のプロセッサ読取可能媒体。
【請求項１０】
前記ＤＶフレームを多重分離して前記ビデオサンプルとオーディオサンプルを生成するステップ
を実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項２に記載のプロセッサ読取可能媒体。
【請求項１１】
請求項１に記載のプロセッサ読取可能媒体を備えることを特徴とするコンピュータ。
【請求項１２】
ＤＶメタデータ抽出リストを管理するステップと、
前記抽出リスト内のＤＶＰａｃｋＩＤに基づいてＤＶフレームからＤＶメタデータを抽出するステップと
を実行するように構成されたプロセッサ実行可能命令を備えることを特徴とするプロセッサ読取可能媒体。
【請求項１３】
前記ＤＶメタデータパックをＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒに格納するステップを実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１２に記載のプロセッサ読取可能媒体。
【請求項１４】
前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒを前記ＤＶフレームのＤＶサンプルに添付するステップを実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１３に記載のプロセッサ読取可能媒体。
【請求項１５】
前記ＤＶメタデータパックをＤＶパックに固有のデータ構造体にアンパックするステップを実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１３に記載のプロセッサ読取可能媒体。
【請求項１６】
前記ＤＶパックに固有のデータ構造体を前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒに格納するステップを実行するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１５に記載のプロセッサ読取可能媒体。
【請求項１７】
前記ＤＶパックに固有のデータ構造体は、
前記ＤＶメタデータパックからアンパックされた２進の値と、
各２進の値に関連付けられた別々の変数名とを備えることを特徴とする請求項１５に記載のプロセッサ読取可能媒体。
【請求項１８】
前記管理するステップは、
ＡｄｄＰａｃｋ呼び出しに応答して前記抽出リストにＤＶＰａｃｋＩＤを追加するステップと、
ＲｅｍｏｖｅＰａｃｋ呼び出しに応答して前記抽出リストからＤＶＰａｃｋＩＤを削除するステップと、
ＲｅｍｏｖｅＡｌｌＰａｃｋｓ呼び出しに応答して前記抽出リストからすべてのＤＶＰａｃｋＩＤを削除するステップと、
ＧｅｔＣｏｕｎｔ呼び出しに応答して前記抽出リスト内に存在するＤＶＰａｃｋＩＤの量を示す数値を返すステップと、
インデックスを指定するＧｅｔＰａｃｋＩＤ呼び出しに応答して前記抽出リスト内の前記インデックスにあるＤＶＰａｃｋＩＤを返すステップとを備えることを特徴とする請求項１２に記載のプロセッサ読取可能媒体。
【請求項１９】
前記抽出するステップは、
前記ＤＶＰａｃｋＩＤを含む前記ＤＶメタデータパック内のヘッダーを介して前記ＤＶフレーム内の前記ＤＶメタデータパックを識別するステップと、
前記ＤＶフレームから前記ＤＶメタデータパックを抽出（ｐｕｌｌ）するステップとを備えることを特徴とする請求項１２に記載のプロセッサ読取可能媒体。
【請求項２０】
前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒを管理するように構成されたプロセッサ実行可能命令をさらに備えることを特徴とする請求項１３に記載のプロセッサ読取可能媒体。
【請求項２１】
前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒを管理するステップは、
Ａｄｄ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒにＤＶ＿ＭＥＴＡＤＡＴＡ構造体を追加するステップと、
Ｒｅｍｏｖｅ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒからＤＶ＿ＭＥＴＡＤＡＴＡ構造体を削除するステップと、
ＲｅｍｏｖｅＡｌｌ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒからすべての項目を削除するステップと、
ＧｅｔＣｏｕｎｔ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ内に存在する項目の量を示す数値を返すステップと、
Ｌｏｃｋ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒをロックして排他的にアクセスするステップと、
Ｕｎｌｏｃｋ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒのロックを解除するステップと、
ＧｅｔＦｉｒｓｔ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒの最初のインデックスにある項目を前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒから取り出すステップと、
ＧｅｔＮｅｘｔ呼び出しに応答して前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒの次のインデックスにある項目を前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒから取り出すステップとを備えることを特徴とする請求項２０に記載のプロセッサ読取可能媒体。
【請求項２２】
請求項１２に記載のプロセッサ読取可能媒体を備えることを特徴とするコンピュータ。
【請求項２３】
ＤＶデータストリームからＤＶメタデータを抽出する命令を受け取るステップと、
前記命令に応答して前記ＤＶデータストリームから前記メタデータを抽出するステップと、
前記メタデータをコンテナに格納するステップと、
前記コンテナを前記ＤＶデータストリームのビデオサンプルに添付するステップと
を備えることを特徴とする方法。
【請求項２４】
コンテナＡＰＩ（アプリケーションプログラミングインターフェース）上のメソッド呼び出しに従って前記コンテナへのアクセスを管理するステップをさらに備えることを特徴とする請求項２３に記載の方法。
【請求項２５】
メタデータ抽出ＡＰＩ（アプリケーションプログラミングインターフェース）上のメソッド呼び出しに基づいてＤＶメタデータ抽出リスト内のＤＶＰａｃｋＩＤを管理するステップと、
前記抽出リスト内のＤＶＰａｃｋＩＤに基づいてＤＶフレームからＤＶメタデータパックを抽出するステップと
を備えることを特徴とする方法。
【請求項２６】
前記ＤＶメタデータパックをＤＶパックに固有のデータ構造体にアンパックするステップと、
前記ＤＶメタデータパックおよび前記ＤＶパックに固有のデータ構造体をコンテナに格納するステップと
をさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記コンテナを前記ＤＶフレームのビデオサンプルに添付するステップをさらに備えることを特徴とする請求項２６に記載の方法。
【請求項２８】
コンテナＡＰＩへのメソッド呼び出しに基づいて前記コンテナへのアクセスを管理するステップをさらに備えることを特徴とする請求項２７に記載の方法。
【請求項２９】
ＤＶフレームからメタデータを抽出し、前記メタデータへのアクセスを可能にするように構成されたＤＶメタデータ抽出ツールを備えることを特徴とするコンピュータ。
【請求項３０】
前記ＤＶメタデータ抽出ツールは、
アプリケーションからのメソッド呼び出しに応答してＤＶＰａｃｋＩＤの抽出リストを保守し、前記ＤＶＰａｃｋＩＤの抽出リストに基づいてＤＶパックをコンテナに格納するように構成された抽出インターフェースと、
ＤＶパックに固有の構造体を前記コンテナに格納し、前記アプリケーションからのメソッド呼び出しに応答してＤＶパックおよびＤＶパックに固有の構造体へのアクセスを管理するように構成されたコンテナインターフェースとを備えることを特徴とする請求項２９に記載のコンピュータ。
【請求項３１】
前記ＤＶメタデータ抽出ツールを含むマルチメディアアーキテクチャをさらに備えることを特徴とする請求項２９に記載のコンピュータ。
【請求項３２】
ＤＶメタデータ抽出リストを管理する手段と、
前記抽出リスト内のＤＶＰａｃｋＩＤに基づいてＤＶフレームからＤＶメタデータを抽出する手段と
を備えることを特徴とするコンピュータ。
【請求項３３】
前記ＤＶメタデータパックをＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒに格納する手段をさらに備えることを特徴とする請求項３２に記載のコンピュータ。
【請求項３４】
前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒを前記ＤＶフレームのＤＶサンプルに添付する手段をさらに備えることを特徴とする請求項３３に記載のコンピュータ。
【請求項３５】
前記ＤＶメタデータパックをＤＶパックに固有のデータ構造体にアンパックする手段と、
前記ＤＶパックに固有のデータ構造体を前記ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒに格納する手段とをさらに備えることを特徴とする請求項３３に記載のコンピュータ。
【請求項３６】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＣＯＮＴＲＯＬ＿ＣＡＳＳＥＴＴＥ＿ＩＤパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＭｉｃＥｒｒｏｒフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＭｕｌｔｉＢｙｔｅｓフィールドと、
前記パックの第２のバイトからアンパックされたデータを備えるＭｅｍｏｒｙＴｙｐｅフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＭｅｍｏｒｙＳｉｚｅＯｆＳｐａｃｅＯフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＭｅｍｏｒｙＳｉｚｅＯｆＬａｓｔＢｌａｎｋｌｎＳｐａｃｅｌフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＭｅｍｏｒｙＢａｎｋＮｕｍｂｅｒＯｆＳｐａｃｅｌフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴａｐｅＴｈｉｃｋｎｅｓｓフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項３７】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＣＯＮＴＲＯＬ＿ＴＡＰＥ＿ＬＥＮＧＴＨパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２〜４のバイトからアンパックされたデータを備えるＴａｐｅＬｅｎｇｔｈフィールドを備えることを特徴とするプロセッサ読取可能媒体。
【請求項３８】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＴＥＸＴ＿ＨＥＡＤＥＲパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２と第３のバイトからアンパックされたデータを備えるＴｏｔａｌＴｅｘｔＤａｔａフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＴｅｘｔＴｙｐｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＯｐｔｉｏｎＮｕｍｂｅｒフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＴｅｘｔＣｏｄｅフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＡｒｅａＮｕｍｂｅｒフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＴｏｐｉｃＴａｇフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項３９】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＴＡＧパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２、第３、および第４のバイトからアンパックされたデータを備えるＡｂｓｏｌｕｔｅＴｒａｃｋＮｕｍｂｅｒフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＢｌａｎｋＦｌａｇフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴｅｘｔＦｌａｇフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＴｅｍｐｏｒａｒｙＴｒｕｅフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＨｏｌｄＦｌａｇフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＴａｇＩＤフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４０】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＴＩＴＬＥ＿ＴＩＭＥ＿ＣＯＤＥパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＢｌａｎｋ  Ｆｌａｇフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｆｒａｍｅｓフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｆｒａｍｅｓフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｓｅｃｏｎｄｓフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｓｅｃｏｎｄｓフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｍｉｎｕｔｅｓフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｍｉｎｕｔｅｓフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｈｏｕｒｓフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｈｏｕｒｓフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４１】
５バイトのパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ２フィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐｌフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ４フィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ３フィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ６フィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ５フィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ８フィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＢｉｎａｒｙＧｒｏｕｐ７フィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４２】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＰＲＯＧＲＡＭ＿ＲＥＣ＿ＤＴＩＭＥパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＲｅｃｏｒｄｉｎｇＭｏｄｅフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＭｉｎｕｔｅｓフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＷｅｅｋフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＨｏｕｒｓフィールドと、
前記パックの第４と第５のバイトからアンパックされたデータを備えるＹｅａｒフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＤａｙフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＭｏｎｔｈフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４３】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＡＡＵＸ＿ＳＯＵＲＣＥパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＬｏｃｋｅｄＦｌａｇフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＡｕｄｉｏＦｒａｍｅＳｉｚｅフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＳｔｅｒｅｏＭｏｄｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＣｈａｎｎｅｌフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＰａｉｒＢｉｔフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＡｕｄｉｏＭｏｄｅフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＭｕｌｔｉＬａｎｇｕａｇｅフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＦｉｆｔｙＳｉｘｔｙフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＳｙｓｔｅｍＴｙｐｅフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＥｍｐｈａｓｉｓフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＴｉｍｅＣｏｎｓｔａｎｔフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＳａｍｐｌｉｎｇＦｒｅｑｕｅｎｃｙフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＱｕａｎｔｉｚａｔｉｏｎフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４４】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＡＡＵＸ＿ＳＯＵＲＣＥ＿ＣＯＮＴＲＯＬパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＣｏｐｙＧｅｎｅｒａｔｉｏｎＭａｎａｇｅｍｅｎｔＳｙｓｔｅｍフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＩｎｐｕｔＳｏｕｒｃｅフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＣｏｍｐｒｅｓｓｉｏｎフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＳｏｕｒｃｅＳｉｔｕａｔｉｏｎフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＲｅｃｏｒｄｉｎｇＳｔａｒｔフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＲｅｃｏｒｄｉｎｇＥｎｄフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＲｅｃｏｒｄＭｏｄｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＩｎｓｅｒｔＣｈａｎｎｅｌフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＤｉｒｅｃｔｉｏｎＦｌａｇフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＰｌａｙｂａｃｋＳｐｅｅｄフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＧｅｎｒｅＣａｔｅｇｏｒｙフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４５】
５バイトのパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＤａｙｌｉｇｈｔＳａｖｉｎｇｓＴｉｍｅフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＴｈｉｒｔｙＭｉｎｕｔｅｓＦｉａｇフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｔｉｍｅ  Ｚｏｎｅフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｔｉｍｅ  Ｚｏｎｅフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｄａｙフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｄａｙフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＷｅｅｋフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｍｏｎｔｈフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｍｏｎｔｈフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｙｅａｒフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｙｅａｒフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４６】
５バイトのパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｆｒａｍｅｓフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｆｒａｍｅｓフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｓｅｃｏｎｄｓフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｓｅｃｏｎｄｓフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｍｉｎｕｔｅｓフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｍｉｎｕｔｅｓフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  Ｈｏｕｒｓフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  Ｈｏｕｒｓフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４７】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＡＡＵＸ＿ＣＬＯＳＥＤ＿ＣＡＰＴＩＯＮパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＭａｉｎＡｕｄｉｏＬａｎｇｕａｇｅフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＭａｉｎＡｕｄｉｏＴｙｐｅフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＳｅｃｏｎｄＡｕｄｉｏＬａｎｇｕａｇｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＳｅｃｏｎｄＡｕｄｉｏＴｙｐｅフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４８】
５バイトのパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２〜５のバイトからアンパックされたデータを備えるＤａｔａフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＤａｔａＴｙｐｅフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項４９】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＶＡＵＸ＿ＳＯＵＲＣＥパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＴｅｎｓ  ｏｆ  ＴＶ  Ｃｈａｎｎｅｌフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＵｎｉｔｓ  ｏｆ  ＴＶ  Ｃｈａｎｎｅｌフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＢ／Ｗフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＥｎａｂｌｅ  Ｃｏｌｏｒフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＣｏｌｏｒ  Ｆｒａｍｅｓ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＨｕｎｄｒｅｄｓ  ｏｆ  ＴＶ  Ｃｈａｎｎｅｌフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＳｏｕｒｃｅ  Ｃｏｄｅフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備える５０／６０フィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＳｉｇｎａｌ  Ｔｙｐｅフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＴｕｎｅｒ  Ｃａｔｅｇｏｒｙフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項５０】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＶＡＵＸ＿ＳＯＵＲＣＥ＿ＣＯＮＴＲＯＬパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＣｏｐｙＧｅｎｅｒａｔｉｏｎＭａｎａｇｅｍｅｎｔＳｙｓｔｅｍフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＪｕｓｔＰｒｅｖｉｏｕｓｌｎｐｕｔフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＣｏｍｐｒｅｓｓｉｏｎフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＳｏｕｒｃｅＳｉｔｕａｔｉｏｎフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＲｅｃｏｒｄＳｔａｒｔフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＲｅｃｏｒｄＭｏｄｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＤｉｓｐｌａｙＳｅｌｅｃｔフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＦｒａｍｅＦｉｅｌｄフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＦｉｒｓｔＳｅｃｏｎｄフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＦｒａｍｅＣｈａｎｇｅフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＩｎｔｅｒｌａｃｅフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＳｔｉｌｌＦｉｅｌｄフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＳｔｉｌｌＣａｍｅｒａフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＢｒｏａｄｃａｓｔＳｙｓｔｅｍフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＧｅｎｒｅＣａｔｅｇｏｒｙフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項５１】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＶＡＵＸ＿ＣＬＯＳＥＤ＿ＣＡＰＴＩＯＮパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＦｉｒｓｔＦｉｅｌｄＦｉｒｓｔＢｙｔｅフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＦｉｒｓｔＦｉｅｌｄＳｅｃｏｎｄＢｙｔｅフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＳｅｃｏｎｄＦｉｅｌｄＦｉｒｓｔＢｙｔｅフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＳｅｃｏｎｄｅＦｉｅｌｄＳｅｃｏｎｄＢｙｔｅフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項５２】
５バイトＤＶ＿ＭＥＴＡＤＡＴＡ＿ＣＡＭＥＲＡ＿ＣＯＮＳＵＭＥＲ＿ＣＡＭＥＲＡ＿ｌパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＩｒｉｓフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＡＥＭｏｄｅフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＡＧＣフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＷＢＭｏｄｅフィールドと、
前記パックの前記第４のバイトからアンパックされたデータを備えるＷｈｉｔｅＢａｌａｎｃｅフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＦｏｃｕｓＭｏｄｅフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＦｏｃｕｓＰｏｓｉｔｉｏｎフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項５３】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＣＡＭＥＲＡ＿ＣＯＮＳＵＭＥＲ＿ＣＡＭＥＲＡ＿２パックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第２のバイトからアンパックされたデータを備えるＶｅｒｔｉｃａｌＰａｎｎｉｎｇＤｉｒｅｃｔｉｏｎフィールドと、
前記パックの前記第２のバイトからアンパックされたデータを備えるＶｅｒｔｉｃａｌＰａｎｎｉｎｇＳｐｅｅｄフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＩｍａｇｅＳｔａｂｉｌｉｚｅｒフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＨｏｒｉｚｏｎｔａｌＰａｎｎｉｎｇＤｉｒｅｃｔｉｏｎフィールドと、
前記パックの前記第３のバイトからアンパックされたデータを備えるＨｏｒｉｚｏｎｔａＰａｎｎｉｎｇＳｐｅｅｄフィールドと、
前記パックの第４のバイトからアンパックされたデータを備えるＦｏｃａｌＬｅｎｇｔｈフィールドと、
前記パックの第５のバイトからアンパックされたデータを備えるＺｏｏｍＥｎａｂｌｅフィールドと、
前記パックの前記第５のバイトからアンパックされたデータを備えるＥｌｅｃｔｒｉｃＺｏｏｍフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【請求項５４】
５バイトのＤＶ＿ＭＥＴＡＤＡＴＡ＿ＣＡＭＥＲＡ＿ＳＨＵＴＴＥＲパックを表現するデータ構造体を格納したプロセッサ読取可能媒体であって、前記データ構造体は、
前記パックの第４と第５のバイトからアンパックされたデータを備えるＳｈｕｔｔｅｒＳｐｅｅｄフィールドと、
前記パックの第２のバイトからアンパックされたデータを備えるＵｐｐｅｒＬｉｎｅＳｐｅｅｄフィールドと、
前記パックの第３のバイトからアンパックされたデータを備えるＬｏｗｅｒＬｉｎｅｒＳｐｅｅｄフィールドとを備えることを特徴とするプロセッサ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にマルチメディアデータの処理に関し、より詳細にはＤＶフォーマットのマルチメディアデータからメタデータを抽出する方法に関する。
【背景技術】
【０００２】
ＤＶは、デジタルビデオカメラ用に世界中で使用されているデジタルビデオフォーマットである。ＤＶフォーマットは、一般にＤＶコンソーシアム（ＤＶ  ｃｏｎｓｏｒｔｉｕｍ）と呼ばれる企業共同体によって作成された国際的な標準である。ＤＶは、初めはＤＶＣ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｃａｓｓｅｔｔｅ）と呼ばれており、メタル蒸着テープを使用して非常に高品質のデジタルビデオを録画する。ＤＶビデオ仕様ＩＥＣ  ６１８３４では、デジタルテープ上にらせん状のレコードを構成するデータブロックの内容、フォーマット、および録画方法を規定している。ＩＥＣ  ６１８３４では、６．３５  ｍｍ（１／４インチ）の磁気テープを使用したデジタルビデオカセット録画システムに関するカセットの一般的な仕様、変調方法、磁化および基本的なシステムデータと、録画されたカセットの互換性を提供する装置の電気的および機械的特性についても説明している。
【０００３】
ＤＶビデオ情報は、データストリームによって毎秒約２９メガビット（３．７  ＭＢｙｔｅ／ｓｅｃ）の速度で伝達される。ＤＶビデオフレームには、一般に１０個のＤＩＦシーケンスが含まれており、各シーケンスはそれぞれ８０バイトのデータを含む１５０のＤＩＦブロックで構成される。ビデオデータとオーディオデータの他に、各ＤＶビデオフレームにはビデオデータとオーディオデータに関連付けられたＤＶメタデータと呼ばれる特別なデータが含まれる。
【０００４】
ＤＶメタデータには、ＤＶフレーム内のビデオデータに関連する様々なデータが含まれていてもよい。例えば、ＤＶメタデータには、ビデオが録画された時刻と日付、ビデオが録画された時刻のカムコーダに関する様々な設定などが含まれていてもよい。ＩＥＣ  ６１８３４−４によると、ＤＶメタデータは２５６の別々の「パック」に分割される。ＤＶメタデータ用に２５６のパックが予約されているが、多くのパックは未定義である。各パックは５バイトで構成されている。各ＤＶメタデータパックの最初のバイトはパックＩＤであり、次の４バイトは２進のフィールドで構成される。
【０００５】
ＤＶフォーマットによって、個々のＤＶビデオフレームは前後のフレームのいかなるデータにも依存せずに独立することができる。例えば、同じメタデータがＤＶフレーム内で何度も繰り返される。個々のＤＶフレームに構築された冗長性とＤＶフォーマットに固有の豊富な追加データ（すなわちメタデータ）によって、ＤＶビデオは編集するために理想的なフォーマットとなる。しかし、ＤＶビデオはその独自の機能によって理想的な編集フォーマットとなっているが、様々な問題によって、現在のＤＶ編集アプリケーションはこうした機能を十分に活用できない。
【０００６】
通常のＤＶシナリオにおいて、ビデオはカムコーダで録画され、デジタル形式に変換される。デジタルテープ上のビデオデータは、カムコーダのドライブなどのデジタルテープドライブ、ＤＶＣＲ、スタンドアロンの装置などで再生できる。ＤＶデータは、ファイヤワイヤ（ｆｉｒｅｗｉｒｅ）を介してコンピュータのハードディスクに転送できる。転送のプロセスは、通常はデスクトップパーソナルコンピュータなどのコンピュータ上で動作するキャプチャドライバ、スタンドアロンのユーティリティ、または編集アプリケーションのコンポーネントによって実行される。転送プロセスの間に、ＤＶデータはＷｉｎｄｏｗｓ（登録商標）のＡＶＩやＭａｃのＱｕｉｃｋｔｉｍｅなど、コンピュータで一般的に理解されるファイル形式に「ラップ（ｗｒａｐｐｅｄ）」される。したがって、転送プロセスが終了すると、コンピュータのハードドライブ上にあるＤＶデータは標準的な編集アプリケーションが処理できるファイル形式にラップされる。Ａｄｏｂｅ（登録商標）Ｐｒｅｍｉｅｒｅ（登録商標）Ｐｒｏなどの様々な編集アプリケーションによって、リアルタイムのビデオおよびオーディオ編集ツールを使用した非線形のビデオ編集が可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ただし、ＤＶビデオフォーマットは豊富な情報を提供することによって理想的な編集フォーマットとなっているが、前述のように現在のＤＶ編集アプリケーションではこうした情報をほとんどあるいはまったく活用していない。この主な原因は、ＤＶビデオフレーム内からＤＶメタデータを抽出するのが困難なことである。ＤＶメタデータを抽出するには、現在はアプリケーション開発者が個々に必要なメタデータを抽出する専用のカスタムコードを記述する必要がある。さらに、ＤＶ編集アプリケーションで実行する抽出プロセスは、プロセッサ資源を集中的に使用するので、アプリケーションの他の編集機能のパフォーマンスに悪影響を及ぼす。こうした問題の１つの結果として、一般にＤＶメタデータはほとんどのＤＶ編集アプリケーションで利用されていない。
【０００８】
したがって、ＤＶデータストリームからＤＶメタデータを抽出する方法が必要とされている。
【課題を解決するための手段】
【０００９】
本明細書では、ＤＶデータストリームからＤＶメタデータを抽出する方法について説明する。
【００１０】
１つの実装により、ＤＶデータストリームから抽出する追加のフレームあたりのＤＶメタデータを指定する命令を受け取る。ＤＶデータストリームのＤＶフレームからメタデータが抽出される。
【００１１】
別の実装により、メタデータがコンテナに格納され、このコンテナがＤＶフレームのＤＶサンプルに添付される。コンテナは、追加のＤＶメタデータ構造体をコンテナに格納したり、コンテナに格納されたメタデータ項目を取得したり、容易に処理できる。
【００１２】
さらに別の実装により、ＤＶメタデータ構造体がコンテナに格納される。ＤＶメタデータ構造体は、ＤＶメタデータパックをアンパック（ｕｎｐａｃｋｅｄ）したものである。ＤＶメタデータ構造体には、ＤＶメタデータパックをアンパックして得られた２進の値と２進の値のそれぞれに関連付けられた個別の変数名が含まれている。
【００１３】
すべての図面を通して、同類のコンポーネントや機能を参照する場合は同じ参照番号を使用する。
【発明を実施するための最良の形態】
【００１４】
以下の説明は、ＤＶメタデータ抽出ツールを表すインターフェース、データ構造体、およびイベントの集合を対象としている。ＤＶメタデータ抽出ツールには、ＤＶデータストリームから抽出されたＤＶメタデータパックを説明するためのＡＰＩ（アプリケーションプログラミングインターフェース：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）が含まれている。抽出ＡＰＩは、ＩＭＦＥｘｔｒａｃｔＤＶＭｅｔａｄａｔａと呼ばれており、ＤＶフレームから抽出するＤＶメタデータパックを指定するメソッドと、削除するメソッドをサポートしている。抽出ＡＰＩは、抽出リスト内のＤＶメタデータパックの数を決定するメソッドと、抽出リスト内の指定されたインデックスにあるＤＶメタデータパックのＩＤを決定するメソッドもサポートしている。
【００１５】
ＤＶメタデータ抽出ツールには、ＤＶメタデータがＤＶフレームから抽出された後にＤＶメタデータを保持するコンテナを説明するＡＰＩも含まれている。コンテナＡＰＩは、ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒと呼ばれており、ＤＶ構造体をコンテナに追加するメソッドと削除するメソッド、コンテナからデータを取り出すメソッド、およびコンテナを介して繰り返すメソッドをサポートしている。ＤＶメタデータ抽出ツールには、アンパックされたＤＶメタデータパックを表現するより高レベルの構造体の集まりも含まれている。
【００１６】
ＤＶメタデータ抽出ツールは、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＣｏｒｐｏｒａｔｉｏｎのＭｅｄｉａ  Ｆｏｕｎｄａｔｉｏｎアーキテクチャのコンテキストで一般的に説明されている。ただし、本明細書においてＤＶメタデータ抽出ツールは任意の適切なマルチメディアアーキテクチャ内で使用できるように設計され、説明されていることに留意されたい。
【００１７】
例示的な環境
図１は、ＤＶメタデータの抽出に適した例示的な環境１００を示している。図１の例示的な環境１００には、コンピュータ１０２と１つまたは複数のＤＶビデオ入力ソース１０４が含まれている。
【００１８】
ＤＶビデオ入力ソース１０４は、コンピュータ１０２にＤＶビデオコンテンツを転送できる任意のタイプの装置または通信ネットワークでよい。例えば、ポータブル記憶媒体１０４（１）（磁気ディスク、メディアカード、光ディスクなど）、ＤＶビデオ録画装置１０４（２）（デジタルカムコーダなど）、またはインターネット、企業ネットワーク、ホームネットワークなどのネットワーク１０４（３）が含まれる。
【００１９】
ビデオ録画装置１０４（２）は、ライブモーション（ｌｉｖｅ−ｍｏｔｉｏｎ）のビデオと音声をＤＶフォーマットで（デジタルテープに）録画でき、例えばＤＶＣＲ、カムコーダ、またはコンピュータ１０２などのパーソナルコンピュータのデジタルテープドライブから後で再生できる様々なデジタル録画装置のいずれでもよい。ビデオ録画装置１０４（２）は、通常はｉ．ＬＩＮＫ（ＩＥＥＥ  １３９４）またはＦｉｒｅＷｉｒｅデジタルインターフェースを使用してコンピュータ１０２に直接接続できるので、ＤＶビデオコンテンツはコンピュータ１０２上で直接編集できる。
【００２０】
コンピュータ１０２は、一般的に様々なソース１０４からビデオコンテンツを受け取り、例えばＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎのＭｅｄｉａ  Ｆｏｕｎｄａｔｉｏｎアーキテクチャのように常駐するマルチメディアアーキテクチャを使用してそのビデオコンテンツを操作して編集および再生できる様々なコンピューティング装置として実装できる。コンピュータ１０２は、それ以外に通常は電子メール、カレンダー、作業編成（ｔａｓｋ  ｏｒｇａｎｉｚａｔｉｏｎ）、ワードプロセッサ、Ｗｅｂブラウザなどの一般的なコンピューティング機能を実行できる。ここで説明する実施形態において、コンピュータ１０２ではＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）ブランドのオペレーティングシステムのようなオープンプラットフォームオペレーティングシステムが動作している。コンピュータ１０２は、例えばデスクトップコンピュータ、サーバコンピュータ、ラップトップコンピュータ、または他の形のパーソナルコンピュータ（ＰＣ：ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）として実装できる。コンピュータ１０２の１つの例示的な実装について、図８を参照しながら以下でさらに詳しく説明する。
【００２１】
以下で例示的な実施形態を参照しながらさらに詳しく説明するように、コンピュータ１０２は一般にＤＶデータからＤＶメタデータを抽出できるＤＶメタデータ抽出ツールを含むマルチメディアアーキテクチャを伴って構成されている。
【００２２】
例示的な実施形態
図２は、ＤＶデータストリームからＤＶメタデータを抽出するのに適したコンピュータ１０２の例示的な実施形態を示している。ＤＶメタデータの抽出を実行できるマルチメディアアーキテクチャと関連のコンポーネントについて、本開示全体を通じて、パーソナルコンピュータで実行されるプログラムモジュールのようなコンピュータ／プロセッサ実行可能命令という一般的なコンテキストで説明する。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などがあり、特定のタスクを実行するものや、特定の抽象データ型を実装するものが含まれる。さらに、こうしたプログラムモジュールが、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含むその他のコンピュータシステム構成でも実装できることは当業者には言うまでもない。さらに、こうしたプログラムモジュールは、通信ネットワークを介してリンクするリモート処理装置でタスクを実行する分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールをローカルとリモートの両方のメモリ記憶装置内に配置してもよい。図２の現在のコンピューティング環境において、コンピュータ１０２はローカルメモリ（図示せず）内にプログラムモジュールを配置するものとして一般的に示されている。前述のように、コンピュータ１０２の１つの例示的な実装について図８を参照しながら以下でさらに詳しく説明する。
【００２３】
図２に示すＤＶメタデータ抽出ツール２００は、ＭｉｃｒｏｓｏｆｔのＭｅｄｉａ  Ｆｏｕｎｄａｔｉｏｎなどのマルチメディアアーキテクチャ２０２のコンテキスト内で動作できる。しかし、ＤＶメタデータ抽出ツール２００は、アーキテクチャ２０２などにおける動作に限定はされない。したがって、ＤＶメタデータ抽出ツール２００は、例えばスタンドアロンコンポーネントとして、あるいは別のアプリケーションプログラムのサブコンポーネントとして実装してもよい。ＤＶメタデータ抽出ツール２００について説明する前に、図２を参照しながら、マルチメディアアーキテクチャ２０２について簡単に説明する。
【００２４】
図２に示すように、マルチメディアアーキテクチャ２０２には様々なコンポーネントレイヤーが含まれている。さらに、マルチメディアアーキテクチャ２０２には、一般的にサポート対象または関連のメディアアプリケーション２０４も含まれる。このようなアプリケーション２０４は、図２ではマルチメディアアーキテクチャ２０２とは別に示されているが、アーキテクチャ２０２の一部として示されてもよい。マルチメディアアーキテクチャ２０２のコンポーネントレイヤーには、制御コンポーネントレイヤー２０６、コアコンポーネントレイヤー２０８、基本コンポーネントレイヤー２１０、開発プラットフォームレイヤー２１２、および定義レイヤー２１４が含まれている。
【００２５】
制御コンポーネントレイヤー２０８のコンポーネントには、メディアプロセッサ２３４、基本エディタ２１８、基本エンコーダ２２０、メディアセッション２２２、トポロジローダ２２４、メディアエンジン２２６、およびソースリゾルバ２２８が含まれている。これらのコンポーネントは、一般に完全な管理対象でも管理対象外でもよいタスク指向のＡＰＩ（アプリケーションプログラミングインターフェース）を構成する。制御コンポーネント２０６は、一般的にメディアを処理するために適切なコアレイヤーコンポーネント２０８をリンクするといったタスクを実行する管理機能を提供する。例えば、トポロジローダ２２４は入力されるメディアファイルのマルチメディアデータタイプを確認し、データタイプを適切にレンダリングするためにはコアレイヤーコンポーネント２０８にあるどの処理コンポーネント（すなわち２３０、２３２、２３４、２３６、２３８）をリンクして処理チェインを構成すればよいかを決定する。本開示の目的では、メディアデータタイプはＤＶデータであることに留意されたい。制御レイヤー２０６のメディアエンジンコンポーネント２２６は、トポロジローダ２２４によって組み立てられた処理コンポーネント（すなわち２３０、２３２、２３４、２３６、２３８）のチェインを使用してデータの処理を管理する。例えば、メディアエンジン２２６は、いつ再生を停止し、再生を開始し、逆方向に再生し、特定の時間にジャンプするかを制御しながら、処理チェインを経由してデータをプッシュする。
【００２６】
コアレイヤーコンポーネント２０８には、メディアソース２３０、メタデータの読み出し／書き込み２３２、ＭＵＸ／Ｄｍｕｘ  ２３４、トランスフォーム（ｔｒａｎｓｆｏｒｍｓ）２３６およびメディアシンク（ｍｅｄｉａ  ｓｉｎｋｓ）２３８が含まれる。メディアソース２３０は、一般的で明確なインターフェースを経由してマルチメディアデータを提供する。メディアソース２３０は、アクセスするビデオデータストリームを含む表現（ｐｒｅｓｅｎｔａｔｉｏｎ）を説明する。様々なマルチメディアファイルタイプまたは装置からマルチメディアデータを提供するために、メディアソースの多くの実装が存在する。しかし、本開示ではＤＶフォーマットのマルチメディアを対象とする。
【００２７】
コアレイヤー２０８のトランスフォーム２３６は、それぞれ一般的で明確なインターフェースを経由して、いくつかのタイプのマルチメディアデータの変換操作を実行する。トランスフォームの例には、コーデック（ｃｏｄｅｃｓ）、ＤＳＰ、ビデオリサイザー（ｖｉｄｅｏ  ｒｅｓｉｚｅｒｓ）、オーディオリサンプラー（ａｕｄｉｏ  ｒｅｓａｍｐｌｅｒｓ）、統計プロセッサ（ｓｔａｔｉｓｔｉｃａｌ  ｐｒｏｃｅｓｓｏｒｓ）、カラーリサンプラー（ｃｏｌｏｒ  ｒｅｓａｍｐｌｅｒｓ）などが含まれる。ＭＵＸ／Ｄｍｕｘ  ２３４（以下Ｄｍｕｘ  ２３４と呼ぶ）はコアレイヤー２０８内で独立して示されているが、これは入力としてインターリーブされたマルチメディアデータを取得し、データを個々に有用なマルチメディアデータのメディアストリームに分離するトランスフォーム２３６の１つの表現である。したがって、本開示のコンテキストにおいて、Ｄｍｕｘ  ２３４はＤＶ  Ｄｍｕｘ  ２３４であり、特に、ＤＶメディアソース２３０からＤＶフレームまたはサンプルのビデオコンポーネントとオーディオコンポーネントを分離する。
【００２８】
Ｄｍｕｘ  ２３４は、図２のマルチメディアアーキテクチャ２０２内にあり、ＤＶメタデータ抽出ツール２００を含むように図示されている。以下でさらに詳しく説明するが、Ｄｍｕｘ  ２３４はＤＶメタデータ抽出ツール２００を使用したＤＶメタデータの抽出をサポートする。ＤＶメタデータ抽出ツール２００を使用すると、ユーザは一般的にＤＶデータストリームから抽出するＤＶメタデータパックの抽出リストを作成し、管理することができる。ＤＶメタデータパックＩＤが抽出リストに追加されると、ＤＶ  Ｄｍｕｘ  ２３４はＤＶフレームからビデオとオーディオコンポーネントを分離するので、各ＤＶフレームから関連のＤＶメタデータパックを抽出する。ＤＶ  Ｄｍｕｘ  ２３４は、ＤＶメタデータパックをコンテナに格納し、コンテナを拡張属性として出力のビデオサンプルに添付する。ＤＶメタデータ抽出ツール２００は、本明細書においてＤｍｕｘ  ２３４と組み合わせて、またはＤｍｕｘ  ２３４の一部として説明しているが、コアレイヤー２０８内またはそれ以外でＤＶメタデータ抽出ツール２００を実装できる場所についての制限を意図するものではない。ＤＶメタデータ抽出ツール２００をＤｍｕｘ  ２３４内に実装するのは、Ｄｍｕｘ  ２３４の分割機能によって効率が向上するので、好ましい実施形態である。したがって、ＤＶメタデータ抽出ツール２００は、単にＤＶデータストリームにアクセスできるメディアソース２３０、ＤＭＯ（ＤｉｒｅｃｔＸ  Ｍｅｄｉａ  Ｏｂｊｅｃｔ）、またはその他の場所にあるスタンドアロンのソフトウェアコンポーネントの一部でもよい。ＤＶメタデータ抽出プロセスについては、後続の図を参照しながら以下でさらに詳しく説明する。
【００２９】
メディアシンク（シンク）２３８もコアレイヤー２０８の処理コンポーネントに含まれている。シンク２３８は、一般的に汎用の明確なインターフェースを経由してマルチメディアデータを入力として受け取る。マルチメディアデータに関する様々な機能（例えば、マルチメディアデータを所定のファイルタイプやネットワークに書き込む機能や、ビデオカードを使用してビデオモニタ上にマルチメディアデータを表示する機能）を実行するメディアシンクには、多くの実装が存在する。
【００３０】
マルチメディアアーキテクチャ２０２の基本コンポーネント２１０と開発プラットフォーム２１２は、一般にはほとんど管理対象外のＡＰＩで構成されている。基本コンポーネント２１０には、メディアコンテナ２４０、ネットワーキング２４２、ＤＲＭ  ２４４、ＭＰＥＧフォーマットサポート２４６およびオーディオ／ビデオエンジン２４８が含まれる。これらのコンポーネントは、一般にマルチメディアアーキテクチャ２０２をサポートする個別の機能を実行する。開発プラットフォーム２１２には、一般にリソース管理インフラストラクチャとサンプル、クロック、イベント、バッファといった一般的なプリミティブタイプ（ｐｒｉｍｉｔｉｖｅ  ｔｙｐｅｓ）が含まれる。マルチメディアアーキテクチャ２０２の定義レイヤーには、スキーマ、プロトコル、およびフォーマット（例えばメタデータ、装置モデル、タイプなど）に関する定義とポリシーが含まれる。
【００３１】
図３は、上で簡単に説明したＤｍｕｘ  ２３４内のＤＶメタデータ抽出ツール２００を含むコアレイヤー２０８の様々な処理コンポーネントを経由して処理されるＤＶデータの例を示している。ＤＶデータサンプル（ＤＶフレーム）３００はＤｍｕｘ  ２３４に入り、ここでビデオサンプル３０２とオーディオサンプル３０４に分離される。ビデオサンプル３０２は、処理チェインを経由してビデオコーデック３０８およびビデオレンダラー（ｒｅｎｄｅｒｅｒ）３１０などの様々な処理コンポーネントに進み、その後ビデオディスプレイ３１２上に表示される。オーディオサンプル３０４は、処理チェインを経由してオーディオレンダラー３１４などの様々な処理コンポーネントに進み、その後でオーディオスピーカー３１６によって再生される。Ｄｍｕｘ  ２３４は、ＤＶサンプル３００を分離するときに、抽出リスト（図４を参照）のＤＶメタデータパックＩＤ（ＤＶＰａｃｋＩＤ）に従ってＤＶサンプル３００内に配置されているＤＶメタデータパックも抽出する。抽出リスト内にＤＶＰａｃｋＩＤがあるＤＶメタデータパックを検索すると、Ｄｍｕｘ  ２３４はＤＶメタデータパックを抽出し、それをコンテナ３０６に格納し、コンテナ３０６を対応する出力ビデオサンプル３０２に拡張属性として添付する。
【００３２】
特定のＤＶメタデータパックのサブセットでは、ＤＶメタデータ抽出ツール２００は、ＤＶ＿ＭＥＴＡＤＥＴＡ構造体（図５を参照）と呼ばれるＤＶパックに固有のデータ構造体の拡張サポートも提供する。このような拡張サポートパックでは、コンテナ３０６にＤＶメタデータパックを格納するだけでなく、Ｄｍｕｘ  ２３４はアンパックされたＤＶ＿ＭＥＴＡＤＥＴＡ構造体もコンテナ３０６に格納する。したがって、特定の拡張サポートＤＶメタデータパックについて、ＤＶメタデータ抽出ツール２００はパックされたデータを利用可能なＤＶパックに固有のデータ構造体すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体に分解する。図５は、１つまたは複数のＤＶメタデータパック５００と、ＤＶメタデータパック５００に対応する１つまたは複数のアンパックされたＤＶ＿ＭＥＴＡＤＡＴＡ構造体５０２を備えるコンテナ３０６を示している。
【００３３】
ＩＥＣ  ６１８３４−４によると、ＤＶフォーマットには２５６のＤＶメタデータパックが存在する。２５６のＤＶメタデータパックについては、本開示において参考のために示す「インターフェース定義言語（Ｉｎｔｅｒｆａｃｅ  Ｄｅｆｉｎｉｔｉｏｎ  Ｌａｎｇｕａｇｅ）」というタイトルのセクションで後述する。ＤＶメタデータ用に２５６のパックが予約されているが、多くのパックは未定義である。様々なＤＶメタデータパックの２進のパックレイアウトは、参考としての「インターフェース定義言語」のセクションに示されている。含まれるＤＶメタデータパックの２進のレイアウトは、アンパックされたＤＶパックに固有のデータ構造体（すなわち、ＤＶ＿ＭＥＴＡＤＡＴＡ構造体）として明確にサポートされているＤＶメタデータパックのレイアウトである。したがって、「インターフェース定義言語」のセクションには、明確にサポートされているＤＶメタデータパックのアンパックされたＤＶ＿ＭＥＴＡＤＡＴＡ構造体も含まれている。一般に、各ＤＶメタデータパックはその２進のレイアウトにおいて５バイトで構成されている。各ＤＶメタデータパックの最初のバイトはＤＶＰａｃｋＩＤであり、次の４バイトは２進のフィールドで構成されている。
【００３４】
図３と４をもう一度参照すると、ＤＶメタデータ抽出ツール２００は、様々なメソッドで抽出リスト４０４を保守する抽出ＡＰＩ  ４００（アプリケーションプログラミングインターフェース）をサポートしている。ＤＶメタデータ抽出ツール２００は、以下で説明するコンテナＡＰＩ  ４０２もサポートする。図４は、ＤＶメタデータ抽出ツール２００とサポートする抽出ＡＰＩ  ４００およびコンテナＡＰＩ  ４０２を示している。図４には、様々なＤＶＰａｃｋＩＤを含む抽出リスト４０４も示されている。抽出ＡＰＩ  ４００はＩＭＦＥｘｔｒａｃｔＤＶＭｅｔａｄａｔａ  ＡＰＩと呼ばれており、サポートするメソッドには、ＡｄｄＰａｃｋ、ＲｅｍｏｖｅＰａｃｋ、ＲｅｍｏｖｅＡｌｌｐａｃｋｓ、ＧｅｔＣｏｕｎｔ、およびＧｅｔＰａｃｋが含まれる。
【００３５】
ＡｄｄＰａｃｋメソッドは、次の構文に従って、各ＤＶフレーム３００上で抽出されるＤＶパックの抽出リスト４０４に指定されたパックを追加する。
【００３６】
【表１】
2007521695.tif 000003
【００３７】
ＤＶＰａｃｋＩＤは、入力パラメータであり、ＤＶメタデータパックのＰａｃｋＩＤを指定する。これは、ＤＶＰＡＣＫＩＤ  ｅｎｕｍのメンバーである。結果として得られるＤＶ＿ＭＥＴＡＤＥＴＡ構造体において、ＰａｃｋＩＤはＤｖＭｅｔａｄａｔａ．Ｐａｃｋ［０］にある。抽出リスト４０４に追加できない唯一のパックは、ＤＶＰＡＣ＿ＮＯ＿ＩＮＦＯ（０ｘＦＦ）である（「インターフェース定義言語」のセクションを参照）。
【００３８】
ＡｄｄＰａｃｋメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。しかし、ＤＶＰａｃｋＩＤがＤＶＰＡＣＫ＿ＮＯ＿ＩＮＦＯの場合はＥ＿ＩＮＶＡＬＩＤＡＲＧが返される。他のエラーが返される場合もある。
【００３９】
例えば、編集アプリケーション２０４からのＡｄｄＰａｃｋ呼び出しによって、ＤＶＰａｃｋＩＤが抽出リスト４０４に追加される。この機能は、パック（すなわちＤＶＰａｃｋＩＤ）が既に追加されていた場合でも正常に実行される。パックは参照カウントを保持されないので、２度追加された場合でも一度削除するだけでよい。
【００４０】
ＲｅｍｏｖｅＰａｃｋメソッドは、次の構文に従って、指定されたパックを各ＤＶフレーム３００から抽出されるパックの抽出リスト４０４から削除する。
【００４１】
【表２】
2007521695.tif 000004
【００４２】
ＤＶＰａｃｋＩＤは、入力パラメータであり、ＤＶメタデータパックのＰａｃｋＩＤを指定する。これは、ＤＶＰＡＣＫＩＤ  ｅｎｕｍのメンバーである。結果として得られるＤＶ＿ＭＥＴＡＤＥＴＡ構造体において、ＰａｃｋＩＤはＤｖＭｅｔａｄａｔａ．Ｐａｃｋ［０］にある。
【００４３】
ＲｅｍｏｖｅＰａｃｋメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。パックが抽出リスト４０４内に存在しない場合は、この関数からＥ＿ＩＴＥＭ＿ＮＯＴ＿ＦＯＵＮＤが返される。他のエラーコードが返される場合もある。
【００４４】
例えば、編集アプリケーション２０４からのＲｅｍｏｖｅＰａｃｋ呼び出しにより、指定したパックが抽出リスト４０４から削除される。
【００４５】
ＲｅｍｏｖｅＡｌｌＰａｃｋｓメソッドは、次の構文に従って、Ｄｍｕｘ  ２３４が抽出するＤＶパックの抽出リスト４０４をクリアする。
【００４６】
【表３】
2007521695.tif 000005
【００４７】
ＲｅｍｏｖｅＡｌｌＰａｃｋメソッドには、入力パラメータはない。このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。他のエラーコードが返される場合もある。例えば、編集アプリケーション２０４からのＲｅｍｏｖｅＡｌｌＰａｃｋ呼び出しにより、抽出リスト４０４全体がクリアされる。
【００４８】
ＧｅｔＣｏｕｎｔメソッドは、次の構文に従って抽出リスト４０４にあるＤＶパックの数を返す。
【００４９】
【表４】
2007521695.tif 000006
【００５０】
ｐＣｏｕｎｔパラメータは出力パラメータであり、抽出リスト４０４内のパックの数を示している。このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。ＧｅｔＣｏｕｎｔの呼び出しにより、抽出リスト４０４内の項目（すなわちＤＶＰａｃｋＩＤ）の数が取得される。
【００５１】
ＧｅｔＰａｃｋＩＤメソッドは、次の構文に従って抽出リスト４０４内の指定されたインデックスにあるパックのＤＶＰａｃｋＩＤを返す。
【００５２】
【表５】
2007521695.tif 000007
【００５３】
Ｉｎｄｅｘパラメータは入力パラメータであり、目的とするＤＶＰａｃｋＩＤの抽出リスト４０４内のインデックスである。ｐＤＶＰａｃｋＩＤは出力パラメータであり、指定されたインデックスで検出された項目のＤＶＰａｃｋＩＤをオブジェクトがコピーするバイトへのポインタである。
【００５４】
ＧｅｔＰａｃｋＩＤメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。Ｉｎｄｅｘが範囲外である場合に、このメソッドはエラーコード、ＭＦ＿Ｅ＿ＩＮＶＡＬＩＤＩＮＤＥＸを返す。エラーが返された場合に、ｐＤＶＰａｃｋＩＤの値はＤＶＰＡＣＫ＿ＮＯ＿ＩＮＦＯ（０ｘＦＦ）である。
【００５５】
ＧｅｔＰａｃｋＩＤメソッドにより、呼び出し元（例えばアプリケーション２０４）は、Ｅ＿ＩＮＶＡＬＩＤＡＲＧが返されるまでインデックスを増分しながら繰り返しＧｅｔＰａｃｋＩＤメソッドを呼び出すことで、抽出される項目の全リストを取得できる。
【００５６】
前述のように、ＤＶメタデータ抽出ツール２００はコンテナＡＰＩ  ４０２（図４を参照）もサポートする。コンテナ３０６（図３）は、Ｄｍｕｘ  ２３４によって分離されたビデオサンプル３０２上のサンプル属性として配置されている。コンテナＡＰＩ  ４００は、ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ＡＰＩと呼ばれており、サポートするメソッドには、Ａｄｄ、Ｒｅｍｏｖｅ、ＲｅｍｏｖｅＡｌｌ、ＧｅｔＣｏｕｎｔ、Ｌｏｃｋ、Ｕｎｌｏｃｋ、ＧｅｔＦｉｒｓｔ、およびＧｅｔＮｅｘｔが含まれる。一般に、ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ＡＰＩはリストに属性を追加する、リストから属性を削除する、コンテナ３０６をクリアする、およびコンテナ３０６を介して繰り返すという一般的なメカニズムを提供する。
【００５７】
Ａｄｄメソッドは、次の構文に従って、ＤＶパックに固有のデータ構造体すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体をコンテナ３０６に追加する。
【００５８】
【表６】
2007521695.tif 000008
【００５９】
ｐＭｅｔａｄａｔａパラメータは入力パラメータであり、ＤＶ＿ＭＥＴＡＤＡＴＡ構造体への定数ポインタ（ｃｏｎｓｔａｎｔ  ｐｏｉｎｔｅｒ）である。ｐＭｅｔａｄａｔａ−＞ｃｂＳｉｚｅは、コンテナ３０６でメモリを割り当てるために使用され、ＤＶ＿ＭＥＴＡＤＡＴＡ構造体全体のコピーが新しく割り当てられたメモリ内に配置される。
【００６０】
ｕｔＩｎｄｅｘは出力パラメータであり、新しく追加されたＤＶ＿ＭＥＴＡＤＡＴＡ構造体のインデックスを返す。インデックスは、コンテナ３０６に別の構造体が追加されたり削除されたりした場合に変わる可能性がある。
【００６１】
Ａｄｄメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。新しい項目に十分な領域を割り当てることができなかった場合は、Ｅ＿ＯＵＴＯＦＭＥＭＯＲＹが返される。この操作は一定の時間０（ｋ）内に完了する。他のスレッドがコンテナをロックしている場合に、この操作はロックが解除されるまでブロックされる（後述のＬｏｃｋメソッドとＵｎｌｏｃｋメソッドを参照）。
【００６２】
Ｒｅｍｏｖｅメソッドは、次の構文に従ってＤＶパックに固有のデータ構造体すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体をコンテナ３０６から削除する。
【００６３】
【表７】
2007521695.tif 000009
【００６４】
ｕＩｎｄｅｘパラメータは入力パラメータであり、コンテナ３０６から削除する項目のインデックスを示す。コンテナ３０６から項目が削除されると、コンテナ３０６内に残っている項目のインデックスが変化する場合がある。
【００６５】
このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。また、インデックスに対応する項目が見つからない場合は、Ｅ＿ＩＮＶＡＬＩＤＡＲＧが返される。これにはコンテナ３０６が空の場合も含まれる。この操作は、線形の時間０（ｎ）で完了する。ただし、ｎはリストに格納されている項目の数である。他のスレッドがコンテナをロックしている場合に、この操作はロックが解除されるまでブロックされる（後述のＬｏｃｋメソッドおよびＵｎｌｏｃｋメソッドを参照）。
【００６６】
ＲｅｍｏｖｅＡｌｌメソッドは、次の構文に従ってコンテナ３０６からすべての項目（すなわちＤＶメタデータパックおよびＤＶパックに固有のデータ構造体）をクリアする。
【００６７】
【表８】
2007521695.tif 000010
【００６８】
ＲｅｍｏｖｅＡｌｌメソッドに入力するパラメータはない。このメソッドが正常に実行された場合はＳ＿ＯＫが返され、コンテナ３０６には項目が存在しなくなる。ただし、これに続いて必ずしもメモリが解放されるわけではない。コンテナ３０６には、小規模な割り当ての繰り返しを避けるために、プールスキーマ（ｐｏｏｌｉｎｇ  ｓｃｈｅｍｅ）を実装してもよい。この操作は、線形の時間０（ｎ）で完了する。ただし、ｎはコンテナ３０６内の項目の数である。他のスレッドがロックを取得している場合に、この操作はロックが解除されるまでブロックされる（後述のＬｏｃｋメソッドおよびＵｎｌｏｃｋメソッドを参照）。
【００６９】
ＧｅｔＣｏｕｎｔメソッドは、以下の構文に従ってコンテナ３０６内の項目の数を返す。
【００７０】
【表９】
2007521695.tif 000011
【００７１】
ｐｕＣｏｕｎｔパラメータは、出力パラメータであり、現在コンテナ３０６に含まれている項目の数を返す。このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。
【００７２】
この操作は一定の時間０（ｋ）内に完了する。返された数は呼び出しが行われた時点でのみ有効である。オブジェクトは、他のスレッドによって追加または削除される可能性がある。オブジェクトをロックすることで、ロックを解除するまで他のスレッドが項目を追加および削除するのを防ぐことができる（後述のＬｏｃｋメソッドとＵｎｌｏｃｋメソッドを参照）。
【００７３】
Ｌｏｃｋメソッドは、コンテナ３０６をロックして排他的にアクセスする場合に使用する。このメソッドを使用すると、ロックの所有者が項目を追加または削除しない限り、コンテナ３０６を繰り返し処理でき、返されたＤＶ＿ＭＥＴＡＤＡＴＡ構造体へのポインタが有効であることが保証される。このメソッドの構文は以下のとおりである。
【００７４】
【表１０】
2007521695.tif 000012
【００７５】
Ｌｏｃｋメソッドには入力パラメータはない。このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。他のエラーコードが返される場合もある。Ｌｏｃｋが利用できない場合、ロックを取得できるまで呼び出しがブロックされる。
【００７６】
Ｕｎｌｏｃｋメソッドは、次の構文に従ってＬｏｃｋメソッドで取得したロックを解除する。
【００７７】
【表１１】
2007521695.tif 000013
【００７８】
ＵｎＬｏｃｋメソッドには入力パラメータはない。このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。他のエラーコードが返される場合もある。
【００７９】
ＧｅｔＦｉｒｓｔメソッドは、次の構文に従ってコンテナ３０６の先頭から繰り返しを開始する。
【００８０】
【表１２】
2007521695.tif 000014
【００８１】
ｐｕＩｎｄｅｘパラメータは出力パラメータであり、コンテナ３０６から取り出す項目のインデックスを指定する。ｐｐＭｅｔａｄａｔａパラメータは、出力パラメータであり、メタデータを含むオブジェクトの内部データ構造体へのポインタを指定する。項目がコンテナ３０６に追加またはコンテナから削除された場合に、このポインタは無効になる場合がある。
【００８２】
このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。インデックスが範囲外であるかまたは最後のＧｅｔＦｉｒｓｔ（）の呼び出しの後、項目がコンテナ３０６に追加またはコンテナから削除された場合に、メソッドはＥ＿ＩＮＶＡＬＩＤＡＲＧを返すこともある。オブジェクトがロックされていない場合に、メソッドはＭＦ＿Ｅ＿ＩＮＶＡＬＩＤＲＥＱＵＥＳＴを返す。Ｌｏｃｋメソッドを呼び出すことにより、リストを繰り返し処理する間に、他のスレッドによって項目がコンテナ３０６に追加されないまたはコンテナから削除されないことが保証される。
【００８３】
ＧｅｔＮｅｘｔメソッドは、次の構文に従ってコンテナ３０６の各項目について繰り返しを行う。
【００８４】
【表１３】
2007521695.tif 000015
【００８５】
ｐｕＩｎｄｅｘパラメータは出力パラメータであり、コンテナ３０６から取り出す項目のインデックスを指定する。ｐｐＭｅｔａｄａｔａパラメータは、出力パラメータであり、メタデータを含むオブジェクトの内部データ構造体へのポインタを指定する。項目がコンテナ３０６に追加またはコンテナから削除された場合に、このポインタは無効になる場合がある。
【００８６】
このメソッドが正常に実行された場合は、Ｓ＿ＯＫが返される。インデックスが範囲外であるかまたは最後のＧｅｔＦｉｒｓｔ（）の呼び出しの後で項目が３０６に追加またはコンテナから削除された場合に、メソッドはＥ＿ＩＮＶＡＬＩＤＡＲＧを返すことがある。オブジェクトがロックされていない場合に、メソッドはＭＦ＿Ｅ＿ＩＮＶＡＬＩＤＲＥＱＵＥＳＴを返す。Ｌｏｃｋメソッドを呼び出すことにより、リストを繰り返し処理する間に他のスレッドによって項目がコンテナ３０６に追加されないまたはコンテナから削除されないことが保証される。
【００８７】
例示的な方法
ここで、ＤＶデータストリームからＤＶメタデータを抽出する例示的な方法について、基本的に図６〜７の流れ図を参照しながら説明する。本方法は、一般に図２〜５に関連して前述した例示的な実施形態に適用される。ここで説明する方法のエレメントは、例えばＡＳＩＣ上のハードウェア論理ブロックやプロセッサ読取可能媒体上で定義されたプロセッサ読取可能命令を含む適切な手段のいずれによっても実行できる。
【００８８】
本明細書で使用する「プロセッサ読取可能媒体」は、プロセッサによって使用または実行する命令を保存、格納、通信、伝搬、転送できる任意の手段でよい。プロセッサ読取可能媒体は、例えば電子、磁気、光、電磁気、赤外線、または半導体によるシステム、装置、装置または伝搬媒体でもよいが、これに限定はされない。プロセッサ読取可能媒体のより具体的な例には、特に、１つまたは複数のワイヤを伴う電気接続（電子）、ポータブルコンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（磁気）、読み出し専用メモリ（ＲＯＭ）（磁気）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ（光）、書き換え可能なコンパクトディスク（ＣＤ−ＲＷ：ｒｅｗｒｉｔａｂｌｅ  ｃｏｍｐａｃｔ  ｄｉｓｃ）（光）、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）（光）などが含まれる。
【００８９】
図６は、ＤＶデータストリームからＤＶメタデータを抽出する１つの例示的な方法６００を示している。ブロック６０２で、ＤＶデータストリームから抽出する追加のフレームあたりのＤＶメタデータを指定する命令を受け取る。この命令は、ＤＶメタデータ抽出ツール２００（コンピュータ１０２上のマルチメディアアーキテクチャ２０２の一部でもよい）が受け取る。この命令は、一般的にはコンピュータ１０２上で実行されるＤＶ編集アプリケーションなどのアプリケーション２０４から受け取る。この命令は、ＤＶメタデータ抽出ツール２００の抽出インターフェース４００に対して、抽出インターフェース４００がサポートするメソッド呼び出しの形で指示される。この命令は、メソッド呼び出しの中に含まれるＤＶＰａｃｋＩＤによってＤＶメタデータを識別する。抽出インターフェース４００によってサポートされるメソッド呼び出しには、ＤＶメタデータ抽出リスト４０４にＤＶＰａｃｋＩＤを追加するＡｄｄＰａｃｋメソッド呼び出し、抽出リスト４０４からＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＰａｃｋメソッド呼び出し、および抽出リスト４０４からすべてのＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＡｌｌＰａｃｋｓメソッド呼び出しが含まれる。抽出インターフェース４００によってサポートされるその他のメソッド呼び出しには、抽出リスト４０４内に存在するＤＶＰａｃｋＩＤの量を示す数値を返すＧｅｔＣｏｕｎｔメソッド呼び出しと、抽出リスト４０４内の指定されたインデックスにあるＤＶＰａｃｋＩＤを返すＧｅｔＰａｃｋＩＤメソッド呼び出しが含まれる。
【００９０】
ブロック６０４で、命令で指定されたＤＶメタデータがＤＶデータストリームのＤＶフレームから抽出される。１つの実装において、マルチメディアアーキテクチャ２０２のコアレイヤー２０８内にあるＤｍｕｘ  ２３４はＤＶフレーム３００をビデオ３０２サンプルおよびオーディオ３０４サンプルのコンポーネントに分離するときに指定されたＤＶメタデータを抽出する。抽出には、ＤＶメタデータ抽出リスト４０４を調査してどのＤＶメタデータを抽出するかを決定するＤｍｕｘ  ２３４が含まれる。ブロック６０６で、ＤＶメタデータがコンテナ３０６に格納される。ブロック６０８で、コンテナはＤｍｕｘ  ２３４によってＤＶフレーム３００から分離されたビデオサンプル３０２に添付される。
【００９１】
ブロック６１０で、コンテナはＤＶメタデータ抽出ツール２００によって管理される。ＤＶメタデータ抽出ツール２００には、アプリケーション２０４がコンテナ３０６内のデータにアクセスし、データを管理することができるメソッドをサポートするコンテナインターフェース４０２が含まれる。コンテナインターフェース４０２によってサポートされるメソッド呼び出しは、コンテナにＤＶ＿ＭＥＴＡＤＡＴＡ構造体を追加するＡｄｄメソッド呼び出し、コンテナからＤＶ＿ＭＥＴＡＤＡＴＡ構造体を削除するＲｅｍｏｖｅメソッド呼び出し、コンテナからすべての項目を削除するＲｅｍｏｖｅＡｌｌメソッド呼び出し、コンテナ内に存在する項目の量を示す数値を返すＧｅｔＣｏｕｎｔメソッド呼び出し、コンテナをロックして排他的にアクセスするＬｏｃｋメソッド呼び出し、コンテナのロックを解除するＵｎｌｏｃｋメソッド呼び出し、コンテナの最初のインデックスにある項目をコンテナから取り出すＧｅｔＦｉｒｓｔメソッド呼び出し、およびコンテナの次のインデックスにある項目をコンテナから取り出すＧｅｔＮｅｘｔメソッド呼び出しである。
【００９２】
図７は、ＤＶデータストリームからＤＶメタデータを抽出する別の例示的なメソッド７００を示している。ブロック７０２で、ＤＶメタデータ抽出リスト４０４が管理される。抽出リスト４０４は、ＤＶメタデータ抽出ツール２００によって管理される。ＤＶメタデータ抽出ツール２００は、様々なメソッドを使用して抽出リストを管理するための抽出インターフェース４００をサポートする。抽出インターフェース４００によってサポートされるメソッドには、ＤＶメタデータ抽出リスト４０４にＤＶＰａｃｋＩＤを追加するＡｄｄＰａｃｋメソッド呼び出し、抽出リスト４０４からＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＰａｃｋメソッド呼び出し、および抽出リスト４０４からすべてのＤＶＰａｃｋＩＤを削除するＲｅｍｏｖｅＡｌｌＰａｃｋｓメソッド呼び出しが含まれる。抽出インターフェース４００によってサポートされるその他のメソッドには、抽出リスト４０４内に存在するＤＶＰａｃｋＩＤの量を示す数値を返すＧｅｔＣｏｕｎｔメソッド呼び出しと、抽出リスト４０４の指定したインデックスにあるＤＶＰａｃｋＩＤを返すＧｅｔＰａｃｋＩＤメソッド呼び出しが含まれる。
【００９３】
ブロック７０４で、ＤＶメタデータパックは抽出リスト４０４内のＤＶＰａｃｋＩＤに基づいてＤＶフレーム３００から抽出される。１つの実装において、マルチメディアアーキテクチャ２０２のコアレイヤー２０８内にあるＤｍｕｘ  ２３４は、ＤＶフレーム３００をビデオ３０２およびオーディオ３０４サンプルのコンポーネントに分離するときに指定されたＤＶメタデータパックを抽出する。抽出には、ＤＶメタデータ抽出リスト４０４を調査してどのＤＶメタデータを抽出するかを決定するＤｍｕｘ  ２３４が含まれる。ブロック７０６で、ＤＶメタデータパックがＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ３０６に格納される。
【００９４】
ブロック７０８で、ＤＶメタデータパックはＤＶパックに固有のデータ構造体にアンパックされる。ＤＶパックに固有のデータ構造体は、ＤＶメタデータパックからパックされた２進のデータを取り出し、２進の値を対応する変数名に割り当て、アプリケーションプログラム２０４がＤＶメタデータパックのデータを使いやすくする。ブロック７１０でＤＶパックに固有のデータ構造体がＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ３０６に格納され、ブロック７１２でＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ３０６がＤｍｕｘ  ２３４によってＤＶフレーム３００から分離されたＤＶビデオサンプル３０２に添付される。
【００９５】
ブロック７１４で、ＩＭＦＤＶＭｅｔａｄａｔａＣｏｎｔａｉｎｅｒ  ３０６はＤＶメタデータ抽出ツール２００によって管理される。ＤＶメタデータ抽出ツール２００には、アプリケーション２０４がコンテナ３０６内のデータにアクセスでき、そのデータを管理できるメソッドをサポートするコンテナインターフェース４０２が含まれる。コンテナインターフェース４０２によってサポートされるメソッド呼び出しは、コンテナにＤＶパックに固有のデータ構造体（ＤＶ＿ＭＥＴＡＤＡＴＡ構造体と呼ばれる）を追加するＡｄｄメソッド呼び出し、コンテナからＤＶ＿ＭＥＴＡＤＡＴＡ構造体を削除するＲｅｍｏｖｅメソッド呼び出し、コンテナからすべての項目を削除するＲｅｍｏｖｅＡｌｌメソッド呼び出し、コンテナ内に存在する項目の量を示す数値を返すＧｅｔＣｏｕｎｔメソッド呼び出し、コンテナをロックして排他的にアクセスするＬｏｃｋメソッド呼び出し、コンテナのロックを解除するＵｎｌｏｃｋメソッド呼び出し、コンテナの最初のインデックスにある項目をコンテナから取り出すＧｅｔＦｉｒｓｔメソッド呼び出し、およびコンテナの次のインデックスにある項目をコンテナから取り出すＧｅｔＮｅｘｔメソッド呼び出しである。
【００９６】
１つまたは複数のメソッドが流れ図と流れ図の各ブロックに関する説明によって開示されているが、各ブロックは必ずしも示されている順序で実行する必要はなく、代わりの順序で実行しても同様の効果が得られるのは言うまでもない。さらに、こうしたメソッドは排他的ではなく、単独でも相互に組み合わせても実行できる。
【００９７】
例示的なコンピュータ
図８は、コンピュータ１０２を実装するのに適した例示的なコンピューティング環境８００を示している。１つの具体的な構成が示されているが、クライアントコンピュータ１０２は他のコンピューティング構成で実装してもよい。
【００９８】
コンピューティング環境８００には、汎用コンピューティングシステムがコンピュータ８０２の形で含まれる。コンピュータ８０２のコンポーネントには、１つまたは複数のプロセッサまたは処理装置８０４、システムメモリ８０６、プロセッサ８０４を含む様々なシステムコンポーネントをシステムメモリ８０６に接続するシステムバス８０８などが含まれるが、それらに限定はされない。
【００９９】
システムバス８０８は、メモリバスまたはメモリコントローラ、周辺バス、アクセラレータグラフィックポート、様々なバスアーキテクチャのいずれかを用いたプロセッサバスまたはローカルバスを含む各種バス構造の任意の１つまたは複数を表している。システムバス８０８の例には、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バス（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとも呼ばれる）がある。
【０１００】
コンピュータ８０２には、通常は様々なコンピュータ読取可能媒体が含まれる。このような媒体は、コンピュータ８０２からアクセスできる任意の使用可能な媒体でよい。また、揮発性と不揮発性の両方、および取り外し可能と不可能の両方の媒体が含まれる。システムメモリ８０６には、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）８１０などの揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）８１２などの不揮発性メモリの形をとるコンピュータ読取可能媒体が含まれる。起動時などにコンピュータ８０２内のエレメント間の情報転送を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）８１４は、ＲＯＭ  ８１２に格納される。ＲＡＭ  ８１０には、通常は処理装置８０４から直ちにアクセスでき、かつ／または処理装置８０４で現在動作しているデータおよび／またはプログラムモジュールが格納される。
【０１０１】
コンピュータ８０２には、その他の取り外し可能／不可能、揮発性／不揮発性のコンピュータ記憶媒体を含めてもよい。例として、図８に取り外し不可能な不揮発性の磁気媒体（図示せず）の読み出しおよび書き込みを行うハードディスクドライブ８１６、取り外し可能な不揮発性の磁気ディスク８２０（例えば「フロッピー（登録商標）ディスク」）の読み出しおよび書き込みを行う磁気ディスクドライブ８１８、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、あるいは他の光媒体のような取り外し可能な不揮発性の光ディスク８２４の読み出しまたは書き込みを行う光ディスクドライブ８２２を示す。ハードディスクドライブ８１６、磁気ディスクドライブ８１８、および光ディスクドライブ８２２は、それぞれ１つまたは複数のデータメディアインターフェース８２６によってシステムバス８０８に接続する。あるいは、ハードディスクドライブ８１６、磁気ディスクドライブ８１８、および光ディスクドライブ８２２は、それぞれＳＣＳＩインターフェース（図示せず）によってシステムバス８０８に接続できる。
【０１０２】
ディスクドライブと各ドライブに関連するコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールなど、コンピュータ８０２のデータを格納する不揮発性ストレージとして利用できる。この例には、ハードディスク８１６、取り外し可能な磁気ディスク８２０、取り外し可能な光ディスク８２４を示すが、磁気カセットなどの磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）などの光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ：electrically erasable programmable read-only memory）など、コンピュータからアクセス可能なデータを保存できる他のタイプのコンピュータ読取可能媒体も例示的なコンピューティングシステムおよび環境に利用できることは言うまでもない。
【０１０３】
例としてオペレーティングシステム８２６、１つまたは複数のアプリケーションプログラム８２８、その他のプログラムモジュール８３０、およびプログラムデータ８３２を含む任意の数のプログラムモジュールは、ハードディスク８１６、磁気ディスク８２０、光ディスク８２４、ＲＯＭ  ８１２、および／またはＲＡＭ  ８１０に保存できる。こうしたオペレーティングシステム８２６、１つまたは複数のアプリケーションプログラム８２８、その他のプログラムモジュール８３０、およびプログラムデータ８３２（またはそのいくつかの組合せ）にはそれぞれ、ユーザネットワークアクセス情報を得るためのキャッシングスキーマの実施形態を含めてもよい。
【０１０４】
コンピュータ８０２には、通信媒体として識別される様々なコンピュータ／プロセッサ読取可能媒体を含めてもよい。通信媒体は搬送波やその他の搬送メカニズムのような変調データ信号に含まれるコンピュータ読取可能命令、データ構造体、プログラムモジュール、またはその他のデータなどを具体化しており、通信媒体には任意の情報伝達媒体が含まれる。「変調データ信号」という用語は、信号内で情報を符号化するように１つまたは複数の特性を設定または変更された信号を意味する。例として、通信媒体には、有線ネットワークや直接ワイヤ接続などの有線媒体と、音、ＲＦ、赤外線などの無線媒体が含まれるが、これらに限定はされない。上記の任意の組合せも、コンピュータ読取可能媒体の範囲内に含まれる。
【０１０５】
ユーザは、キーボード８３４やポインティングデバイス８３６（例えば「マウス」）などの入力装置を使用してコンピュータシステム８０２にコマンドや情報を入力できる。その他の入力装置８３８（個々には図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナなどを含めてもよい。これらの入力装置および他の入力装置は、システムバス８０８に接続された入力／出力インターフェース８４０を介して処理装置８０４に接続するが、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）のような他のインターフェースやバス構造によって接続してもよい。
【０１０６】
モニター８４２または他のタイプの表示装置も、ビデオアダプタ８４４のようなインターフェースを介してシステムバス８０８に接続できる。モニター８４２以外に、他の出力周辺装置には、スピーカー（図示せず）やプリンタ８４６のように入力／出力インターフェース８４０を介してコンピュータ８０２に接続できるコンポーネントを含めてもよい。
【０１０７】
コンピュータ８０２は、リモートコンピューティング装置８４８のような１台または複数台のリモートコンピュータへの論理接続を使用してネットワーク環境で動作できる。例として、リモートコンピューティング装置８４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピア装置、その他の一般的なネットワークノードなどでよい。リモートコンピューティング装置８４８は、コンピュータシステム８０２に関連して本明細書で説明するエレメントおよび機能の多くまたはすべてを含むことができるポータブルコンピュータとして示されている。
【０１０８】
コンピュータ８０２とリモートコンピュータ８４８との論理接続は、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）８５０と一般的なワイドエリアネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）８５２として示されている。このようなネットワーキング環境は、職場、企業規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。ＬＡＮネットワーキング環境で実装する場合に、コンピュータ８０２はネットワークインターフェースまたはアダプタ８５４を介してローカルネットワーク８５０に接続する。ＷＡＮネットワーキング環境で実装する場合、コンピュータ８０２は一般に広域ネットワーク８５２を介して通信を確立するためのモデム８５６またはその他の手段を備えている。コンピュータ８０２のモデム８５６（内蔵または外付け）は、入力／出力インターフェース８４０または他の適切なメカニズムを使用してシステムバス８０８に接続できる。図示されたネットワーク接続が例示的なものであり、コンピュータ８０２および８４８間の通信リンク（１つまたは複数）を確立するその他の手段を使用してもよいことは言うまでもない。
【０１０９】
コンピューティング環境８００に図示するようなネットワーク環境では、コンピュータ８０２に関連して示したプログラムモジュールまたはその一部をリモートメモリ記憶装置に格納できる。例として、リモートアプリケーションプログラム８５８はリモートコンピュータ８４８のメモリ装置に格納されている。説明のために、アプリケーションプログラム、およびオペレーティングシステムなど、その他の実行可能プログラムコンポーネントは、本明細書では個々のブロックとして示されているが、こうしたプログラムおよびコンポーネントは様々なタイミングでコンピューティングシステム８０２の様々なストレージコンポーネントに格納され、コンピュータのデータプロセッサ（１つまたは複数）によって実行されることがわかっている。
【０１１０】
インターフェース定義言語
前述のように、このＩＤＬ（Ｉｎｔｅｒｆａｃｅ  Ｄｅｆｉｎｉｔｉｏｎ  Ｌａｎｇｕａｇｅ：インターフェース定義言語）のセクションでは、２５６のＤＶメタデータパックに加えて、ＤＶメタデータ抽出ツール２００によってＤＶパックに固有のデータ構造体（すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体）として拡張された方法で個々にサポートされている様々なパックの２進のパックレイアウトもリストアップする。このセクションには、サポートされるＤＶ＿ＭＥＴＡＤＡＴＡ構造体のアンパックされたＤＶメタデータパックの固有のレイアウトも含まれる。拡張されたサポートを伴うＤＶメタデータパックを次の表に特定する。
【０１１１】
【表１４】
2007521695.tif 000016
【０１１２】
ＤＶメタデータ抽出ツール２００による拡張されたサポートを伴うＤＶパックに固有のデータ構造体（すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体）は、それぞれｓｉｚｅおよびＤＶ  Ｐａｃｋで開始される。ｓｉｚｅメンバーには、ＤＶ＿ＭＥＴＡＤＡＴＡ構造体全体のサイズが格納される。ＤＶＰａｃｋ（５バイトの配列）は、生のＤＶメタデータである。各パックは５バイトで構成されている。最初のバイトは、上の表１のパックＩＤである。次の４バイトには、データを格納するビットフィールドが含まれる。拡張されたサポートパックは、それぞれビットフィールドがアンパックされ、より使いやすい形に簡単に処理された関連の構造体を備えている。ＤＶ  Ｐａｃｋの詳細な定義は、ＩＥＣ  ６１８３４−４に記載されている。
【０１１３】
２５６のＤＶメタデータパックおよびＤＶメタデータ抽出ツール２００によってサポートされるＤＶパックに固有のデータ構造体（すなわちＤＶ＿ＭＥＴＡＤＡＴＡ構造体）は、次のとおりである。
【０１１４】
【表１５】
2007521695.tif 000017
【０１１５】
【表１６】
2007521695.tif 000018
【０１１６】
【表１７】
2007521695.tif 000019
【０１１７】
【表１８】
2007521695.tif 000020
【０１１８】
【表１９】
2007521695.tif 000021
【０１１９】
【表２０】
2007521695.tif 000022
【０１２０】
【表２１】
2007521695.tif 000023
【０１２１】
【表２２】
2007521695.tif 000024
【０１２２】
【表２３】
2007521695.tif 000025
【０１２３】
【表２４】
2007521695.tif 000026
【０１２４】
【表２５】
2007521695.tif 000027
【０１２５】
【表２６】
2007521695.tif 000028
【０１２６】
【表２７】
2007521695.tif 000029
【０１２７】
【表２８】
2007521695.tif 000030
【０１２８】
【表２９】
2007521695.tif 000031
【０１２９】
【表３０】
2007521695.tif 000032
【０１３０】
【表３１】
2007521695.tif 000033
【０１３１】
【表３２】
2007521695.tif 000034
【０１３２】
【表３３】
2007521695.tif 000035
【０１３３】
【表３４】
2007521695.tif 000036
【０１３４】
【表３５】
2007521695.tif 000037
【０１３５】
【表３６】
2007521695.tif 000038
【０１３６】
【表３７】
2007521695.tif 000039
【０１３７】
【表３８】
2007521695.tif 000040
【０１３８】
結論
本発明について、構造上の機能および／または方法論的な動作に固有の言語で説明したが、添付の特許請求の範囲が必ずしも前述の特定の機能や動作に限定されないことを理解されたい。むしろ、特定の機能や動作は、特許請求の範囲に記載された本発明の例示的な実施形態として開示されている。
【図面の簡単な説明】
【０１３９】
【図１】ＤＶメタデータの抽出に適した例示的な環境を示す図である。
【図２】ＤＶデータストリームからＤＶメタデータを抽出するのに適したコンピュータの例示的な実施形態を示す図である。
【図３】様々な処理コンポーネントを使用して処理されるＤＶデータの例を示す図である。
【図４】ＤＶメタデータ抽出ツールのコンポーネントを示す図である。
【図５】１つまたは複数のＤＶメタデータパックと１つまたは複数のアンパックされたＤＶ＿ＭＥＴＡＤＡＴＡ構造体とを備えるコンテナを示す図である。
【図６】ＤＶデータストリームからＤＶメタデータを抽出する１つの例示的な方法を示すブロック図である。
【図７】ＤＶデータストリームからＤＶメタデータを抽出する別の例示的な方法を示すブロック図である。
【図８】図２に示すようなコンピュータを実装するのに適した例示的なコンピューティング環境を示す図である。
【図１】
2007521695.tif 000041
【図２】
2007521695.tif 000042
【図３】
2007521695.tif 000043
【図４】
2007521695.tif 000044
【図５】
2007521695.tif 000045
【図６】
2007521695.tif 000046
【図７】
2007521695.tif 000047
【図８】
2007521695.tif 000048
【国際調査報告】
2007521695.tif 000049