Programmatically Inserting a Processor Filter
Assume you want to insert the mosaic as the first filter to the play object.
1. |
Create an instance of the ltmmPlay class. This is accomplished using the Win32 CoCreateInstance function as follows: |
C Source
IltmmPlay* pPlay;
CoCreateInstance(&CLSID_ltmmPlay, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmPlay, (void**) &pPlay);
C++ Source
IltmmPlay* pPlay;
CoCreateInstance(CLSID_ltmmPlay, NULL, CLSCTX_INPROC_SERVER, IID_IltmmPlay, (void**) &pPlay);
2. |
You should get the registered processors collection as follows: |
C Source
IltmmProcessors* pProcessors;
IltmmPlay_get_VideoProcessors (pPlay, &pProcessors);
C++ Source
IltmmProcessors* pProcessors;
pPlay->get_VideoProcessors(&pProcessors);
3. |
Find the processor index by name as follows: |
C Source
long index;
BSTR bstr;
// The string below is retrieved from the Filters List utility
bstr = SysAllocString(L"@device:sw:{E526D606-22E7-494C-B81E-AC0A94BFE603}\\{E2B7DB28-38C5-11D5-91F6-00104BDB8FF9}");
IltmmProcessors_Find (pProcessors, bstr, &index);
SysFreeString(bstr);
C++ Source
long index;
BSTR bstr;
// The string below is retrieved from the Filters List utility
bstr = SysAllocString(L"@device:sw:{E526D606-22E7-494C-B81E-AC0A94BFE603}\\{E2B7DB28-38C5-11D5-91F6-00104BDB8FF9}");
pProcessors->Find (bstr, &index);
SysFreeString(bstr);
4. |
You should get the processor interface and the selected processors collection as follows: |
C Source
IltmmProcessors* pSelProcessors;
IltmmProcessor* pProcessor;
// get the processor interface
IltmmProcessors_Item(pProcessors, index, &pProcessor);
// get the selected processors collection
IltmmPlay_get_SelectedVideoProcessors (pPlay, &pSelProcessors);
C++ Source
IltmmProcessors* pSelProcessors;
IltmmProcessor* pProcessor;
// get the processor interface
pProcessors->Item (index, &pProcessor);
// get the selected processors collection
pPlay->get_SelectedVideoProcessors (&pSelProcessors);
5. |
Finally, you should add the processor to the selected processors collection as the first filter as follows: |
C Source
IltmmProcessors_Add (pSelProcessors, pProcessor, 0);
// release interfaces
IUnknown_Release(pProcessor);
IUnknown_Release(pProcessors);
IUnknown_Release(pSelProcessors);
C++ Source
pSelProcessors->Add (pProcessor, 0);
// release interfaces
pProcessor->Release();
pProcessors->Release();
pSelProcessors->Release();
"font-weight:bold; ">Note: |
If you want to know how to use the interface of the filter, refer to Access the Interface of Filters. |