This example shows how to add stream scripts from a capture graph.
#define MAKE_MEDIA_PATH(pFileName) (TEXT("C:\\LEADTOOLS 21\\Media\\")TEXT(pFileName))void IltmmWMScript_CreateScriptStream_Example(IltmmCapture *pCapture){HRESULT hr = S_OK;IUnknown *punk;IltmmWMScript *pWMScript;// source and target path namesBSTR bstrTarget = SysAllocString(MAKE_MEDIA_PATH("source_script.wmv"));// set the source, target and WMV target formats for our conversionhr = SelectCaptureDevices(pCapture);if (FAILED(hr)){MessageBox(NULL, L"Unable to select capture devices", L"WMScripting Example", MB_OK);return;}IltmmCapture_put_TargetFile(pCapture, bstrTarget);IltmmCapture_put_TargetFormat(pCapture, ltmmCapture_TargetFormat_WMV_Mux);// free the BSTRSysFreeString(bstrTarget);// get the target objectIltmmCapture_GetSubObject(pCapture, ltmmCapture_Object_TargetFilter, &punk);if (punk){// get the WMScript objectIUnknown_QueryInterface(punk, &IID_IltmmWMScript, (void**)&pWMScript);if (pWMScript){WCHAR szTemp[128];double scriptTime;BSTR bstrScriptCmd;// turn off stream scripts and remove any header scriptsIltmmWMScript_put_EnableScriptStream(pWMScript, VARIANT_TRUE);IltmmWMScript_RemoveAllHeaderScripts(pWMScript);// create a sample header script (type of caption) and set it to execute @ 2 secs into capturescriptTime = 2.0;swprintf_s(szTemp, _countof(szTemp), L"Sample caption script at %g seconds", scriptTime);bstrScriptCmd = SysAllocString(szTemp);// add the header scripthr = IltmmWMScript_WriteScriptStream(pWMScript, L"caption", bstrScriptCmd, scriptTime);// free the bstrSysFreeString(bstrScriptCmd);// now close the script streamhr = IltmmWMScript_CloseScriptStream(pWMScript);IUnknown_Release(pWMScript);}// if all is well, run the capture nowif (SUCCEEDED(hr))hr = IltmmCapture_StartCapture(pCapture, ltmmCapture_Mode_VideoAndAudio);IUnknown_Release(punk);}}BOOL SelectDeviceLike(IltmmDevices *pDevices, LPTSTR szDevSrch){BOOL bFound = FALSE;long i, count = 0;IltmmDevices_put_Selection(pDevices, -1);IltmmDevices_get_Count(pDevices, &count);for(i = 0; i < count; i++){IltmmDevice *pDevice;BSTR name;IltmmDevices_Item(pDevices, i, &pDevice);if (pDevice){// get the friendly name for comparisson checkIltmmDevice_get_FriendlyName(pDevice, &name);// if the device name contains our search string, select itif(!wcsstr(name, szDevSrch)){IltmmDevices_put_Selection(pDevices, i);IltmmDevice_Release(pDevice);SysFreeString(name);bFound = TRUE;break;}SysFreeString(name);IltmmDevice_Release(pDevice);pDevice = NULL;}}return bFound;}HRESULT SelectCaptureDevices(IltmmCapture *pCapture){IltmmDevices *pDevices;BOOL bSelected = FALSE;IltmmCapture_get_VideoDevices(pCapture, &pDevices);if (!pDevices)return E_FAIL;bSelected = SelectDeviceLike(pDevices, L"Logitech");IltmmDevices_Release(pDevices);pDevices = NULL;if (!bSelected)return E_FAIL;bSelected = FALSE;IltmmCapture_get_AudioDevices(pCapture, &pDevices);if (!pDevices)return E_FAIL;bSelected = SelectDeviceLike(pDevices, L"Logitech");IltmmDevices_Release(pDevices);if (!bSelected)return E_FAIL;return S_OK;}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
