1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| HRESULT initStreams(SMoviePlayer *mp,int volume)
{
HRESULT hr = S_OK;
IBaseFilter *pFTR; // Texture Renderer Filter
IBaseFilter *pFSrc; // Source Filter
IPin *pFSrcPinOut; // Source Filter Output Pin
IPin *pFTRPinIn; // Texture Renderer Input Pin
// Create the filter graph
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (LPVOID*)&g_pGB);
//if (FAILED(g_pGB.CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC)))
// return E_FAIL;
// Create the Texture Renderer object
mp->pCTR = new CTextureRenderer(NULL, &hr);
if (FAILED(hr) || !mp->pCTR)
{
werrorv("Could not create texture renderer object! hr=", hr);
return E_FAIL;
}
// Get a pointer to the IBaseFilter on the TextureRenderer, add it to graph
pFTR = mp->pCTR;
if (FAILED(hr = g_pGB->AddFilter(pFTR, L"TEXTURERENDERER")))
{
werrorv("Could not add renderer filter to graph! hr=", hr);
return hr;
}
WCHAR wFileName[MAX_PATH];
MultiByteToWideChar(CP_ACP, NULL,mp->cVideoFile, MAX_PATH, wFileName, MAX_PATH);
// Add the source filter to the graph.
hr = g_pGB->AddSourceFilter (wFileName, L"SOURCE", &pFSrc);
if(FAILED(hr))
{
werrorv("Could not add source filter to graph! hr=", hr);
return hr;
} |
Partager