Microsoft DirectX 8.0 |
ここでは、GraphEdit によって作成されて保存された Microsoft® DirectShow® グラフ ファイル (.grf) のフォーマットについて説明する。
docfile (保存ファイル) は、ActiveMovieGraph という名前のストリームを格納している。この単独のストリームの中に、すべてのフィルタ、フィルタ名、ファイル名、接続などが含まれている。
グラフをロードするには :
または、
ストリーム内のグラフの構文を以下に示す。
<graph> ::= <version3><filters><connections><clock>END | <version2><filters><connections>END <version3> ::= 0003\r\n <version2> ::= 0002\r\n <clock> ::= CLOCK <b> <required><b><clockid>\r\n <required> ::= 1|0 <clockid> ::= <n>|<class id> <filters ::= FILTERS <b>[<filter list><b>] <connections> ::= CONNECTIONS [<b> <connection list>] <filter list> ::= [<filter> <b>] <filter list> <connection list> ::= [<connection><b>]<connection list> <filter> ::= <n><b>"<name>"<b><class id><b>[<file>]<length><b1><filter data> <file> ::= SOURCE "<name>"<b> | SINK "<name>"<b> <class id> ::= 標準文字列フォーマットのフィルタのクラス ID。 <name> ::= " を含まない任意の文字シーケンス。 <length> ::= 符号なし 10 進数 (たとえば 23) を表す文字列。 これは、空白をはさんで後に続くデータのバイト数である。 <b> ::= 空白、\t、\r、または \n の任意の組み合わせ。 <b1> ::= 1 つの空白文字。 <n> ::= 整数 (たとえば 0001、0002、0003) の識別子。 <connection> ::= <n1><b>"<pin1 id>"<b><n2><b>"<pin2 id>" <media type> <n1> ::= 1 番目のフィルタの識別子。 <n2> ::= 2 番目のフィルタの識別子。 <pin1 id> ::= <name> <pin2 id> ::= <name> <media type> ::= <major type><b><sub type><b><flags><length><b1><format> <major type> ::= <class id> <sub type> ::= <class id> <flags> ::= <FixedSizeSamples><b><TemporalCompression><b> <FixedSizeSamples> ::= 1|0 <TemporalCompression> ::= 1|0 <Format> ::= <SampleSize><b><FormatType><b><FormatLength><b1><FormatData> <FormatType> ::= 標準文字列フォーマットのフォーマットのクラス ID。 <FormatLength> ::= 符号なし 10 進数 (たとえば 23) を表す文字列。 これは、空白をはさんで後に続くデータのバイト数である。 <FormatData> ::= バイナリ データ。
出力では、フィルタごと、接続ごと、およびキーワード FILTERS と CONNECTIONS ごとに復帰改行 (\r\n) が挿入される。それ以外の <B> は 1 つの空白である。キーワード FILTERS、CONNECTIONS、および END はローカライズ可能ではない。フィルタ データとフォーマット データはバイナリなので、不適切な改行や NULL 値などを含むことがある。
以下に、出力の例を示す (接続行は長いのでここでは分割している。コメントは、<コメント> のフォーマットで示してある)。
0002 <構文のバージョン 2> FILTERS 0001 "Source" {00000000-0000-0000-0000-000000000001} SOURCE "MyFile.mpg" 0000000000 <ID 名前 フィルタの GUID (ロードに必要) ソース ファイル名 プライベート データなし> 0002 "another filter" {00000000-0000-0000-0000-000000000002} 0000000008 XXXXXXXX <ID 名前 GUID (これはファイル ソースまたはシンクではない) 8 バイト プライベート データ> CONNECTIONS 0001 "Output pin" 0002 "In" <ここには改行なし> <フィルタ ID ピン ID フィルタ ID ピン ID (出力ピンが先でその次に入力ピン)> 0000000172 {00000000-0000-0000-0000-000000000003} <ここには改行なし> <サンプル サイズ、 メディア タイプ メジャー タイプ> {00000000-0000-0000-0000-000000000004} 1 0 <ここには改行なし> <メディア タイプ サブタイプ、 固定サイズ サンプル、時系列圧縮なし> 0000000093 {00000000-0000-0000-0000-000000000005} 18 YYYYYYYYYYYYYYYYYY <フォーマットの長さ フォーマット タイプ 18 バイトのバイナリ フォーマット データ> END
ここで、
ファイル内の文字列および文字は常に Unicode で表される。