Use ltmmCapture to Perform Simple Still Image Capture

1.

To begin simple still image capturing you should create an instance of the ltmmCapture class. This is accomplished using the Win32 CoCreateInstance function as follows:

C Source

IltmmCapture* pCapture;
CoCreateInstance(&CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmCapture, (void**) &pCapture);

C++ Source

IltmmCapture* pCapture; 
CoCreateInstance(CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, IID_IltmmCapture, (void**) &pCapture);

2.

Define video devices to be used as the capture source. The ltmmCapture object contains video device collection objects.

3.

The first video device can be selected for capture by calling the device collection’s put_Selection function:

C Source

IltmmDevices* pDevices;

// get an interface into video devices collection
IltmmCapture_get_VideoDevices(pCapture, &pDevices); 

// select the first video device
IltmmDevices_put_Selection (pDevices, 0);

// release collection
IUnknown_Release(pDevices);

C++ Source

IltmmDevices* pDevices; 

// get an interface into video devices collection
pCapture->get_VideoDevices(&pDevices);

// select device
pDevices->put_Selection(0);

// release collection
pDevices->Release();

4.

Define the target or output file, as demonstrated with the following code:

C Source

BSTR bstr; 

// create a string containing the target file path
bstr = SysAllocString(L"c:\\target.mpg"); 

// assign the target file path to the capture object
IltmmCapture_put_TargetFile (pCapture, bstr); 

// free the string
SysFreeString(bstr);

C++ Source

BSTR bstr; 

// create a string containing the target file path
bstr = SysAllocString(L"c:\\target.mpg"); 

// assign the target file path to the capture object
pCapture->put_TargetFile (bstr); 

// free the string
SysFreeString(bstr);

 

5.

You should now start capturing still image data. This is accomplished with the following code:

C Source

IltmmCapture_StartCapture (pCapture, ltmmCapture_Mode_Still);

C++ Source

pCapture->StartCapture (ltmmCapture_Mode_Still);