DirectShow: Help me debug please


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?
 
Ad

Advertisements

A

Antti Keskinen

Hi !

First, the interface pointers are always declared as follows:

ICaptureGraphBuilder2* pCapture = NULL;

Otherwise, the only possible thing wrong with your code is a syntax error or
an incorrect DX SDK installation. ICaptureGraphBuilder2 interface definition
is included in dshow.h, like the manual states. You can also use Find in
Files function to search through the include files of the SDK directories to
determine if the interface definition is visible to the compilation unit (in
english, the correct header is included).

Why don't you post the errors you receive when trying to add the above line
?

-Antti Keskinen


newbievn said:
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?
 
Ad

Advertisements

S

Severian

You should find lots of help on

microsoft.public.win32.programmer.dirextx.sdk

&

microsoft.public.win32 programmer directx.video

So long as I typed them correctly.'Slate and all.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top