请教一个关于directshow的source filter开发的问题,谢谢了
因为需求,要做一个播放加密视频文件的工具,于是决定做一个source filter,预先把文件解密,用的是微软的Async例子
majortype = MEDIATYPE_Stream;
subtype = MEDIASUBTYPE_None;
dwKBPerSec = INFINITE;
播放都能播放,也能调整进度,但是调用IMediaSeeking::GetStopPosition,得到的时间永远是0,而返回值却是S_OK,都两天了,一点进展的没有,请问是不是代码有还未实现的功能啊?GetStopPosition是怎样个原理呢?我的source filter不是只需要根据请求向下一个filter发送数据吗?
望哪位高人能在百忙之中抽出时间帮帮忙,真诚地谢谢各位了. directshow filter 视频 加密
[解决办法]
首先要实现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;
}