to happydeer:关于DirectShow 开发指南中的问题.......
lllxy 2004-12-22 03:28:08 在DirectShow开发指南中,第18章的例子:关于网络传播一个mpeg文件然后进行播放的问题,现在我有一个问题:
就是本地播放一个mpeg文件的时候,我也使用推模式,就是调用你的改好的代码:asyncrdr.cpp asyncrdr.h asyncio.cpp asyncio.h memfilter.h 只不过我在 memfilter.h中的CMemReader:Read()函数中,直接读取文件中的数据,这样进行播放mpeg可以吗?好像大家都使用renderfile()函数去直接播放。这样有什么不同呢?其实,我想如果我这样做成功的话,那么播放网络数据也就成功。只不过是数据的来源不同。我现在没有测试成功,能够从文件中读取到数据,就是不能够正确播放。不知道在那个地方有问题,请指点一下该如何去调试 谢谢。
HRESULT Read(PBYTE pbBuffer,
DWORD dwBytesToRead,
BOOL bAlign,
LPDWORD pdwBytesRead)
{
CAutoLock lck(&m_csLock);
DWORD dwTime = timeGetTime();
if(!m_flagOpen)
{
DWORD dwFlags = MMIO_READ;
hmmioFile = mmioOpen(m_MPEG1FileName, (LPMMIOINFO)NULL, dwFlags);
m_flagOpen = true;
}
LONG result = mmioRead(hmmioFile, (char*)pbBuffer,32000);
*pdwBytesRead = result;
return S_OK;
}