📄 subject_55404.htm
字号:
<p>
序号:55404 发表者:ponyma 发表日期:2003-10-09 16:31:01
<br>主题:网络播放时使用CAsyncReader的问题
<br>内容:我从CAsyncStream派生重载Read函数,在Read函数中读取网络线程接受到的数据进行播放。遇到一些迷惑的现象。<BR>客户端在运行的状态下一切正常,但是在Debug的时候有些时候会无法播放(有些时候可以),EC_PAUSED没有收到。我播放的是Mpeg2的码流,下面是我log的一些数据:<BR>1)在建立FilterGraph的时候,最开始会Read 32768大小的一个数据,然后每次read的大小为131072。<BR>2)在我的机器上,EC_PAUSED收到的时间是在Read了一个32768大小的数据和32个131072大小的数据之后。<BR>3)在Debug的时候,如果没有收到EC_PAUSED,Log文件里显示只Read了一个32768的包和一个131072的包。<BR>请问Debug状态下,有时候无法收到EC_PAUSED可能会是什么原因呢?为什么Read函数只读了两次就不读了呢?<BR>EC_PAUSED是在什么条件下被发出的事件呢?<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:gzast163 回复日期:2003-10-09 19:27:43
<br>内容:每次read多少个字节是由splitter决定的。splitter要预读一些数据来分析MPEG2的视频和音频格式,当播放时又把指针归零。
<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-10-10 09:43:36
<br>内容:“当播放时又把指针归零”的意思是说第一次读的32768的数据和第二次读的131072的数据的前32768是相同的对吗?(我想前32768的数据就应该是splitter用来分析用的吧)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:gzast163 回复日期:2003-10-10 10:44:31
<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-10-10 12:03:22
<br>内容:恩,我指的也时这个意思,我刚才debug的时候也证实了,但是我的问题还是没有解决,就时在debug状态下在读了2个包之后会引起BeginFlush的调用而导致可能的死锁,所以我一直就没有收到EC_PAUSED,而从Log的情况看在运行的状态的BeginFlush只有码流完了才会调用BeginFlush。除了MediaSeek外还有哪些情况会让splitter调用BeginFlush呢?
<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 + -