Texture Renderer
От: codegrinder  
Дата: 24.11.06 18:49
Оценка:
Всем привет!

Разрабатываю 2D игру под DX8, мне нужно воспроизводить wmv ролики в полноэкранном режиме, я делаю это с помощью адаптированного Texture Renderer из примера DX8 SDK (mssdk/samples/Multimedia/DirectShow/Players/Texture3D). Беда в том что он почему-то отказывается воспроизводить ролики на некоторых машинах причем вроде как на этапе построения графа. В чём может быть загвоздка и как это можно поправить? Граф строю так (к этому моменту экземпляр класса уже создан, а остальные методы фильтра идентичны примеру):

HRESULT CTextureRenderer::PrepareVideo(LPDIRECT3DDEVICE8 pD3DDevice,LPCTSTR pszFile) {
HRESULT hr = S_OK;
CComPtr<IBaseFilter> pFTR; // Texture Renderer Filter
CComPtr<IPin> pFTRPinIn; // Texture Renderer Input Pin
CComPtr<IBaseFilter> pFSrc; // Source Filter
CComPtr<IPin> pFSrcPinOut; // Source Filter Output Pin
CTextureRenderer* pCTR; // DShow Texture renderer

m_pd3dDevice = pD3DDevice;

#if defined(UNICODE)
lstrcpy(m_wFileName,pszFile);
#else
MultiByteToWideChar(CP_ACP, 0, pszFile, -1, m_wFileName, MAX_PATH);
#endif

// Create the filter graph
if (FAILED(m_pGB.CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC)))
return E_FAIL;

// Create the Texture Renderer object
pCTR = this;
//if (FAILED(hr))
//Msg(TEXT("Could not create texture renderer object! hr=0x%x"), hr);
// return E_FAIL;

// Get a pointer to the IBaseFilter on the TextureRenderer, add it to graph
pFTR = pCTR;
if (FAILED(hr = m_pGB->AddFilter(pFTR, L"TEXTURERENDERER")))
//Msg(TEXT("Could not add renderer filter to graph! hr=0x%x"), hr);
return hr;

if (FAILED(hr = m_pGB->RenderFile(m_wFileName,NULL)))
return hr;

// Get the graph's media control, event & position interfaces
m_pGB.QueryInterface(&m_pMC);
m_pGB.QueryInterface(&m_pMP);
m_pGB.QueryInterface(&m_pME);

return S_OK;
}
Re: Texture Renderer
От: codegrinder  
Дата: 26.12.06 09:32
Оценка:
Здравствуйте, codegrinder, Вы писали:

C>Разрабатываю 2D игру под DX8, мне нужно воспроизводить wmv ролики в полноэкранном режиме, я делаю это с помощью адаптированного Texture Renderer из примера DX8 SDK (mssdk/samples/Multimedia/DirectShow/Players/Texture3D). Беда в том что он почему-то отказывается воспроизводить ролики на некоторых машинах причем вроде как на этапе построения графа. В чём может быть загвоздка и как это можно поправить? Граф строю так (к этому моменту экземпляр класса уже создан, а остальные методы фильтра идентичны примеру):


Поздно, уже использую ffmpeg.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.