⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_50400.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:50400 发表者:ponyma 发表日期:2003-08-20 17:34:20
<br>主题:关于CAsyncReader
<br>内容:我想以CAsyncReader为base class写一个从Memory里读数据的filter,通过override CAsyncStream中的Read()函数。<BR>但是我不知道如果我注册的Streamtype为:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMediaType&nbsp;&nbsp; mt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt.majortype = MEDIATYPE_Stream<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt.subtype&nbsp;&nbsp; = MEDIASUBTYPE_NULL;<BR>这个SourceFilter是怎样被Render的?(通过调用GraphFilter的Render)<BR>因为这个时候subtype是MEDIASUBTYPE_NULL;<BR>我跟踪代码的时候发现在我的filterGraph开始run之前,Read()就被调用了,<BR>调用源在哪里呢?<BR>我怀疑是不是因为build filterGraph的时候需要知道内存中的media的具体类型所以需要调用Read来作出判断,这个问题迷惑了我两天了,请高手指教,不胜感激。<BR>还有read函数中dwBytesToRead是哪里指定的,(跟踪发现是32768)<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual HRESULT Read(PBYTE pbBuffer,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD dwBytesToRead,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL bAlign,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPDWORD pdwBytesRead) = 0;
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:绍辉 回复日期:2003-08-28 12:57:14
<br>内容:你必须自己指定一个subtype类型,否则的话不能使用Render来自动创建Filter Graph。<BR>Read调用是在Render过程中调用的。dwBytesToRead应该是下游Filter指定的,不同的Filter指定的值可能不一样。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ponyma 回复日期:2003-08-28 13:11:50
<br>内容:谢谢绍辉,<BR>但是如果subtype指定为MEDIASUBTYPE_NULL的时候,在建立filterGraph之前是否需要分析真正的具体的media格式呢?render调用read的目的是想要做什么呢?<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:绍辉 回复日期:2003-08-28 13:35:11
<br>内容:如果subtype指定为MEDIASUBTYPE_NULL的时候,就看系统中有没有Filter接受subtype为MEDIASUBTYPE_NULL的输入了。Render调用read不过是为了给下游Filter验证数据是不是真正你指定的subtype类型。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ponyma 回复日期:2003-08-28 16:32:23
<br>内容:下游的filter接受NULL的subtype?我不是很理解这个意思。我原来的理解是在建立了filtergraph之后,filterGraph所能接受的Subtype都应该具体确定了。。。render调用read的目的是为了分析数据格式,然后根据确定的格式寻找合适的filter进行连接。而不是以subtype为NULL的格式进行连接。<BR>我只是这么猜测,不知道对不对。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:绍辉 回复日期:2003-08-28 17:48:09
<br>内容:不是这样,否则的话要媒体类型干什么?都能自动检测嘛。<BR>你说的CAsyncReader我也基于它做过东西,如果不指定subtype的或者subtype和实际数据不符的话,都不能建立filter graph。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ponyma 回复日期:2003-08-29 09:00:10
<br>内容:如果不指定subtype的或者subtype和实际数据不符的话,确实不能建立filter graph,但如果指定subtype为NULL的话,连接后的subtype应该不是NULL吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -