N
newbievn
The code below is from Microsoft MSDN example for DirectShow:
CODE
#include <dshow.h>
void main(void)
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
// Initialize the COM library.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("ERROR - Could not initialize COM
library");
return;
}
// Create the filter graph manager and query for interfaces.
hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void
**)&pGraph);
if (FAILED(hr))
{
printf("ERROR - Could not create the Filter Graph
Manager.");
return;
}
hr = pGraph->QueryInterface(IID_IMediaControl, (void
**)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void
**)&pEvent);
// Build the graph. IMPORTANT: Change this string to a file on
your system.
hr = pGraph->RenderFile(L"C:\\Example.avi",
NULL);
if (SUCCEEDED(hr))
{
// Run the graph.
hr = pControl->Run();
if (SUCCEEDED(hr))
{
// Wait for completion.
long evCode;
pEvent->WaitForCompletion(INFINITE,
&evCode);
// Note: Do not use INFINITE in a real application,
because it
// can block indefinitely.
}
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
}
I have install Directx 9.0 SDK, Platform SDK and include the library
needed into project setting (Strmiids.lib and Quartz.lib) Link and
Directory (Microsoft DirectX 9.0 SDK (December 2004)\Include).
This code is run perfectly when playing video file.
BUT, when i try to add the ICaptureGraphBuilder2 interface to receives
the pointer to capture Video:
ICaptureGraphBuilder2 **ppBuild // Receives the pointer
It generate errors about some headers file.
Any1 can help me?
Is there any header file needed, or i do something wrong with the
setting?
CODE
#include <dshow.h>
void main(void)
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
// Initialize the COM library.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("ERROR - Could not initialize COM
library");
return;
}
// Create the filter graph manager and query for interfaces.
hr = CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void
**)&pGraph);
if (FAILED(hr))
{
printf("ERROR - Could not create the Filter Graph
Manager.");
return;
}
hr = pGraph->QueryInterface(IID_IMediaControl, (void
**)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void
**)&pEvent);
// Build the graph. IMPORTANT: Change this string to a file on
your system.
hr = pGraph->RenderFile(L"C:\\Example.avi",
NULL);
if (SUCCEEDED(hr))
{
// Run the graph.
hr = pControl->Run();
if (SUCCEEDED(hr))
{
// Wait for completion.
long evCode;
pEvent->WaitForCompletion(INFINITE,
&evCode);
// Note: Do not use INFINITE in a real application,
because it
// can block indefinitely.
}
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
}
I have install Directx 9.0 SDK, Platform SDK and include the library
needed into project setting (Strmiids.lib and Quartz.lib) Link and
Directory (Microsoft DirectX 9.0 SDK (December 2004)\Include).
This code is run perfectly when playing video file.
BUT, when i try to add the ICaptureGraphBuilder2 interface to receives
the pointer to capture Video:
ICaptureGraphBuilder2 **ppBuild // Receives the pointer
It generate errors about some headers file.
Any1 can help me?
Is there any header file needed, or i do something wrong with the
setting?