在GraphEdit中,你可以在DirectShow Filters目录中找到这个Filter,它的名字为“Fitler Tracer”。下面,笔者就以问答的方式介绍一下这个Filter的使用。
1. 如何使用这个Filter?
答:运行GraphEdit,首先构建好你的Filter Graph链路。然后,加入“Filter Tracer” Filter,并将其接入到Filter链路的适当位置或保持其未连接状态。打开Filter的属性页进行操作即可。
2. 如何查看Filter Graph中的所有Filter的状态?
答:加入“Filter Tracer” Filter并打开其属性页,在“Graph Info”页中,你可以看到列出的当前Filter Graph中的所有Filter。在“Filter”组合框中,选择一个你想查看的Filter。于是,下面就列出了这个Filter的所有的Pin,以及每个Pin对应的当前的(如果Pin处于连接成功状态)或所有支持的Mediatype(如果Pin处于断开状态)。
3. 如何知道Filter是否进行了正确的连接?
答:一般在“Graph Info”页中查看当前Filter的连接Mediatype:看Majortype、Subtype和Formattype是否正确;查看“Format Details”中描述的信息是否与你期望的一样。通过选择单选框“Text”或“Hex”,你可以看到“Format Details”的两种不同形式。
4. 如何方面地得到指定Filter的CLSID?
答:在Filter Graph中加入你想要查看的那个Filter,然后在“Filter Tracer”的“Graph Info”页中选中这个Filter,在属性页的最下面“Filter CLSID”中便可以看到这个Filter的Friendly Name和CLSID。双击字符串,通过右键菜单可以将CLSID拷贝到剪贴板中。
5. 如何在“Filter Tracer”的属性页中直接打开指定Filter的属性页?
答:在“Graph Info”页中选中某Filter,然后直接点击“Filter”组合框右侧的“…”按钮。
6. 如何将Filter Graph的某条链路阻塞?
答:加入“Filter Tracer”Filter接入这条Filter链路,打开其属性页,在“Filter Tracer”页中,将“Receive”多选框打上勾。注意:在你停止Filter Graph之前,务必取消阻塞状态。
7. 如何在Filter传送Sample时去掉时间戳?
答:加入“Filter Tracer”Filter接入这条Filter链路,在“Filter Tracer”页中,将“TStamp”多选框打上勾。于是,Sample到达Renderer时会直接播放。
8. 如何将Quality Control的Notify断掉?
答:加入“Filter Tracer”Filter接入这条Filter链路。在“Filter Tracer”页中,将“Notify”多选框打上勾。于是,Renderer Filter发送的通知就不会沿着这条链路达到Source filter了。
9. 如何将Mediaseeking链路断开?
答:大家知道,Filter Graph Manager从Renderer filter开始一级一级往上申请的到Mediaseeking接口。我们要将这个申请链路断开,只需将“Filter Tracer”Filter接入这条Filter链路,并且在“Filter Tracer”页中将“MSeeking”多选框打上勾。
10. 我想让Filter Graph传送Sample一个一个交互进行,怎么办?
答:加入“Filter Tracer”Filter并将其接入,在“Filter Tracer”页中将“StepSample”多选框打上勾。运行Filter Graph,每次按下“Feature Diagnosing”组的“StepSample”按钮即可完成当前一个Sample的传送。注意:务必在停止Filter Graph之前取消“StepSample”状态。
11. 如何将Sample的裸数据写到文件中?
答:在“Filter Tracer”页中将“Get Sample Data”多选框打上勾。
12. 如何将每个Sample的属性信息写到文件中?
答:在“Filter Tracer”页中将“Get Sample Info”多选框打上勾。
13. 如何将当前连接的Format二进制数据写到文件中?
答:在“Filter Tracer”页中将“Get Media Format”多选框打上勾。
14. 如何统计整个链路回放实际的帧率?
答:在“Filter Tracer”页中将“Get Frame Rate”多选框打上勾。运行Filter Graph,运行的时间越久,统计的帧率越精确。
15. 如何将某个Sample的数据写成一个BMP文件?
答:请先在“Filter Tracer”页中将“Write a BMP File”多选框打上勾,然后将“Filter Tracer”Filter接入,一般在“Video Renderer”的前一个位置。注意,此时“Filter Tracer”Filter只接受RGB24或RGB32的Mediatype。另外,在“No.”后面可以指定将第几个Sample写到文件中去。
16. 如何对Filter Graph的Mediaseeking接口进行测试?
答:将“Filter Tracer”Filter接入,在其“Filter Tracer”属性页的“Feature Diagnosing”组中点击“Get_Pos”按钮:通过“Filter Tracer”Filter的Input Pin取得ImediaSeeking接口获取当前位置;“Reset_Pos”按钮:通过“Filter Tracer”Filter的Input Pin取得ImediaSeeking接口并调用“SetPosition”方法;“Reset_Graph”按钮:通过Filter Graph Manager的ImediaSeeking接口调用“SetPosition”方法。
17. 如何实时监测每一个传送的Sample?
答:将“Filter Tracer”Filter接入适当的位置,运行Filter Graph,你就可以看到一个监视窗口。在这个监视窗口中,你可以看到Filter Graph运行的系统时间,每个Sample的起讫时间,Sample传送的个数、进度等信息。你同样可以通过监视窗口的右键菜单实现一些控制,比如运行、暂停、停止Filter Graph,调整Sample的传送速度等等。
18. 如何往当前Filter Graph中加入一个其他Filter?
答:有时候,我们仅需要“Filter Tracer”Filter打印一些信息,最后面的Renderer filter可以接一个“Null Renderer”什么也不做。你只需要在“Filter Tracer”属性页中“Tools”组中,点击“Add”按钮。
19. 如何修改指定Filter的“Merit”值?
答:在“Filter Tracer”属性页中“Tools”组中,首先在“Filter CLSID”输入指定的Filter,然后点击“Get”按钮,读出了这个Filter注册的Friendly Name和现有的Merit值。你可以修改这个“Merit”值,并点击“Set”按钮进行设置。
20. 在Filter Graph中某个Filter的一个Output Pin支持很多种Mediatype,但是我只想用其中某一种进行连接,怎么办?
答:将“Filter Tracer”Filter接入到这个Filter的后面,打开属性页,在“MyOutput”页中,可以看到所有的Mediatype,选择其中一种,按下“Apply”。然后再将“Filter Tracer”Filter的Output Pin往下连接即可。
阅读(2402) | 评论(0) | 转发(0) |