Adding Windows Media Support to the ltmmCapture Object for C
The following code demonstrates how to add Windows Media support to the ltmmCapture Object.
// define helper macros for using interfaces under C
#define COBJMACROS
#include "ltmm.h"
#include "assert.h"
HINSTANCE g_hInstance; // application instance handle
IltmmCapture* g_pCapture; // capture object's interface pointer
// declare the windows media certificate creation function
HRESULT STDMETHODCALLTYPE WMCreateCertificate( IUnknown** pUnkCert );
// link the stub library
#pragma comment(lib, "wmstub.lib")
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HRESULT hr;
IUnknown* punkCert;
g_hInstance = hInstance;
// initialize COM library
hr = CoInitialize(NULL);
if(FAILED(hr))
goto error;
// create the capture object
hr = CoCreateInstance(&CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmCapture, (void**) &g_pCapture);
if(FAILED(hr))
goto error;
// create windows media certificate
hr = WMCreateCertificate(&punkCert);
if(SUCCEEDED(hr))
{
// assign the certificate to the capture object
IltmmCapture_put_WMCertificate (g_pCapture, punkCert);
IUnknown_Release(punkCert);
}
#ifdef _DEBUG
{
// verify assignment
IltmmCapture_get_WMCertificate (g_pCapture, &punkCert);
assert(punkCert != NULL);
if(punkCert)
IUnknown_Release(punkCert);
}
#endif
// TODO: place additional code here
error:
// cleanup
if(g_pCapture)
IUnknown_Release(g_pCapture);
CoUninitialize();
return 0;
}
The following code demonstrates how to add Windows Media support to the ltmmCapture Object.
// declare the windows media certificate creation function HRESULT STDMETHODCALLTYPE WMCreateCertificate( IUnknown** pUnkCert ); // you need to link the stub library #pragma comment(lib, "wmstub.lib") L_MULTIMEDIATEX_API void AddWindowsMediaSupportCaptureObjectExample ( void ) { HRESULT hr; IltmmCapture* pCapture = NULL; IUnknown* punkCert = NULL; // initialize COM library hr = CoInitialize(NULL); if(FAILED(hr)) goto error; // create the capture object hr = CoCreateInstance(&CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmCapture, (void**) &pCapture); if(FAILED(hr)) goto error; // create windows media certificate hr = WMCreateCertificate(&punkCert); if(SUCCEEDED(hr)) { // assign the certificate to the capture object IltmmCapture_put_WMCertificate (pCapture, punkCert); IUnknown_Release(punkCert); } error: // cleanup if(pCapture) IUnknown_Release(pCapture); CoUninitialize(); }