私は高解像度カメラをfirewire経由で接続しています。SDKを使用すると、フレームをバイトバッファに取り込むことができます。例えば:
unsigned char *buffer = new unsigned char[size];
GetFrameBuffer(cameraHandle, buffer);
APIの性質上、ライブビューを表示するには、フレームを継続的に取得する必要があります(20 fps以上)。ここで、これをWPFUIに表示します。私はいくつかのアプローチを考えることができますが、どの方法を選択するかを決めるのに助けが必要です!
アイデア
- 相互運用機能を介して更新されたプロパティを介して
Source
、Image要素のを継続的に更新します。 - HwndHostでカスタム
HWND
ベースのコントロールをホストします。メッセージポンプがアイドル状態になると、画像が更新されます。 - DirectShowでソースフィルターを記述し、ある種のタイミングロジックを使用して、バッファーを継続的に読み取ります。これにより、 MediaElementを使用してライブビューを表示できるようになります。
もちろん、CPUの負荷を最小限に抑えたいと思います。
質問はこれに要約されます:
WPFで、FireWire接続からのライブストリームを次のようなプリミティブAPIで表示するにはどうすればGetFrameBuffer
よいですか?