社区
ATL
帖子详情
directshow stop函数
xxwy89
2013-03-25 07:33:52
自己弄了一个源滤镜添加H.264裸视频流,后面跟上推模式下的分离器,以及解码器,渲染器,但是播放过程中调用IMediaControl的成员函数Stop(),百分之九十九卡死在这一行,请问怎么处理呀?
...全文
194
7
打赏
收藏
directshow stop函数
自己弄了一个源滤镜添加H.264裸视频流,后面跟上推模式下的分离器,以及解码器,渲染器,但是播放过程中调用IMediaControl的成员函数Stop(),百分之九十九卡死在这一行,请问怎么处理呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lsldragon
2013-12-25
打赏
举报
回复
我是运行停止三次,一般前两次正常,第三次卡死
lsldragon
2013-12-25
打赏
举报
回复
指点一下,我也卡死在这儿了,不知道什么问题
luoliba007
2013-10-17
打赏
举报
回复
请问要怎么样才能让线程退出来呢?
luoliba007
2013-10-17
打赏
举报
回复
楼主,你这个问题解决没有呢?我现在做directshow释放的时候调用stop,也会卡死在这一句,实在是不明白到底是哪里出了问题,如果楼主解决了,还请指教,谢谢了。
xxwy89
2013-03-27
打赏
举报
回复
这是sourcefilter的几个方法实现,各位大侠帮忙看看: CInputDataFilter::CInputDataFilter(LPUNKNOWN lpunk, HRESULT *phr) : CSource(NAME("InputData Filter"), lpunk, CLSID_InputData_Filter) { ASSERT(phr); CAutoLock cAutoLock(&m_cStateLock); m_paStreams = (CSourceStream **)new CDataOutputPin*[1]; if(m_paStreams == NULL) { if(phr) *phr = E_OUTOFMEMORY; return; } m_paStreams[0] = new CDataOutputPin(phr, this, L"Output"); if(m_paStreams[0] == NULL) { if(phr) *phr = E_OUTOFMEMORY; return; } m_mediaType.InitMediaType(); } CInputDataFilter::~CInputDataFilter() { m_listBuffer.clear(); } CUnknown * WINAPI CInputDataFilter::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) { ASSERT(phr); CAutoLock cAutoLock(&m_cStateLock); CUnknown *punk = new CInputDataFilter(lpunk, phr); if(punk == NULL) { if(phr) *phr = E_OUTOFMEMORY; } return punk; } STDMETHODIMP CInputDataFilter::NonDelegatingQueryInterface(REFIID riid, void ** ppv) { CAutoLock cAutoLock(&m_cStateLock); CheckPointer(ppv, E_POINTER); if (riid == IID_IInputData) { return GetInterface((IInputData*) this, ppv); } else { return CSource::NonDelegatingQueryInterface(riid, ppv); } } STDMETHODIMP CInputDataFilter::SetMediaType(AM_MEDIA_TYPE *pMediaType) { CAutoLock cAutoLock(pStateLock()); CheckPointer(pMediaType, E_POINTER); CMediaType mediaType(*pMediaType); m_mediaType = *pMediaType; return NOERROR; } STDMETHODIMP CInputDataFilter::PushData(BYTE *inBuffer, int length) { CAutoLock cAutoLock(pStateLock()); string cBuffer; cBuffer.assign((char*)inBuffer, length); m_listBuffer.push_back(cBuffer); return NOERROR; }
Daisy__Ben
2013-03-26
打赏
举报
回复
围观中……LZ太强悍了,但是问题描述的有点简单 如果有必要,可以贴下IBaseFilter上的那几个控制函数的实现
ArcRain
2013-03-25
打赏
举报
回复
DEBUG调试时可以暂停进程,看看函数调用堆栈在哪个模块没退出来。 STOP里的话,基本上是线程没退出来。
C#全能速查宝典
1.4.11 First
函数
——返回查询结果的第一个记录 55 1.4.12 FirstDayOfWeek属性——获取或设置一周中的第一天 56 1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE
函数
——返回当前系统日期和时间 58 1.4.15 ...
Stop
sequence of
directshow
in WINCE
ImediaControl->
Stop
WhenReady()ImediaControl->WaitForComplete()ImediaControl->Release()If there is no WaitForComplete,but releasedirrectly, your application may cause exception ...
Windows之5:
DirectShow
+H.264+AAC采集编码
这个课程主要讲解的是
DirectShow
的音视频框架,然后结合H.264+AAC进行音视频编码。 本课程适合Windows平台的学员,DShow框架比较通用,适合音视频采集及处理。 主要的知识点包括DShow基础及Filter原理、DShow配置...
最简单的基于
DirectShow
的示例:视频播放器图形界面版
本文记录一个最简单的基于
DirectShow
的图形界面的视频...因为
DirectShow
本身的接口
函数
的数量就比较多,如果再加上封装
DirectShow
的
函数
,合起来的
函数
数量是非常大的,很容易让人搞不清哪些才是真正的
DirectShow
接口
DirectShow
中例子pull模式的源filter播放大文件慢的问题
DirectShow
自带的例子中,有一个pull拉模式的Source Filter例子程序(Async那个),在它的Load()
函数
(装载源文件)里面调用了Read()
函数
,这里它是将整个源文件都读入内存中(所以播放小文件不太影响而播放大文件开始要等很...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章