1st step
to understand DirectShow その7 (再び、Multimedia Streaming
) Our software is
available for FREE downloading and using for trial period. When this
period expires you must register our software (by making the registration
payment), or stop using our software and uninstall it from your
system. Advanced Graph Manager Single Ђ29,95 3.Multimedia Streaming 事始め IGraphBuilder
*pGraph=NULL; if(hr==S_OK) ::getchar();
1.GraphEditで、困った事が.... (注 GraphEditの exe
fileは、 graphedt.exe)
前前節 1st step to understand DirectShow
その4 (SampleGrabber 2)では、自作のgraphを表示するために、
regsvr32 quarts.dll
regsvr32/u
proppage.dll
を、行ったのである。
確かに、自作のgraphを、表示できるようになった。
しかし、その代償として、Graphedit本来の機能の一部である、 pin
properties が、表示されなくなってしまった....
では、旧PlatformSDKに含まれるproppage.dll
を
regsvr32
proppage.dll
すれば、ええやんか と、思うかもしれんが、
そうすると、自作のgraphが、表示されなくなります。
ここで、 Advanced Graph
Managerの登場です。
remote
graphも、問題なく表示されます。
但し、share wareです。
ユーロですから、5,000円位でしょうか.....今、試用期間中です。
2.何故、再び、Multimedia Streaming
?
カスタムAllocatorを作ったからと言って、それが、うまく繋がるか、解らないからです。
ご承知のように、graphは、WaveParserを、自動的に挿入してくれます。
これが、自前のAllocatorに、うまく繋がるか、どうかは、WaveParserのoutput pinが決めるからです。
Multimedia
Streamingは、DirectShowと、よく似ています。
graphも生成します。
ですので、このgraphを使って、AddToRot関数、RemoveFromRot関数を使えば、
graphEditで、その状態を表示する事が、できます。
hr=pAMMStream->OpenFile(L"mywave.wav",AMMSF_NORENDER
|AMMSF_RUN); //no renderer AMMSF_NORENDER |
hr=pAMMStream->GetFilterGraph(&pGraph);
DWORD
dwRegister;
{
#ifdef _DEBUG
hr =
AddToRot(pGraph, &dwRegister);
#endif
}
//////////////////////////////////////////////////////////////
#ifdef
_DEBUG
RemoveFromRot(dwRegister);
#endif
これは、audioのMultimedi
Streamingの例を
通常の44,100Hz
sampling , wFormatTag=WAVE_FORMAT_PCMの、wavファイルで実行したものです。
wFormatTag=WAVE_FORMAT_IEEE_FLOAT では、正常に動作しません。
これを、何とかしたいのですが、中々うまく行きませんねんワン。
H.20.3.30