设备的开启与操作: 保存及重置一台视频设备的属性

本例演示如何通过IC Imaging Control保存和重置视频捕捉设备的属性。
语言:Visual C++
版本:3.0.3
发布于:2005年4月7日
作者:IC Imaging Control 技术支持部
系统要求:IC Imaging Control >2.1
由WDM数据流类驱动程序驱动的相机、视频转换器或图像采集卡

示例程序窗口如下图所示:

The dialog window of the sample application.

首先创建一个基于MFC对话框的应用程序。 而后,新建4个按钮,分别用于开启视频捕捉设备,显示IC Imaging Control内置的属性设置对话框,保存设备属性,以及从.xml文件中载入设备属性。

创建一个Grabber类的实例,作为对话框类的成员。

DShowLib::Grabber        m_cGrabber; // The instance of the Grabber class.

在"Device"按钮事件处理程序中,选择一个视频捕捉设备。 首先,在调用IC Imaging Control 内置的 "Device Selection" 对话框前,检验当前的 Grabber 对象是否已经含有一个正在运行的视频设备。 通过Grabber::showDevicePage()调用"Device Settings"对话框。 离开"Device Settings"对话框后,检测是否已经选择了一台有效的视频捕捉设备。 如果设备有效,则通过调用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();
    }
}

相关源代码示例

责任声明
IC Imaging Control 源代码库中的所有代码均只用于教学目的,The Imaging Source Europe GmbH 作为IC Imaging Control的开发制造商,不对任何由于使用本文或其中源代码所产生的后果承担责任。

该网站为The Imaging Source网络的一部分。其它的站点包括 公司, Imaging, 天文相机, Astronomy Cameras Blog, Blog caméras d'astronomie, 天文相机有奖竞答, TX Text Control, LiveDocx, phpLiveDocxForum.