Date

Windows Mobile SDK をダウンロードしても、SDK の中には BaseClasses のソースコードがない。BaseClasses は Platform Builder の中にある。 Platform Builder はフリーダウンロードはできないが、評価版はある。

ダウンロードの詳細 : Microsoft Windows CE 5.0 評価版

この中に BaseClasses がある。既定のフォルダにインストールした場合、 C:\WINCE500\PUBLIC\DIRECTX\SDK\SAMPLES\DSHOW\BASECLASSES

にインストールされる。プロジェクトファイルは見当たらないが適当に作る。

インクルードファイルは次のパスとなる。 C:\WINCE500\PUBLIC\DIRECTX\SDK\INC

(以下は書きかけです)

私個人の環境だけだと思うが、Windows Vista だとインストールに失敗した。そのため Windows XP にインストールを行った。

PUBLIC\DIRECTX\SDK\SAMPLES\DSHOW\BASECLASSES に目的のものが入っているので、Visual Studio 2008 を使って、このフォルダにプロジェクトを作成する。

インクルードパスを次のように設定する。(Windows CE 5.0 の SDK を優先) .;../../../inc;../../../../common/sdk/inc

出力ファイル名を変更する。(任意)

  • デバッグの場合 strmbasd.lib
  • リリースの場合 strmbase.lib

プリプロセッサに WINMM を追加する。

BASECLASSESディレクトリ内の.cppと.hファイルを追加する。

ddmm.cpp と cprop.cpp は除く。

outputq.cpp の 640 行目付近に long iDone; を追加し、次の 641 行目の for(long iDone...for(iDone... に修正。

winutil.cpp の 2622 行目付近に UINT Count; を追加。以降の for 文ごとに宣言されている for(UINT Count...for(Count... に修正。

ctlutil.h の 289 行目の operator=(LONG);int operator=(LONG); に変更する。

これで、無事に BaseClasses の CE 版がビルドできた。

次に、DirectShowフィルタのプロジェクト NullRend を作成し、適当に書く。(この場合は CBaseFilter から継承したものを作成した。)

先ほどビルドした strmbasd.lib 及び strmbase.lib をリンクする。

ビルドする→できた。

regsvrce.exe を実行し、フィルタのDLLをレジストリを登録する。

最後にプレイヤーアプリ用のプロジェクトを作成し、適当に書く。

ビルドしたフィルタ NullRend を使ったフィルタグラフを作成する。


Comments

comments powered by Disqus