我正在阅读DirectShow过滤器的IMediaSeeking接口的文档,并注意到有两种方法似乎做同样的事情,语义略有不同。
问题是应该何时使用另一个?
文档指出IsUsingTimeFormat稍微高效一点,因为它不需要额外的mem copy操作,但除此之外,是否还有其他理由选择其中一个?
答案 0 :(得分:1)
主要区别在于你想做什么。
GetTimeFormat(...)
在GUID结构中写入您传递正在使用的时间格式,如果成功获取时间格式,则返回S_OK。
另一方面,当使用IsUsingTimeFormat(...)
时,如果您通过其参数传递的GUID结构是它正在使用的GUID结构,那么您正在查询过滤器。
那么使用哪一个取决于你想做什么,如果它使用特定的GUID或尝试从过滤器获取时间格式的GUID,则查询过滤器。
答案 1 :(得分:1)
区别在于right there mentioned in the documetnation:
此方法比IMediaSeeking :: GetTimeFormat方法稍微有效,因为它不需要复制GUID。
请记住,这个界面即将庆祝其成立20周年,当时一些不必要的GUID副本产生了一些不同......界面还有其他方法相互重复,也许它不是最好的设计在第一位然后它必须存在以保持兼容性。