请教一个关于directshow的source filter开发的问题,谢谢了

lizelglg3hao 2013-09-13 02:53:33
因为需求,要做一个播放加密视频文件的工具,于是决定做一个source filter,预先把文件解密,用的是微软的Async例子
majortype = MEDIATYPE_Stream;
subtype = MEDIASUBTYPE_None;
dwKBPerSec = INFINITE;
播放都能播放,也能调整进度,但是调用IMediaSeeking::GetStopPosition,得到的时间永远是0,而返回值却是S_OK,都两天了,一点进展的没有,请问是不是代码有还未实现的功能啊?GetStopPosition是怎样个原理呢?我的source filter不是只需要根据请求向下一个filter发送数据吗?
望哪位高人能在百忙之中抽出时间帮帮忙,真诚地谢谢各位了.
...全文
161 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizelglg3hao 2013-09-16
  • 打赏
  • 举报
回复
引用 楼主 lizelglg3hao 的回复:
因为需求,要做一个播放加密视频文件的工具,于是决定做一个source filter,预先把文件解密,用的是微软的Async例子 majortype = MEDIATYPE_Stream; subtype = MEDIASUBTYPE_None; dwKBPerSec = INFINITE; 播放都能播放,也能调整进度,但是调用IMediaSeeking::GetStopPosition,得到的时间永远是0,而返回值却是S_OK,都两天了,一点进展的没有,请问是不是代码有还未实现的功能啊?GetStopPosition是怎样个原理呢?我的source filter不是只需要根据请求向下一个filter发送数据吗? 望哪位高人能在百忙之中抽出时间帮帮忙,真诚地谢谢各位了.
你好,朋友,可是为啥那个filter没实现你说的那些,但是却能正确对avi进行seeking,如果需要实现你说的那些东西,是不是指我得解析视频的文件信息之类的啊?
ArcRain 2013-09-14
  • 打赏
  • 举报
回复
首先要实现GetCapabilities,然后根据你实现的SourceFilter特性,再去实现特性相关的函数。

STDMETHODIMP SourceFilter::GetCapabilities(DWORD* pdwCapabilities)
{
	(*pdwCapabilities) = AM_SEEKING_CanSeekForwards | AM_SEEKING_CanSeekBackwards | AM_SEEKING_CanSeekAbsolute | AM_SEEKING_CanGetCurrentPos | AM_SEEKING_CanGetStopPos  | AM_SEEKING_CanGetDuration;
	
	return S_OK;
}

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧