デバイスプロパティの保存と呼び出し
使用するデバイスのプロパティーをファイルとしてSave/Loadする方法を示しています。
Software | IC Imaging Control 3.4, Visual Studio™ 2019 |
---|---|
サンプル(C++) | save_restore_device_vc.zip |
4つのボタンを使用した簡単なMFCダイアログベースのサンプルです。ビデオデバイスの選択、プロパティダイアログの呼び出しと、デバイスプロパティをXMLファイルとしてSave/ Loadするためのボタンをそれぞれ用意しています。
Grabberクラスのインスタンスをダイアログクラスのメンバーとして作成する必要があります。
DShowLib::Grabber m_cGrabber; // Grabber classのインスタンス
"Device"ボタンのイベントハンドラーで標準のデバイス選択ダイアログを表示します。その前に現在Grabberオブジェクトが実行中出ない事を確認する必要があります。Grabber::showDevicePage()をコールしてデバイス選択ダイアログを表示します。デバイス選択ダイアログが表示された後、有効なビデオキャプチャデバイスが選択されたかどうかをチェックします。Grabberオブジェクトにあるビデオキャプチャデバイスが有効であれば、Grabber::startLive()をコールしてイメージデータストリームを開始します。
void CSaveRestorePropertiesDlg::OnBnClickedDevice()
{
if(m_cGrabber.isDevValid() && m_cGrabber.isLive())
{
m_cGrabber.stopLive();
}
m_cGrabber.showDevicePage(this->m_hWnd);
if(m_cGrabber.isDevValid())
{
m_cGrabber.startLive();
}
}
"Properties"ボタンのイベントハンドラーでは Grabber::showVCDPropertyPage()をコールして標準のデバイスプロパティダイアログを表示します。
void CSaveRestorePropertiesDlg::OnBnClickedProperties()
{
if( m_cGrabber.isDevValid())
{
m_cGrabber.showVCDPropertyPage(this->m_hWnd);
}
}
Grabber::saveDeviceStateToFile()メソッドは現在のビデオキャプチャデバイスのプロパティをXMLファイルに保存します。
void CSaveRestorePropertiesDlg::OnBnClickedSave()
{
if( m_cGrabber.isDevValid())
{
m_cGrabber.saveDeviceStateToFile("device.xml");
}
}
Grabber::loadDeviceStateFromFileメソッドですでに保存されているXMLファイルを読みだす事で、ビデオキャプチャデバイスとそのプロパティ設定をファイルから復元します。このメソッドを実行する為には先に現在実行中のライブ動作を止める必要があります。有効なファイルが読み込まれたら、Grabber.startLive()によってイメージデータストリームを再開します。
void CSaveRestorePropertiesDlg::OnBnClickedRestore()
{
if(m_cGrabber.isDevValid() && m_cGrabber.isLive())
{
m_cGrabber.stopLive();
}
if( m_cGrabber.loadDeviceStateFromFile( "device.xml"))
{
if( m_cGrabber.isDevValid())
m_cGrabber.startLive();
}
}