IC Imaging Control C++

Acquire Video Format Information

Acquire Video Format Information

This example demonstrates how to acquire information about the available video formats.

The program can be found in the %TOPLEVEL%\Samples\VC\VideoNormFormat directory. In order to run the program, open the solution file VidNormFormat.sln in this directory and select Build -> Build VideoNormFormat in the menu. Then the program can be executed by selecting Debug -> Start.

Opening a Device

The program will generate a list of all available video capture devices and prompt the user for the device to open.

Grabber::tVidCapDevListPtr pVidCapDevList = grabber.getAvailableVideoCaptureDevices();
if( pVidCapDevList == 0 || pVidCapDevList->empty() )
{
    return -1; // No device available.
}
int choice = presentUserChoice( toStringArrayPtr(pVidCapDevList) );
// Open the selected video capture device.
if( choice == -1 )
{
    return -1;
}
grabber.openDev( pVidCapDevList->at( choice ) );

First, Grabber::getAvailableVideoCaptureDevices is called to retrieve a list with the video capture devices connected to the computer. The helper function presentUserChoice from %TOPLEVEL%\Samples\VC\Common\CmdHelper.h is called to output the available devices to the console and let the user input a number.

The selected video capture device is opened by calling Grabber::openDev.

Selecting a Video Norm

If the selected device supports multiple video norms, all available video norms will be printed to the screen and the user will be asked for a norm. If the user selects a norm, all video formats available for the selected norm are printed on the screen and the user is again prompted for a video norm until he terminates the program by pressing "q".

// Check whether video norms are available with the current video capture device.
if( grabber.hasVideoNorms() )
{
    // Query for all available video norms.
    Grabber::tVidNrmListPtr pVidNrmList = grabber.getAvailableVideoNorms();

    if( pVidNrmList == 0 )
    {
        std::cerr << "Error: " << grabber.getLastError().toString() << std::endl;
        return -1;
    }
    while ( true )
    {
        std::cout << "Video Norms available for " << grabber.getDev().toString() << std::endl;
        int choice = presentUserChoice( toStringArrayPtr(pVidNrmList) );
        if( choice != -1 )
        {
            // Set the selected video norm before
            // retrieving the according video formats.
            grabber.setVideoNorm( pVidNrmList->at( choice ) );

Grabber::hasVideoNorms is called to check whether the opened video capture device supports video norms. If it does, a list with the available video norms is retrieved by calling Grabber::getAvailableVideoNorms.

After the user selected one of the video norms in presentUserChoice, Grabber::setVideoNorm is used to set the selected norm.

Displaying the Available Video Formats

When a video norm was selected, or video norms are not supported, the available video formats are printed to the screen:

Grabber::tVidFmtListPtr pVidFmtList = grabber.getAvailableVideoFormats();

if( pVidFmtList == 0 ) // No video formats available?
{
    std::cerr << "Error : " << grabber.getLastError().toString() << std::endl;
}
else
{
    unsigned int counter = 0;
    // List the available video formats.
    for( Grabber::tVidFmtList::iterator it = pVidFmtList->begin();
        it != pVidFmtList->end();
        ++it )
    {
        std::cout << "\t[" << counter++ << "] " << it->toString() << std::endl;
    }
}

Grabber::getAvailableVideoFormats returns a list containing the available video formats. In a loop, the names of the formats are displayed. You can get the name of a video format by calling VideoFormatItem::toString.

<< Programmer's Guide

Get in touch with us


About The Imaging Source

Established in 1990, The Imaging Source is one of the leading manufacturers of industrial cameras, frame grabbers and video converters for production automation, quality assurance, logistics, medicine, science and security.

Our comprehensive range of cameras with USB 3.1, USB 3.0, USB 2.0, GigE interfaces and other innovative machine vision products are renowned for their high quality and ability to meet the performance requirements of demanding applications.

Automated Imaging Association ISO 9001:2015 certified

Contact us