Search code examples
c++visual-studio-2008media-playermultimedia

"dxvaeapi.h" error


I wrote a small code to find Direct3D device manager,

HRESULT FindDeviceManager(
IMFTopology *pTopology,         // Topology to search.
IUnknown **ppDeviceManager,     // Receives a pointer to the device manager.
IMFTopologyNode **ppNode        // Receives a pointer to the node.
)
{
HRESULT hr = S_OK;
WORD cNodes = 0;
BOOL bFound = FALSE;

IMFTopologyNode *pNode = NULL;
IUnknown *pNodeObject = NULL;
IDirect3DDeviceManager9 *pD3DManager = NULL;

// Search all of the nodes in the topology.

hr = pTopology->GetNodeCount(&cNodes);

if (FAILED(hr))
{
    return hr;
}

for (WORD i = 0; i < cNodes; i++)
{
    // For each of the following calls, failure just means we 
    // did not find the node we're looking for, so keep looking. 

    hr = pTopology->GetNode(i, &pNode);

    // Get the node's object pointer.
    if (SUCCEEDED(hr))
    {
        hr = pNode->GetObject(&pNodeObject);
    }

    // Query the node object for the device manager service.
    if (SUCCEEDED(hr))
    {
        hr = MFGetService(
            pNodeObject, 
            MR_VIDEO_ACCELERATION_SERVICE, 
            IID_PPV_ARGS(&pD3DManager)
            );
    }

    if (SUCCEEDED(hr))
    {
        // Found the right node. Return the pointers to the caller.
        *ppDeviceManager = (IUnknown *)pD3DManager;
        (*ppDeviceManager)->AddRef();

        *ppNode = pNode;
        (*ppNode)->AddRef();

        bFound = TRUE;
        break;
    }

    SafeRelease(&pNodeObject);
    SafeRelease(&pD3DManager);
    SafeRelease(&pNode);

} // End of for loop.

SafeRelease(&pNodeObject);
SafeRelease(&pD3DManager);
SafeRelease(&pNode);

return bFound ? S_OK : E_FAIL;
}

while compiling the above code i'm getting the following error,

 1>c:\program files\microsoft sdks\windows\v7.1\include\dxva2api.h(404) : error C4430: 
 missing type specifier - int assumed. Note: C++ does not support default-int

I had a look into dxva2api.h at line number 404,

 typedef struct _DXVA2_VideoProcessorCaps
 {
  UINT DeviceCaps;
  D3DPOOL InputPool;  //--> this is line number 404.

the parameter D3DPOOL is defined in "d3d9types.h" but that is not included in "dxva2api.h". I tried to modify "dxva2api.h", but operation failed. How to fix this? Any suggestions?

thanks in advance,

Sri


Solution

  • Are you including the header "d3d9.h" ?

    Also they a look at this. http://msdn.microsoft.com/en-us/library/ff552897%28v=vs.85%29.aspx