directshow实践经验杂谈

directshow实践经验杂谈

ID:15385429

大小:36.50 KB

页数:9页

时间:2018-08-03

directshow实践经验杂谈_第1页
directshow实践经验杂谈_第2页
directshow实践经验杂谈_第3页
directshow实践经验杂谈_第4页
directshow实践经验杂谈_第5页
资源描述:

《directshow实践经验杂谈》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DirectShow实践经验杂谈1.当向FilterGraph中加入同一个Filter的多个实例时,使用Intelligentconnect,优先使用最晚加入FilterGraph中的那个Filter实例。2.使用IGraphConfig接口可以将Filter加入Cache,以在Intelligentconnect时,提高该Filter的连接优先级。如果要加入Cache的Filter已在Graph中,确信它的所有Pin处于断开状态,而且调用IGraphConfig::AddFilterToCache之后,Graph中的Filter实例会自动Remove掉;当Intelligentco

2、nnect之后,使用了Cache中的某个Filter实例,则这个Filter实例会被自动加入到Graph,而Cache中这个Filter实例也会被Remove掉。3.在调试Filter时,每次进入CheckMediaType的Mediatype,我们在VC中只能看到一串UUID数字,很麻烦!下面的代码能将Mediatype的描述信息Dump到VC的Outputwindow:voidDisplayMediaType(TCHAR*pDescription,constCMediaType*pmt){//DumptheGUIDtypesandashortdescriptionDbgLog((

3、LOG_TRACE,0,TEXT("")));DbgLog((LOG_TRACE,0,TEXT("%s"),pDescription));DbgLog((LOG_TRACE,0,TEXT("")));DbgLog((LOG_TRACE,0,TEXT("MediaTypeDescription")));DbgLog((LOG_TRACE,0,TEXT("Majortype:%s"),GuidNames[*pmt->Type()]));DbgLog((LOG_TRACE,0,TEXT("Subtype:%s"),GuidNames[*pmt->Subtype()]));DbgLog((L

4、OG_TRACE,0,TEXT("Subtypedescription:%s"),GetSubtypeName(pmt->Subtype())));DbgLog((LOG_TRACE,0,TEXT("Formatsize:%d"),pmt->cbFormat));//DumpthegenericmediatypesDbgLog((LOG_TRACE,0,TEXT("Fixedsizesample%d"),pmt->IsFixedSize()));DbgLog((LOG_TRACE,0,TEXT("Temporalcompression%d"),pmt->IsTemporalCompr

5、essed()));DbgLog((LOG_TRACE,0,TEXT("Samplesize%d"),pmt->GetSampleSize()));}4.调试Filter时,想要知道程序是否进入某个函数,可以使用如下的宏定义:#defineDbgFunc(a)DbgLog((LOG_TRACE,0,TEXT("CFltTracer(Instance%d)::%s"),mThisInstance,TEXT(a)));使用方法为:CFltTracer::~CFltTracer(){//Othercleaningwork...DbgFunc("~CFltTracer");}5.如

6、下的代码,可以将DirectShow的错误码以文本的方式显示出来:voidShowError(HRESULThr){if(FAILED(hr)){TCHARszErr[MAX_ERROR_TEXT_LEN];DWORDres=AMGetErrorText(hr,szErr,MAX_ERROR_TEXT_LEN);if(res==0){wsprintf(szErr,"UnknownError:0x%2x",hr);}MessageBox(0,szErr,TEXT("Error!"),MB_OK

7、MB_ICONERROR);}}6.0进行DVcamcorder编程时要注意,当Filter

8、Graph在运行,而将Camcorder置于Paused状态,"MicrosoftDVCameraandVCR"仍然会不停地将Paused时刻的那一帧不断地发送出来(因为DirectShow主要是为Playback设计的,所以这一点对于压缩、合成、写文件的应用非常头疼),送出的Sample时间戳线性递增;而将Camcorder置于Stopped状态,"MicrosoftDVCameraandVCR"也就不再送出数据。而FilterGraph上的Pause、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。