1st step to understand DirectShow その7 (再び、Multimedia Streaming ) 



 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です。

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



   ユーロですから、5,000円位でしょうか.....今、試用期間中です。
  

 2.何故、再び、Multimedia Streaming ?

   カスタムAllocatorを作ったからと言って、それが、うまく繋がるか、解らないからです。

    ご承知のように、graphは、WaveParserを、自動的に挿入してくれます。

    これが、自前のAllocatorに、うまく繋がるか、どうかは、WaveParserのoutput pinが決めるからです。

 3.Multimedia Streaming 事始め

   Multimedia Streamingは、DirectShowと、よく似ています。

    graphも生成します。

    ですので、このgraphを使って、AddToRot関数、RemoveFromRot関数を使えば、

    graphEditで、その状態を表示する事が、できます。

 hr=pAMMStream->OpenFile(L"mywave.wav",AMMSF_NORENDER |AMMSF_RUN); //no renderer AMMSF_NORENDER |

 IGraphBuilder *pGraph=NULL;
 hr=pAMMStream->GetFilterGraph(&pGraph);
 DWORD dwRegister;

if(hr==S_OK)
{
 #ifdef _DEBUG
 hr = AddToRot(pGraph, &dwRegister);
 #endif
}

::getchar();
//////////////////////////////////////////////////////////////
#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