0

Windowsプログラム(Win32 / MFC / C ++)のビデオサポートでPJSIPを使用したい。PJSIPプロジェクトのサイト(http://trac.pjsip.org/repos/wiki/Getting-Started/Windows)を見ると、とりわけ次のことがわかります(追加要件)。

  • WindowsSDKに含まれているDirectShowSDK。
  • SDLバージョン2.0またはバージョン1.3

この場合、config_site.hで次の構成が必要です。

#define PJMEDIA_HAS_VIDEO               1
#define PJMEDIA_HAS_FFMPEG              1
#define PJMEDIA_VIDEO_DEV_HAS_SDL       1
#define PJMEDIA_VIDEO_DEV_HAS_DSHOW     1

この2つのコンポーネントをPJSIPプロジェクトに追加すると、すべて正常に機能し、着信に関する通知を受け取り、ドアのカメラからビデオを表示/キャプチャできます。

私の質問:Windowsプログラムには、このコンポーネント(SDLとDirectX / DirectShow)の両方が本当に必要ですか?つまり、SDLが必須である必要がありますか(そうではないと思います)、必要な場合はDirectXも必要ですか?OpenGL for Windowsを使用できないのはなぜですか?多分誰かがこのテーマの経験を持っています-私はあなたの助けをいただければ幸いです!

4

1 に答える 1

1

あなたは間違いなくDirectShowが必要です。SDL を要求することに肯定的ではない...

DirectShow は、Windows のビデオ キャプチャ ソースへのストリーミング インターフェイスを提供します。DirectShow 自体は主にユーザー モード コンポーネントのセットですが、提供されているビデオ キャプチャ フィルター (通常は KsProxy.ax) は、定義された一連のインターフェイスとプロパティを介してカーネル レベルのキャプチャ ドライバーと通信します。一部のカメラ メーカーは、ハードウェアへのプライベート (通常はカーネル) インターフェイスを備えた独自のユーザー モード DirectShow キャプチャ フィルターを提供することを選択しており、これにより、DirectShow はすべての Windows ビデオ キャプチャ デバイスの共通ア​​クセス ポイントになります。

SDL は、表示にすばやくアクセスできるクロス プラットフォーム ライブラリを提供します。これは、デコードされたビデオをディスプレイに表示するために、PJSIP のコーデックによって使用されます。

PJSIPは DirectShow をレンダリング フィルターとして使用することをサポートしているようです。参照: http://svn.pjsip.org/repos/pjproject/trunk/pjmedia/src/pjmedia-videodev/dshow_dev.c

52 行目で DirectShow レンダラーを有効にするコードが有効になっている場合に機能するかどうかは、ソースからは不明です。

/* Temporarily disable DirectShow renderer (VMR) */
#define HAS_VMR         0

これはコメントアウトされているため、コードが完全に完成していないと推測できます。そのため、すべての例で SDL も必要となります。

于 2013-03-15T16:57:17.390 に答える