DirectShow IsUsingTimeFormat与GetTimeFormat

时间:2014-10-06 20:49:45

标签: directshow

我正在阅读DirectShow过滤器的IMediaSeeking接口的文档,并注意到有两种方法似乎做同样的事情,语义略有不同。

问题是应该何时使用另一个?

文档指出IsUsingTimeFormat稍微高效一点,因为它不需要额外的mem copy操作,但除此之外,是否还有其他理由选择其中一个?

2 个答案:

答案 0 :(得分:1)

主要区别在于你想做什么。

GetTimeFormat(...)在GUID结构中写入您传递正在使用的时间格式,如果成功获取时间格式,则返回S_OK。

另一方面,当使用IsUsingTimeFormat(...)时,如果您通过其参数传递的GUID结构是它正在使用的GUID结构,那么您正在查询过滤器。

那么使用哪一个取决于你想做什么,如果它使用特定的GUID或尝试从过滤器获取时间格式的GUID,则查询过滤器。

答案 1 :(得分:1)

区别在于right there mentioned in the documetnation

  

此方法比IMediaSeeking :: GetTimeFormat方法稍微有效,因为它不需要复制GUID。

请记住,这个界面即将庆祝其成立20周年,当时一些不必要的GUID副本产生了一些不同......界面还有其他方法相互重复,也许它不是最好的设计在第一位然后它必须存在以保持兼容性。